﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-咖啡没伴侣-随笔分类-Flex</title><link>http://www.blogjava.net/oathleo/category/30440.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 11 Apr 2008 04:40:43 GMT</lastBuildDate><pubDate>Fri, 11 Apr 2008 04:40:43 GMT</pubDate><ttl>60</ttl><item><title>Flex与JavaScript的交互：调用JavaScipt或者被JavaScript调用 </title><link>http://www.blogjava.net/oathleo/archive/2008/04/11/192140.html</link><dc:creator>LeoOath</dc:creator><author>LeoOath</author><pubDate>Fri, 11 Apr 2008 04:04:00 GMT</pubDate><guid>http://www.blogjava.net/oathleo/archive/2008/04/11/192140.html</guid><wfw:comment>http://www.blogjava.net/oathleo/comments/192140.html</wfw:comment><comments>http://www.blogjava.net/oathleo/archive/2008/04/11/192140.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oathleo/comments/commentRss/192140.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oathleo/services/trackbacks/192140.html</trackback:ping><description><![CDATA[一、在JavaScript中调用Flex方法<br />在Flex中可以用ExternalInterface来调用Flex的方法，途径是<br /><font color="#ff0000">1.通过在Flex应用可调用方法列表中添加指定的公用方法。</font><font color="#ff0000">在Flex应用中通过调用addCallback()可以把一个方法添加到此列表中。addCallback将一个ActionScript的方法注册为一个JavaScript和VBScript可以调用的方法。<br /></font>addCallback()函数的定义如下：<br />addCallback(function_name:String, closure:Function):void<br />function_name参数就是在Html页面中脚本调用的方法名。closure参数是要调用的本地方法，这个参数可以是一个方法也可以是对象实例。<br /><br />举个例子：<br />&lt;mx:Script&gt;<br />    import flash.external.*;<br />    public function myFunc():Number {<br />        return 42;<br />    }<br />    public function initApp():void {<br />        ExternalInterface.addCallback("myFlexFunction",myFunc);<br />    }<br />&lt;/mx:Script&gt;<br /><br />2.<font color="#ff0000">那么在Html页面中，先获得SWF对象的引用，也就是用&lt;object .../&gt;声明的Swf的Id属性</font>，比如说是MyFlexApp。然后就可以用以下方式调用Flex中的方法。<br />&lt;SCRIPT language='JavaScript' charset='utf-8'&gt;<br />    function callApp() {<br /><font color="#ff0000">        var x = MyFlexApp.myFlexFunction();</font><br />        alert(x);<br />    }<br />&lt;/SCRIPT&gt;<br />&lt;button onclick="callApp()"&gt;Call App&lt;/button&gt;<br /><br /><br /><br />二、在Flex中调用 JavaScript<br />你可以调用Html页面中的JavaScript，通过与JavaScript的交互，可以改变Style，调用远程方法。还可以将数据传递给Html页面，处理后再返回给Flex，完成这样的功能主要有两种方法：ExternalInterface()和navigateToUrl()。<br />在Flex中调用JavaScript最简单的方法是使用ExternalInterface()，可以使用此API调用任意JavaScript，传递参数，获得返回值，如果调用失败，Flex抛出一个异常。<br />ExternalInterface封装了对浏览器支持的检查，可以用available属性来查看。<br />ExternalInterface的使用非常简单，语法如下：<br />flash.external.ExternalInterface.call(function_name: String[, arg1, ...]):Object;<br />参数function_name是要调用的JavaScript的函数名，后面的参数是JavaScript需要的参数。<br />举个例子说明如何调用JavaScript函数<br />Flex应用中，添加如下方法：<br />&lt;mx:Script&gt;<br />&lt;?xml version="1.0" encoding="iso-8859-1"?&gt;<br />&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"&gt;<br />    &lt;mx:Script&gt;<br />        import flash.external.*;<br />    <br />        public function callWrapper():void {<br />            var f:String = "changeDocumentTitle";<br />            var m:String = ExternalInterface.call(f,"New Title");<br />            trace(m); <br />        }<br />    &lt;/mx:Script&gt;<br />    &lt;mx:Button label="Change Document Title" click="callWrapper()"/&gt;<br />&lt;/mx:Application&gt;<br />Html页面中有如下函数定义：<br />&lt;SCRIPT LANGUAGE="JavaScript"&gt;<br />    function changeDocumentTitle(a) {<br />        window.document.title=a;<br />        return "successful";<br />    }<br />&lt;/SCRIPT&gt;<img src ="http://www.blogjava.net/oathleo/aggbug/192140.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oathleo/" target="_blank">LeoOath</a> 2008-04-11 12:04 <a href="http://www.blogjava.net/oathleo/archive/2008/04/11/192140.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ActionScript 中XML处理方法</title><link>http://www.blogjava.net/oathleo/archive/2008/04/08/191484.html</link><dc:creator>LeoOath</dc:creator><author>LeoOath</author><pubDate>Tue, 08 Apr 2008 06:41:00 GMT</pubDate><guid>http://www.blogjava.net/oathleo/archive/2008/04/08/191484.html</guid><wfw:comment>http://www.blogjava.net/oathleo/comments/191484.html</wfw:comment><comments>http://www.blogjava.net/oathleo/archive/2008/04/08/191484.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oathleo/comments/commentRss/191484.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oathleo/services/trackbacks/191484.html</trackback:ping><description><![CDATA[
		<p class="zh_p">今天我们来看看AS3中新的XML处理方法：<a href="http://www.ecma-international.org/publications/standards/Ecma-357.htm" target="_blank" hreflang="en">E4X</a>，直到现在，ECMA脚本语言规范（ECMA-262）－－AscriptScript 3.0的核心基础，并没有提供任何的XML数据处理类或方法。AcriontScript之前的版本（从Flash 5中的ActionScript开始）有一些处理XML数据的类和方法，但是它们并不是基于ECMAScript标准的。</p>
		<p class="zh_p">新的ECMA脚本语言规范第4版草稿中定义了一系列新的处理XML数据的类和方法。这些类和方法的集合并命名为E4X（"ECMAScript for XML"），ActionScript 3.0包括如下新的E4X类： <a href="http://livedocs.macromedia.com/labs/1/flex/langref/XML.html" target="_blank">XML</a>、<a href="http://livedocs.macromedia.com/labs/1/flex/langref/XMLList.html" target="_blank">XMLList</a>、 <a href="http://livedocs.macromedia.com/labs/1/flex/langref/QName.html" target="_blank">QName</a>和<a href="http://livedocs.macromedia.com/labs/1/flex/langref/Namespace.html" target="_blank">Namespace</a>。</p>
		<p class="zh_p">E4X类的方法、属性和操作的开法基于以下的目标：</p>
		<ul>
				<li>简单－－E4X尽可能的使得处理XML数据的代码容易编写并且易于理解。 
