讓Flash更好的利用Xml

2021-09-02 07:06:54 字數 1894 閱讀 5263

在網上許多xml的解釋資料都涉及到在flash不斷地從乙個xml文件中讀取節點樹來釋放資料。這種做法有兩個不足的地方:速度和可讀性。下面我將教大家一種不是新的,但是,更可用的方法。

首先,所謂分析xml就是從乙個xml文件中釋放資料,並建立乙個內部的資料代表。我們通常的做法是載入乙個xml檔案,並建立乙個陣列物件來裝載裡面的資料以便為我們在flash中使用。

我們解釋xml文件並把資料裝載到陣列物件中的原因是多方面的。我們可以節省我們的記憶體空間,因為xml物件在flash是有一點巨大,而且當我們需要用到已載入的xml檔案的資料時,我們可以提高資料的訪問速度。另外,用playlist_array[1]來表示陣列總比在xml文件中找資料來得方便一點。

playlist_arr = new array();

playlist_xml = new xml();

playlist_xml.ignorewhite = true;

playlist_xml.onload = function(success)

playlist_arr.push(trackdata);

}trace("total parse time: " + (gettimer()-starttime));

} else

// clean up after ourselves

delete playlist_xml;

}playlist_xml.load("playlist.xml");

上面的**解釋了我們的xml檔案並建立了乙個對組物件。如果在這之前你從來沒有處理過xml資料理解這段**是有點困難的。當解釋完成了以後,如果我們要訪問第乙個軌道的***檔案的位址我們會用「playlist_arr[0].location」,這裡就會得到他的正確的位址。而對我們來說,我們可以把這個做得更好……

上面那段**,在我的機子上,用了5毫秒去解除。這裡並不怎麼樣,但不要忘了我們只是解釋了兩個軌道而已。

下面是乙個更好的釋放相同資料的方法,而不用依靠迴圈地讀取子節點:

playlist_arr = new array();

playlist_xml = new xml();

playlist_xml.ignorewhite = true;

playlist_xml.onload = function(success)

trace("total parse time: " + (gettimer()-starttime));

} else

delete playlist_xml;

}function gettrackdata(track_xml)

return trackdata;

}playlist_xml.load("playlist.xml");

上面這個方法,我們可以得到相同的結果,但是卻快了一點,可讀性高了一點。在我的機子上只用了2毫秒來解釋這兩條軌道資訊並裝載到playlist陣列。

在這個例子中我給**加了注釋。我們最主要就是理解xml物件的onload事件。注意到我在第二種方法通過建立乙個gettrackdata函式使**更可讀了嗎?這裡面獲得乙個節點物件作為引數並返回乙個代表著軌道資訊的物件。

不用在節點中頻繁地讀取每乙個元素,我在這裡只用了兩個xml在flash中的屬性,firstchild和nextslibling。即首節點和下乙個節點或元素。在迴圈開始之前,我去掉了所有的東西,只把首點節點作為乙個xml值(在例子中為track_xml)。然後,我們的迴圈是簡單:當有節點的時後,我們釋放資訊。在迴圈的結尾,我們已得到了資料,並使xml值跳到下乙個節點。當下乙個節點的值回值為空時,表示沒有資訊去處理,我們退出迴圈。

現在你已看到了乙個截然不同的xml物件的解釋方法。不用依靠讀取子節點,我們利用nextsibling的優點來提高xml解釋的速度和可讀性。你們許多人也許已用過這種方法,但我想在這裡寫一下,因為這種方法並不是每個人都知道的

FLASH讀取XML中的內容

寫乙個叫aaa.xml的xml檔案 xml version 1.0 encoding utf 8 www.163.com 我要做個好人,請help help我,hohoho 但我還是想做回壞人哦 呱呱呱 現在的老虎是不會吃人的 現在的小羊連骨頭也不放過55555 www.21cn.com 調理農務系...

zz 讓ctags更好的支援php

vim下面有個比較知名的外掛程式叫taglist,從名字上就能看到它的功能是list 裡所有的tag,支援n種語言,功能灰常強大,可擴充套件性很強。它是需要ctags支援的,因為它需要ctags生成的tags檔案。但是ctags的預設配置對php支援的比並不好,特別是對類的屬性和方法。最開始以為是t...

更好的服務讓你更出眾

科 技的發展,時代的變遷,各行各業生產製造的產品琳琅滿目,是否當您銷售某型別產品時,覺得與自己產品類似的實在太多,給自己的產品找條出路實在太難呢?有 沒有更好的辦法把自己的產品跟其他的同類產品差異化呢?如今其實同型別的產品越來越同質化,比來比去,看著這個做工很精細,那個好像質量也很好,最後能做 出差...