blog.Ring.idv.tw

Loading XML for AS 3.0

Loading XML for AS 3.0

以往要載入一個外部的XML檔案的話,我們可以簡化成下列的作法:

Loading XML

var externalXML:XML = new XML();
externalXML.onLoad = function(success)
{
    trace(externalXML);
};
externalXML.load("myxml.xml");

從載入方式到Callback Event的處理,完全交由「XML」類別來孤軍奮戰~

然而ActionScript 3.0,它終於多了幾位幫手來協助它了~ 不僅減輕它的負擔,也能夠各司其職~

Loading XML for AS 3.0

var externalXML:XML;
var loader:URLLoader = new URLLoader();
var request:URLRequest = new URLRequest("myxml.xml");
loader.load(request);
loader.addEventListener(Event.COMPLETE, onComplete);
loader.addEventListener(ProgressEvent.PROGRESS, onProgress);

function onComplete(event:Event):void
{
	externalXML = new XML(event.target.data);
	trace(externalXML.toXMLString());
}
function onProgress(event:ProgressEvent):void
{	
	trace(event.bytesLoaded);
	trace(event.bytesTotal);
}

我們可以發現載入方式完全交由「URLLoader」去處理,Callback Event也委託「IEventDispatcher」來負責,最重要的是~ 這樣的作法才符合 High Cohesion and Low Coupling,大大地增強其彈性~

而且ActionScript 3.0是以ECMAScript for XML (E4X) specification (ECMA-357 edition 2)為基礎來處理XML資料,不僅更容易使用也更簡化操作~ 順便看一下例子:

var myXML:XML =
<order>
	<item id='1'>
		<menuName>burger</menuName>
		<price>3.95</price>
	</item>
	<item id='2'>
		<menuName>fries</menuName>
		<price>1.45</price>
	</item>
</order>

trace(myXML.item[0].menuName); // Output: burger
trace(myXML.item.(@id==2).menuName); // Output: fries
trace(myXML.item.(menuName=="burger").price); // Output: 3.95

果然夠簡化與方便!!!

2007-05-09 22:18:01

Leave a Comment

Copyright (C) Ching-Shen Chen. All rights reserved.

::: 搜尋 :::

::: 分類 :::

::: Ads :::

::: 最新文章 :::

::: 最新回應 :::

::: 訂閱 :::

Atom feed
Atom Comment