</li>
				<li>一致性－－E4X的方法于Actionscript的其它部分协调一致。 
</li>
				<li>友好－－实用非常好理解的操作符处理XML数据，如点号（.）。 </li>
		</ul>
		<p class="zh_p">注意：为避免与E4X中的新的XML类冲突，原来ActionScript 2.0中的XML类在ActionScript 3.0被重命名为<a href="http://livedocs.macromedia.com/labs/1/flex/langref/flash/xml/XMLDocument.html" target="_blank">XMLDocument</a>，为了向前兼容，在ActionScript 3.0中遗留下来的类－－XML、XMLNode、XMLParser和XMLTag--被包含进了<a href="http://livedocs.macromedia.com/labs/1/flex/langref/flash/xml/package-detail.html" target="_blank">flash.xml</a>包中。新的E4X类是核心类－－使用它们不需要import任何包。</p>
		<p class="zh_p">
				<strong>初始化XML对象</strong>
		</p>
		<p class="zh_p">XML对象可以代表一个XML元素、属性、注释、处理指令或文本元素。在ActionScript 3.0中我们可以直接将XML数据赋值给变量：</p>
		<p>
		</p>
		<pre>var myXML:XML =
   &lt;order&gt;
       &lt;item id='1'&gt;
           &lt;menuName&gt;burger&lt;/menuName&gt;
           &lt;price&gt;3.95&lt;/price&gt;
       &lt;/item&gt;
       &lt;item id='2'&gt;
           &lt;menuName&gt;fries&lt;/menuName&gt;
           &lt;price&gt;1.45&lt;/price&gt;
       &lt;/item&gt;
   &lt;/order&gt;</pre>
		<p class="zh_p">你也可以使用new 构造器来从XML数据文本创建一个XML对象实例：</p>
		<p>
		</p>
		<pre>var myXML:XML = new XML("&lt;order&gt;&lt;item id='1'&gt;&lt;menuName&gt;burger&lt;/menuName&gt;&lt;price&gt;3.95&lt;/price&gt;&lt;/item&gt;&lt;/order&gt;")
</pre>
		<p>
		</p>
		<p class="zh_p">如果XML数据不是格式完好的（如少了结束标签），那么将会出现运行时错误。</p>
		<p class="zh_p">注意，你也可以将变量实例传入XML数据中：</p>
		<p>
		</p>
		<pre>var tagname:String = "item";
var attributename:String = "id";
var attributevalue:String = 5;
var content:String = "Chicken";
var x:XML = &lt;{tagname} {attributename}={attributevalue}&gt;{content}&lt;/{tagname}&gt;;
trace (x.toXMLString())
   // Output: &lt;item id="5"&gt;Chicken&lt;/item&gt;
</pre>
		<p>
		</p>
		<p class="zh_p">通常，我们的应用是从外部源导入XML数据，如web service或RSS feed,以下是一个从远程URL导入XML数据的例子：</p>
		<p>
		</p>
		<pre>var myXML:XML = new XML();
var XML_URL:String = "http://www.example.com/Sample3.xml";
//创建URLRequest。
var myXMLURL:URLRequest = new URLRequest(XML_URL);
//使用URLLoader导入数据。
var myLoader:URLLoader = new URLLoader(myXMLURL);
//添加事件监听器，以在XML数据导入完成后处理XML数据。
myLoader.addEventListener("complete", xmlLoaded);
//导入完成后，创建使用导入的数据创建XML对象
function xmlLoaded(evtObj:Event) {
       var myXML:XML = XML(myLoader.data);
       trace("Data loaded.");

}
</pre>
		<p>
		</p>
		<p class="zh_p">为了演示代码的清晰性，本文中的大部份示例都第1种直接使用文本的方法创建XML对象。</p>
		<p class="zh_p">E4X包含一些直观的方法XML数据的操作符（如.和@:用于访问属性）：</p>
		<p>
		</p>
		<pre>//获取第1个item的menuName值
trace(myXML.item[0].menuName); // Output: burger
//获取第1个item的id属性值
trace(myXML.item[0].@id);//Output:1
//获取id属性为2的item的menuName值
trace(myXML.item.(@id==2).menuName); // Output: fries
//获取menuName为burger的item的price值
trace(myXML.item.(menuName=="burger").price); // Output: 3.95<p></p></pre>
		<p>
		</p>
		<p class="zh_p">你也可以使用appendChild()方法给XML添加新的子节点：</p>
		<p>
		</p>
		<pre>var newItem:XML =
   &lt;item id="3"&gt;
       &lt;menuName&gt;medium cola&lt;/menuName&gt;
       &lt;price&gt;1.25&lt;/price&gt;
   &lt;/item&gt;

myXML.appendChild(newItem);
</pre>
		<p>
		</p>
		<p class="zh_p">当然你也可以使用@和.操作符来更新数据:</p>
		<p>
		</p>
		<pre>myXML.item[0].menuName="regular burger";
myXML.item[1].menuName="small fries";
myXML.item[2].menuName="medium cola";

myXML.item.(menuName=="regular burger").@quantity = "2";
myXML.item.(menuName=="small fries").@quantity = "2";
myXML.item.(menuName=="medium cola").@quantity = "2";
</pre>
		<p>
		</p>
		<p class="zh_p">
				<strong>访问XML数据</strong>
		</p>
		<p class="zh_p">你可以使用.（点号）和..操作符访问XML对象的子节点，使用@操作符访问某一节点的属性。考虑以下XML对象： </p>
		<p>
		</p>
		<pre> 
var x:XML =
      &lt;book ISBN="0942407296"&gt;
           &lt;title&gt;Baking Extravagant Pastries with Kumquats&lt;/title&gt;
           &lt;author&gt;
               &lt;lastName&gt;Contino&lt;/lastName&gt;
               &lt;firstName&gt;Chuck&lt;/firstName&gt;
           &lt;/author&gt;
           &lt;pageCount&gt;238&lt;/pageCount&gt;
       &lt;/book&gt;
       &lt;book ISBN="0865436401"&gt;
           &lt;title&gt;Emu Care and Breeding&lt;/title&gt;
           &lt;editor&gt;
               &lt;lastName&gt;Case&lt;/lastName&gt;
               &lt;firstName&gt;Justin&lt;/firstName&gt;
           &lt;/editor&gt;
           &lt;pageCount&gt;115&lt;/pageCount&gt;
       &lt;/book&gt;
   &lt;/order&gt;
</pre>
		<p>
		</p>
		<p class="zh_p">对象x.book表示一个包含所有名称为book的子节点的XMLList对象，该XMLList包含两个XML对象（两个book节点）。</p>
		<p class="zh_p">对象x..lastName表示一个包含XML树结构下部所有的lastName属性的XMLList对象，该XMList包含两个XML对象（两个LastName属性）。</p>
		<p class="zh_p">对象x.book.editor.lastName表示一个包含所有x对象的所有名称为book的子节点的所有名称为editor的子节点的所有lastName节点的XMLList对象，该XMLList只包含一个XML对象(值为"Case"的lastName属性)。</p>
		<p class="zh_p">
				<strong>访问父节点和子节点</strong>
		</p>
		<p class="zh_p">parent()方法返回XML对象的父节点。</p>
		<p class="zh_p">你可以使用子节点列表的顺序索引值来访问特定的子节点，例如，假定某一XML对象x有两个名称为book的子节点，你可以如下访问它们：</p>
		<p>
		</p>
		<pre>//第1个book节点
x.book[0]
//第2个book节点
x.book[1]
</pre>
		<p>
		</p>
		<p class="zh_p">要访问孙子节点，我们可以如下直接使用儿子和孙子节点的索引值来访问：</p>
		<p class="zh_p">
		</p>
		<pre>x.book[0].title[0]</pre>
		<p>
		</p>
		<p class="zh_p">不过如果x.book[0]只有一个名称为title的子节点的话，那么可以省略索引：</p>
		<p class="zh_p">
		</p>
		<pre>x.book[0].title</pre>
		<p>
		</p>
		<p class="zh_p">类似的，如果x对象只有一个book子节点，并且该book节点的子节点对象只有一个title对象，那么两个索引值都可以省略：</p>
		<p class="zh_p">x.book.title</p>
		<p class="zh_p">注意，你也可以使用child()方法，直接使用名称访问特定的子节点：</p>
		<p>
		</p>
		<pre>var x.XML =
       &lt;order&gt;
           &lt;book&gt;
               &lt;title&gt;Dictionary&lt;/title&gt;
           &lt;/book&gt;
       &lt;/order&gt;

var childName:String = "book";
trace (x.child(childName).title) // Output: Dictionary
</pre>
		<p>
		</p>
		<p class="zh_p">
				<strong>访问属性</strong>
		</p>
		<p class="zh_p">我们使用使用@操作符访问XMLNode属性：</p>
		<p>
		</p>
		<pre>var myXML:XML =
   &lt;order&gt;
       &lt;item id='1'&gt;
           &lt;menuName&gt;burger&lt;/menuName&gt;
           &lt;price&gt;3.95&lt;/price&gt;
       &lt;/item&gt;
       &lt;item id='2'&gt;
           &lt;menuName&gt;fries&lt;/menuName&gt;
           &lt;price&gt;1.45&lt;/price&gt;
       &lt;/item&gt;
   &lt;/order&gt;

//获取第1个item的id属性值
trace(myXML.item[0].@id);//Output:1
</pre>
		<p>
		</p>
		<p class="zh_p">
				<strong>使用属性或元素值过滤XML数据</strong>
		</p>
		<p class="zh_p">我们可以使用特定的元素名称和属性值来定位到特定的元素考虑以下XML对象：</p>
		<p>
		</p>
		<pre>var x:XML =
   &lt;employeeList&gt;
       &lt;employee id="347"&gt;
           &lt;lastName&gt;Zmed&lt;/lastName&gt;
           &lt;firstName&gt;Sue&lt;/firstName&gt;
           &lt;position&gt;Data analyst&lt;/position&gt;
       &lt;/employee&gt;
       &lt;employee id="348"&gt;
           &lt;lastName&gt;McGee&lt;/lastName&gt;
           &lt;firstName&gt;Chuck&lt;/firstName&gt;
           &lt;position&gt;Jr. data analyst&lt;/position&gt;
       &lt;/employee&gt;
   &lt;/employeeList&gt;

</pre>
		<p>
		</p>
		<p class="zh_p">以下是正确的访问方法：</p>
		<p>
		</p>
		<pre>//lastName为“McGee”的employee对象，第1个employee节点
x.employee.(lastName == "McGee") // The first employee node
//lastName为“McGee”的employee对象的firstName节点，第1个employee节点的节点
x.employee.(lastName == "McGee").firstName // The firstName property of that node
//lastName为“McGee”的id属性
x.employee.(lastName == "McGee").@id // The value of the id attribute
//所有id属性值为347的employee对象列表
x.employee.(@id == 347)
//id属性值为347的employee对象的lastName子节点
x.employee.(@id == 347).lastName
//所有id属性值大于347的employee对象列表
x.employee.(@id &gt; 300) // An XML list with both employee properties
//所有position子节点值包含“analyst”的employee对象列表
x.employee.(position.toString().search("analyst") &gt; -1)
</pre>
		<p>
		</p>
		<p class="zh_p">
				<strong>使用for ... in和for each ... in 语句</strong>
		</p>
		<p class="zh_p">ActionScript 3.0 包括了一个新用来遍历XMLList对象的的for ... in语句和for each ... in语句。例如，考虑以下XML对象，myXML和myXML..item XMLList对象（包含两个item XML对象节点的XML列表）：</p>
		<p>
		</p>
		<pre>var myXML:XML =
   &lt;order&gt;
       &lt;item id='1' quantity='2'&gt;
           &lt;menuName&gt;burger&lt;/menuName&gt;
           &lt;price&gt;3.95&lt;/price&gt;
       &lt;/item&gt;
       &lt;item id='2' quantity='2'&gt;
           &lt;menuName&gt;fries&lt;/menuName&gt;
           &lt;price&gt;1.45&lt;/price&gt;
       &lt;/item&gt;
   &lt;/order&gt;
</pre>
		<p>
		</p>
		<p class="zh_p">for ... in语句可以让我们遍历XMLList的所有属性名称,实际上就是个节点的索引值：</p>
		<p>
		</p>
		<pre>var total:Number = 0;
for (var pname:String in myXML..item)
{
    total += Number(myXML.item.@quantity[pname]) * Number(myXML.item.price[pname]);
}
</pre>
		<p>
		</p>
		<p class="zh_p">for each ... in语句遍历XMLList的所有节点：</p>
		<p>
		</p>
		<pre>var total2:Number = 0;
for each (var item:XML in myXML..item)
{
  total2 += Number(item@quantity) * Number(item.price);
}
</pre>
		<p>
		</p>
		<p class="zh_p">
				<strong>使用with语句</strong>
		</p>
		<p class="zh_p">我们可以使用with语句，来指明后续的属性和节点值都是基于某一XML对象，前面的for each ... in示例代码，使用with语句的代码如下：</p>
		<p>
		</p>
		<pre>var total:Number = 0;
for each (var item in myXML..item)
{
   with (item)
    {
         //{内的属性和节点对象都是基于item XML对象的，所有不需要使用item.来访问。
         total += Number(@quantity) * Number(price);
     }

}
trace(total);
</pre>
		<p>
		</p>
		<p class="zh_p">
				<strong>修改XML对象</strong>
		</p>
		<p class="zh_p">我们可以使用prependChild()方法或者appendChild()方法在XML对象的子节点列表的前面或者最后面添加节点：</p>
		<p>
		</p>
		<pre>var x1:XML = &lt;p&gt;Paragraph 1&lt;/p&gt;
var x2:XML = &lt;p&gt;Paragraph 2&lt;/p&gt;
var x:XML = &lt;body&gt;&lt;/body&gt;
x = x.appendChild(x1);
x = x.appendChild(x2);
x = x.prependChild(&lt;p&gt;Paragraph 0&lt;/p&gt;);

// x == &lt;body&gt;&lt;p&gt;Paragraph 0&lt;/p&gt;&lt;p&gt;Paragraph 1&lt;/p&gt;&lt;p&gt;Paragraph 2&lt;/p&gt;&lt;/body&gt;
</pre>
		<p>
		</p>
		<p class="zh_p">使用insertChildBefore()方法或者insertChildAfter()方法在特定的节点前面活着回后面添加节点：</p>
		<p>
		</p>
		<pre>var x:XML =
   &lt;body&gt;
       &lt;p&gt;Paragraph 1&lt;/p&gt; 
       &lt;p&gt;Paragraph 2&lt;/p&gt;
   &lt;/body&gt;

var newNode:XML = &lt;p&gt;Paragraph 1.5&lt;/p&gt;
x = x.insertChildAfter(x.p[0], newNode)
x = x.insertChildBefore(x.p[2], &lt;p&gt;Paragraph 1.75&lt;/p&gt;)
</pre>
		<p>
		</p>
		<p class="zh_p">注意，我们也可以在构造XML对象的时候使用大括号（{和}）来引用变量：</p>
		<p>
		</p>
		<pre>var ids:Array = [121, 122, 123];
var names:Array = [["Murphy","Pat"],["Thibaut","Jean"], ["Smith","Vijay"]]
var x:XML = new XML("&lt;employeeList&gt;&lt;/employeeList&gt;");

for (var i:int = 0; i &lt; 3; i++) {
          var newnode:XML = new XML(); 
           newnode =
               &lt;employee id={ids[i]}&gt;
                   &lt;last&gt;{names[i][0]}&lt;/last&gt;
                   &lt;first&gt;{names[i][1]}&lt;/first&gt;
               &lt;/employee&gt;

           x = x.appendChild(newnode)

}
</pre>
		<p>
		</p>
		<p class="zh_p">我们也可以使用=操作符来给XML对象节点赋值：</p>
		<p>
		</p>
		<pre>var x:XML =
   &lt;employee&gt;
       &lt;lastname&gt;Smith&lt;/lastname&gt;
   &lt;/employee&gt;

x.firstname = "Jean";
x.@id = "239";
</pre>
		<p>
		</p>
		<p class="zh_p">以上代码将把XML对象X设置成如下：</p>
		<p>
		</p>
		<pre>&lt;employee id="239"&gt;
   &lt;lastname&gt;Smith&lt;/lastname&gt;
   &lt;firstname&gt;Jean&lt;/firstname&gt;
   &lt;/employee&gt;
</pre>
		<p>
		</p>
		<p class="zh_p">我们也可以使用+和+=操作符来连结XMLList：</p>
		<p>
		</p>
		<pre>var x1:XML = &lt;a&gt;test1&lt;/a&gt;
var x2:XML = &lt;b&gt;test2&lt;/b&gt;
var xList:XMLList = x1 + x2;
xList += &lt;c&gt;test3&lt;/c&gt;
</pre>
		<p>
		</p>
		<p class="zh_p">
				<strong>
						<em>删除XML对象</em>
				</strong>
		</p>
		<p class="zh_p">E4X规范中定义有delete和deleteByIndex方法用来删除特定的XML节点，但是在当前版本的ActionScript 3.0实现中，并没有实现这两个方法，所有我们不能直接使用这两个方法，不过我们可以使用遍历XML树，剔除特定的节点，重新构造新的XML对象的方法来删除某一特定节点，以下我们将删除employee的lastname子节点：</p>
		<p>
		</p>
		<pre>private function deleteByIndex(xmlNode:XML,index:Number):XML{
    var newStr:String='';
    newStr+='&lt;'+xmlNode.localName();
    for each (var att:XML in xmlNode.attributes()){
        newStr+=' '+att.localName()+'="'+att.toString()+'"';
    }
    newStr+='&gt;';
    var i:Number=0;
    for each(var node:XML in xmlNode.children()){
        if(i!=index)
            newStr+=node.toXMLString();
        i++;
    }
    newStr+='&lt;/'+xmlNode.localName()+'/&gt;';
    return new XML(newStr);
}

var myXML:XML=
   &lt;employee id="239"&gt;
           &lt;lastname&gt;Smith&lt;/lastname&gt;
           &lt;firstname&gt;Jean&lt;/firstname&gt;
           &lt;address&gt;
           	&lt;city&gt;shangrao&lt;/city&gt;
           	&lt;load&gt;daihu&lt;/load&gt;
           	&lt;no&gt;5&lt;/no&gt;
           &lt;/address&gt;
       &lt;/employee&gt;

myXML=deleteByIndex(myXML,0);
</pre>
		<p>
		</p>
		<p class="zh_p">以上的deleteByIndex函数有两个参数，第1的参数是被删除节点的父节点，第2的参数是被删除节点的在父节点的子节点列表中索引值。先遍历父节点的索引属性，然后遍历其所有的子节点，跳过我们要删除的节点，然后将它们组合成新的XML对象返回。</p>
		<p class="zh_p">如果XML对象非常复杂，数据量必较大的话，以上删除节点的实现方法效率是非常好低，所有正确的选择还是使用E4X定义的删除方法，不过这个功能要等到ActionScript 3.0的下一个测试版本才能够实现。</p>
		<p class="zh_p">
				<strong>XML类型转换</strong>
		</p>
		<p class="zh_p">我们可以将XML对象和XMLList对象转换为字符串，同样的，我们也可以将字符串转换为XML对象和XMLList对象。顺便，请记住所有的XML属性值、名称和文本值都是字符串。</p>
		<p class="zh_p">
				<strong>转换XML和XMLList对象为字符串</strong>
		</p>
		<p class="zh_p">XML对象和XMLList对象都有有两个成员方法：toString()和toXMLString()方法。toXMLString()方法返回包含所有标签、属性、命名空间声明和XML对象内容的字符串，对与复杂的XML对象（包含有子元素），toString()方法的效果和toXMLString()方法的效果一样，但是对与简单的XML对象（只包含一个文本元素），toString()方法只返回元素的文本内容：</p>
		<p>
		</p>
		<pre>var myXML:XML =
  &lt;order&gt;
       &lt;item id='1' quantity='2'&gt;
           &lt;menuName&gt;burger&lt;/menuName&gt;
           &lt;price&gt;3.95&lt;/price&gt;
       &lt;/item&gt;
   &lt;order&gt;

trace(myXML.item<a href="http://blog.eshangrao.com/index.php/2006/01/04/0">0</a>.menuName.toXMLString())
    // Output: &lt;menuName&gt;burger&lt;/menuName&gt;
trace(myXML.item<a href="http://blog.eshangrao.com/index.php/2006/01/04/0">0</a>.menuName.toString())
    // Output: burger
</pre>
		<p>
		</p>
		<p class="zh_p">将文本字符串转换为XML对象</p>
		<p class="zh_p">我们可以使用new构造方法从字符串创建一个XML对象</p>
		<p class="zh_p">
		</p>
		<pre>var x:XML = new XML('&lt;a&gt;test&lt;b&gt;');</pre>
		<p>
		</p>
		<p class="zh_p">但是如果我们试图将一个非XML或者结构不完整的字符串转换为XML对象，那么将会报运行时错误：</p>
		<p class="zh_p">
		</p>
		<pre>var x:XML = new XML('&lt;a&gt;test'); // Throws an error</pre>
		<p>
		</p>
		<p class="zh_p">
				<strong>从Internet读取Rss Fead数据</strong>
		</p>
		<p class="zh_p">以下代码将读取本站的rss fead数据：</p>
		<p>
		</p>
		<pre>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;mx:Application xmlns:mx="http://www.macromedia.com/2005/mxml" xmlns="*" creationComplete="doInit()"&gt;
  &lt;mx:Script&gt;
  &lt;![CDATA[
    private function doInit():Void{
      getRssData("http://blog.eshangrao.com/rss.php",ta_view);
    }

    public function getRssData(url:String, outTxt:TextArea):Void
    {
      private var myXMLURL:URLRequest = new URLRequest(url);
      private var myLoader:URLLoader = new URLLoader(myXMLURL);
      myLoader.addEventListener("complete", xmlLoaded);
    }
    private function xmlLoaded(event:Event):Void{
      ta_view.text='load ok';
      var myLoader:URLLoader = URLLoader(event.target);
      XML.ignoreProcessingInstructions=false;
      var myXML:XML =new XML(myLoader.data);
      private var outStr:String = "";
      for each (var item:XML in myXML.children()) {
        if(item.localName()=='item'){
          outStr += "&lt;p&gt;&lt;b&gt;" + item.children()<a href="http://blog.eshangrao.com/index.php/2006/01/04/0">0</a>.toString() + ":&lt;/b&gt;&lt;/p&gt;&lt;p&gt;";
          outStr += item.children()<a href="http://blog.eshangrao.com/index.php/2006/01/04/6">6</a>.toString() ;
          outStr += " &lt;br/&gt;&lt;a href='" + item.children()<a href="http://blog.eshangrao.com/index.php/2006/01/04/1">1</a>.toString();
          outStr += "'&gt;&lt;font color='#008000'&gt;More...&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;";
        }
      }
      //ta_view.text=myXML.toString();
      ta_view.htmlText = outStr;
    }
  ]]&gt;
  &lt;/mx:Script&gt;
  &lt;mx:Canvas width="100%" height="100%"&gt;
    &lt;mx:TextArea id="ta_view"&gt;
      &lt;mx:layoutConstraints&gt;
        &lt;mx:EdgeAnchor bottom="10" top="10" left="10" right="10"/&gt;
      &lt;/mx:layoutConstraints&gt;
    &lt;/mx:TextArea&gt;
  &lt;/mx:Canvas&gt;
&lt;/mx:Application&gt;
</pre>
		<p>
		</p>
		<p class="zh_p">
				<a href="http://labs.eshangrao.com/flex/2/RssReaderExample.html" target="_blank">运行示例</a>(FlashPlayer8.5 required)</p>
		<p class="zh_p">注意，我们没有直接使用节点名称访问节点（不知道为什么，如果使用item.title访问title节点的话，返回是空的，可能跟我的RSS XML的中rdf指令有关，如果有朋友知道解决的办法，请告诉我），而是使用了children()方法，该方法返回某一XML对象的所有子节点对象，</p>
<img src ="http://www.blogjava.net/oathleo/aggbug/191484.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oathleo/" target="_blank">LeoOath</a> 2008-04-08 14:41 <a href="http://www.blogjava.net/oathleo/archive/2008/04/08/191484.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex getClassName</title><link>http://www.blogjava.net/oathleo/archive/2008/04/08/191470.html</link><dc:creator>LeoOath</dc:creator><author>LeoOath</author><pubDate>Tue, 08 Apr 2008 05:55:00 GMT</pubDate><guid>http://www.blogjava.net/oathleo/archive/2008/04/08/191470.html</guid><wfw:comment>http://www.blogjava.net/oathleo/comments/191470.html</wfw:comment><comments>http://www.blogjava.net/oathleo/archive/2008/04/08/191470.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oathleo/comments/commentRss/191470.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oathleo/services/trackbacks/191470.html</trackback:ping><description><![CDATA[flash.utils.getQualifiedClassName(value:Object):String<br /><br />Flex获得className<img src ="http://www.blogjava.net/oathleo/aggbug/191470.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oathleo/" target="_blank">LeoOath</a> 2008-04-08 13:55 <a href="http://www.blogjava.net/oathleo/archive/2008/04/08/191470.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex 画2D</title><link>http://www.blogjava.net/oathleo/archive/2008/03/28/189192.html</link><dc:creator>LeoOath</dc:creator><author>LeoOath</author><pubDate>Fri, 28 Mar 2008 02:00:00 GMT</pubDate><guid>http://www.blogjava.net/oathleo/archive/2008/03/28/189192.html</guid><wfw:comment>http://www.blogjava.net/oathleo/comments/189192.html</wfw:comment><comments>http://www.blogjava.net/oathleo/archive/2008/03/28/189192.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oathleo/comments/commentRss/189192.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oathleo/services/trackbacks/189192.html</trackback:ping><description><![CDATA[&lt;?xml version="1.0"?&gt;<br />&lt;!-- usingas/AddingChildrenAsUIComponents.mxml --&gt;<br />&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"&gt;<br />    &lt;mx:Script&gt;&lt;![CDATA[<br />        import flash.display.Sprite;<br />        import mx.core.UIComponent;<br /><br />        private var xLoc:int = 20;<br />        private var yLoc:int = 20;<br />        private var circleColor:Number = 0xFFCC00;<br /><br />        private function addChildToPanel():void {<br /><br />            <font color="#ff0000">var circle:Sprite = new Sprite();<br /></font>            circle.graphics.beginFill(circleColor);<br />            circle.graphics.drawCircle(xLoc, yLoc, 15);<br /><br />            <font color="#ff0000">var c:UIComponent = new UIComponent();<br /></font>            c.addChild(circle);<br />            panel1.addChild(c);<br />            <br />            xLoc = xLoc + 5;<br />            yLoc = yLoc + 1;<br />            circleColor = circleColor + 20;<br />        }<br />    ]]&gt;&lt;/mx:Script&gt;<br /><br />    &lt;mx:Panel id="panel1" height="250" width="300" verticalScrollPolicy="off"/&gt;<br /><br />    &lt;mx:Button id="myButton" label="Click Me" click="addChildToPanel();"/&gt;<br />    <br />&lt;/mx:Application&gt;<img src ="http://www.blogjava.net/oathleo/aggbug/189192.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oathleo/" target="_blank">LeoOath</a> 2008-03-28 10:00 <a href="http://www.blogjava.net/oathleo/archive/2008/03/28/189192.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex 简单 绑定</title><link>http://www.blogjava.net/oathleo/archive/2008/03/28/189191.html</link><dc:creator>LeoOath</dc:creator><author>LeoOath</author><pubDate>Fri, 28 Mar 2008 01:59:00 GMT</pubDate><guid>http://www.blogjava.net/oathleo/archive/2008/03/28/189191.html</guid><wfw:comment>http://www.blogjava.net/oathleo/comments/189191.html</wfw:comment><comments>http://www.blogjava.net/oathleo/archive/2008/03/28/189191.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oathleo/comments/commentRss/189191.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oathleo/services/trackbacks/189191.html</trackback:ping><description><![CDATA[绑定的作用在于，将Flex中的变量、类、方法等与组件的值进行绑定。例如，一个变量如果被绑定后，那么引用该变量的组件的相关属性也会发生改变。我们用一个实例来表示<br /><br />&lt;?xml version="1.0" encoding="utf-8"?&gt;<br />&lt;mx:Application xmlns:mx=http://www.adobe.com/2006/mxml layout="absolute" xmlns:components="components.*"<br />      &gt;<br />      &lt;mx:Script&gt;<br />           &lt;![CDATA[<br />                 import mx.controls.Alert;            <br />                 <font color="#ff0000">[Bindable]<br /></font>                 private var isSelected:Boolean;<br />                 private function clickHandler(e:MouseEvent){<br />                 //Alert.show(e.currentTarget.toString());<br />                 isSelected=isSelected?false:true; //这句话的意思是如果isSelected为true，改变它为false，如果它为false，改变它为true；<br />                 Alert.show(isSelected.toString());<br />                 }<br />           ]]&gt;<br />      &lt;/mx:Script&gt;<br />      &lt;mx:Button id="testBtn"  click="clickHandler(event)" label="测试" /&gt;<br />      &lt;mx:CheckBox x="60" selected="{isSelected}" /&gt;<br />&lt;/mx:Application&gt;<br /><br />上述程序的效果就是，当点击button时，button不是直接改变checkbox的选中状态，而是改变isSelected这个变量，由于isSelected是被绑定了的，那么会关联的改变CheckBox的选中状态。<br /><br />这样看起来有些多此一举，完全可以直接改变checkbox的selected属性，我只是为了演示一下效果。如果说你的checkbox是动态构造的上百个，你不会去一个个的改变他吧。<br /><br />因此，我们多数会将一个数据源进行绑定声明，这样引用了这个数据源的控件，比如datagrid，在数据源发生了改变时，即使你不重新设置dataProvider，列表的数据也会刷新。<img src ="http://www.blogjava.net/oathleo/aggbug/189191.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oathleo/" target="_blank">LeoOath</a> 2008-03-28 09:59 <a href="http://www.blogjava.net/oathleo/archive/2008/03/28/189191.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex ColorLabel 实现</title><link>http://www.blogjava.net/oathleo/archive/2008/03/28/189190.html</link><dc:creator>LeoOath</dc:creator><author>LeoOath</author><pubDate>Fri, 28 Mar 2008 01:58:00 GMT</pubDate><guid>http://www.blogjava.net/oathleo/archive/2008/03/28/189190.html</guid><wfw:comment>http://www.blogjava.net/oathleo/comments/189190.html</wfw:comment><comments>http://www.blogjava.net/oathleo/archive/2008/03/28/189190.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oathleo/comments/commentRss/189190.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oathleo/services/trackbacks/189190.html</trackback:ping><description><![CDATA[
		<div> public class ColorLabel extends Label<br /> {<br />  private var colorValue:Number = -1;<br />  public function ColorLabel()<br />  {<br />   super();<br />  }<br />  <br />  public function setColorValue(colorValue:Number):void<br />  {<br />   this.colorValue = colorValue;<br />  }<br />  <br />  override protected function <font color="#ff0000">updateDisplayList</font>(unscaledWidth:Number, unscaledHeight:Number):void <br />     {<br />            super.updateDisplayList(unscaledWidth, unscaledHeight);<br />            if(colorValue&gt;=0){<br />             drawColor(colorValue);<br />            }<br />     }<br />  <br />  private function drawColor(colorValue:Number):void<br />     {<br />        this.graphics.beginFill(colorValue);<br />              this.graphics.drawRect(this.textField.x,this.textField.y,this.textWidth ,this.textHeight);<br />              this.graphics.endFill();<br />     }</div>
		<div> }</div>
		<div> </div>
		<div> </div>
		<div> *  &lt;p&gt;In general, components do not override the &lt;code&gt;<font color="#ff0000">validateProperties()&lt;/code&gt;, <br /> *  &lt;code&gt;validateSize()&lt;/code&gt;, or &lt;code&gt;validateDisplayList()&lt;/code&gt; methods</font>.  <br /> *  In the case of UIComponents, most components override the <br /> *  &lt;code&gt;<font color="#ff0000">commitProperties()&lt;/code&gt;, &lt;code&gt;measure()&lt;/code&gt;, or <br /> *  &lt;code&gt;updateDisplayList()&lt;/code&gt; methods</font>, which are called<br /> *  by the &lt;code&gt;validateProperties()&lt;/code&gt;, <br /> *  &lt;code&gt;validateSize()&lt;/code&gt;, or <br /> *  &lt;code&gt;validateDisplayList()&lt;/code&gt; methods, respectively.&lt;/p&gt;</div>
		<div> </div>
		<div> </div>
		<div>
				<h2> </h2>
				<h2>
						<font color="#ff0000">Implementing the commitProperties() method </font>
				</h2>
				<p>You use the <a href="http://cid-d0b2cd3cffa1d25a.spaces.live.com/langref/mx/core/UIComponent.html#commitProperties%28%29" target="_blank"><u><font color="#0066cc">commitProperties()</font></u></a>
method to coordinate modifications to component properties. Most often,
you use it with properties that affect how a component appears on the
screen. </p>
				<p>Flex schedules a call to the <samp>commitProperties()</samp> method when a call to the <samp>invalidateProperties()</samp> method occurs. The <samp>commitProperties()</samp> method executes during the next <samp>render</samp> event after a call to the <samp>invalidateProperties()</samp> method. When you use the <samp>addChild()</samp> method to add a component to a container, Flex automatically calls the <samp>invalidateProperties()</samp> method. 
</p>
				<p>Calls to the <samp>commitProperties()</samp> method occur before calls to the <samp>measure()</samp> method. This lets you set property values that the <samp>measure()</samp> method might use. 
</p>
				<h2>
						<font color="#ff0000">Implementing the measure() method </font>
				</h2>
				<p>The <a href="http://cid-d0b2cd3cffa1d25a.spaces.live.com/langref/mx/core/UIComponent.html#measure%28%29" target="_blank"><u><font color="#0066cc">measure()</font></u></a> method sets the default component size, in pixels, and optionally sets the component's default minimum size. 
</p>
				<p>Flex schedules a call to the <samp>measure()</samp> method when a call to the <samp>invalidateSize()</samp> method occurs. The <samp>measure()</samp> method executes during the next <samp>render</samp> event after a call to the <samp>invalidateSize()</samp> method. When you use the <samp>addChild()</samp> method to add a component to a container, Flex automatically calls the <samp>invalidateSize()</samp> method. 
</p>
				<h2>
						<font color="#ff0000">Implementing the updateDisplayList() method </font>
				</h2>
				<p>The <a href="http://cid-d0b2cd3cffa1d25a.spaces.live.com/langref/mx/core/UIComponent.html#updateDisplayList%28%29" target="_blank"><u><font color="#0066cc">updateDisplayList()</font></u></a>
method sizes and positions the children of your component based on all
previous property and style settings, and draws any skins or graphic
elements that the component uses. The parent container for the
component determines the size of the component itself.
</p>
				<p>A component does not appear on the screen until its <samp>updateDisplayList()</samp> method gets called. Flex schedules a call to the <samp>updateDisplayList()</samp> method when a call to the <samp>invalidateDisplayList()</samp> method occurs. The <samp>updateDisplayList()</samp> method executes during the next <samp>render</samp> event after a call to the <samp>invalidateDisplayList()</samp> method. When you use the <samp>addChild()</samp> method to add a component to a container, Flex automatically calls the <samp>invalidateDisplayList()</samp> method. </p>
		</div>
		<div>
				<font color="#ff0000">Drawing graphics in your component </font>
		</div>
		<p>Every Flex component is a subclass of the Flash <a href="http://cid-d0b2cd3cffa1d25a.spaces.live.com/langref/flash/display/Sprite.html" target="_blank"><u><font color="#0066cc">Sprite</font></u></a> class, and therefore inherits the <samp>Sprite.graphics</samp> property. The <samp>Sprite.graphics</samp> property specifies a <a href="http://cid-d0b2cd3cffa1d25a.spaces.live.com/langref/flash/display/Graphics.html" target="_blank"><u><font color="#0066cc">Graphics</font></u></a> object that you can use to add vector drawings to your component.
</p>
		<p>For example, in the <samp>updateDisplayList()</samp> method, you can use methods of the Graphics class to draw borders, rules, and other graphical elements:
</p>
		<h2> </h2>
		<p>总结：
</p>
		<p>修改属性用<font color="#ff0000">commitProperties，自己画用updateDisplayList</font></p>
<img src ="http://www.blogjava.net/oathleo/aggbug/189190.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oathleo/" target="_blank">LeoOath</a> 2008-03-28 09:58 <a href="http://www.blogjava.net/oathleo/archive/2008/03/28/189190.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex 添加自定义componemt 到 mxml</title><link>http://www.blogjava.net/oathleo/archive/2008/03/28/189189.html</link><dc:creator>LeoOath</dc:creator><author>LeoOath</author><pubDate>Fri, 28 Mar 2008 01:57:00 GMT</pubDate><guid>http://www.blogjava.net/oathleo/archive/2008/03/28/189189.html</guid><wfw:comment>http://www.blogjava.net/oathleo/comments/189189.html</wfw:comment><comments>http://www.blogjava.net/oathleo/archive/2008/03/28/189189.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oathleo/comments/commentRss/189189.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oathleo/services/trackbacks/189189.html</trackback:ping><description><![CDATA[
		<div>
				<font color="#ff3300">自定义componemt</font>
		</div>
		<div>//////</div>
		<div>package web<br />{<br /> import mx.controls.DataGrid;<br /> import mx.core.IFactory;<br /> <br /> public class WebPropertySheet extends DataGrid<br /> {<br />  public function WebPropertySheet()<br />  {<br />   super();<br />   trace("WebPropertySheet");<br />  }<br />  <br />     override public function get itemRenderer():IFactory<br />     {<br />        trace("itemRenderer");<br />                 return super.itemRenderer;<br />     }</div>
		<div> }<br /> }</div>
		<div> </div>
		<div> </div>
		<div> </div>
		<div>&lt;mx:Application xmlns:mx="<a href="http://www.adobe.com/2006/mxml">http://www.adobe.com/2006/mxml</a>" xmlns="*"   <br /><font color="#ff0000"> xmlns:twaver="web.*"</font><br /> layout="absolute"<br /> creationComplete="service.send()" viewSourceURL="srcview/index.html"&gt;<br /> <br /> &lt;mx:Script&gt;<br />  &lt;![CDATA[<br />   import mx.collections.ArrayCollection;<br />   import mx.rpc.events.ResultEvent;<br />   import com.adobe.serialization.json.JSON;<br />   <br />   import web.WebPropertySheet;<br />   <br />   private function onJSONLoad(event:ResultEvent):void<br />   {<br />    var rawData:String = String(event.result);<br />    <br />       var pattern:RegExp = /&amp;nbsp;/gi;<br />             rawData =  rawData.replace(pattern," ");<br />       <br />    var arr:Array = (JSON.decode(rawData) as Array);<br />    <br />    var dp:ArrayCollection = new ArrayCollection(arr);<br />    <br />    grid.dataProvider = dp;<br />   }<br />  ]]&gt;<br /> &lt;/mx:Script&gt;<br /> <br /> &lt;mx:HTTPService<br />  id="service"<br />  resultFormat="text"<br />  url="mashedpotato.json"<br />  result="onJSONLoad(event)" /&gt;<br /> <br /><font color="#ff0000"> &lt;twaver:WebPropertySheet id="grid" right="10" left="10" top="10" bottom="10"&gt;</font><br /><font color="#ff0000">  &lt;twaver:columns&gt;</font><br />   &lt;mx:DataGridColumn headerText="Name" dataField="name" /&gt;<br />   &lt;mx:DataGridColumn headerText="Value" dataField="value" /&gt;<br /><font color="#ff0000">  &lt;/twaver:columns&gt;</font><br /><font color="#ff0000"> &lt;/twaver:WebPropertySheet&gt;</font><br /> <br />&lt;/mx:Application&gt;</div>
		<div> </div>
		<div>注意</div>
		<div>1.在mx:Application属性里定义<font color="#ff0000"> xmlns:twaver="web.*"</font></div>
		<div>
				<font color="#000000">2.  &lt;twaver:columns&gt; columns是</font>
				<font color="#404040">DataGrid的属性。这里要在mxml 里定义，不能用mx的命名空间，得用自己的命名空间</font>
		</div>
<img src ="http://www.blogjava.net/oathleo/aggbug/189189.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oathleo/" target="_blank">LeoOath</a> 2008-03-28 09:57 <a href="http://www.blogjava.net/oathleo/archive/2008/03/28/189189.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>