2015-03-19 108 views
0

我正在從xml文件加載一些數據到flash項目作爲值..數字工作正常,但布爾值(真,假)不工作!如何在as3中使用xml中的布爾值(true,false)?

XML數據:

<?xml version="1.0" encoding="utf-8"?> 
<SETTINGS> 
<SET VALUE="2">Size</SET> 
<SET VALUE="false">Lock</SET> 
</SETTINGS> 

AS3代碼:

var myXML:XML; 
var myLoader:URLLoader = new URLLoader(); 
myLoader.load(new URLRequest("settings.xml")); 
myLoader.addEventListener(Event.COMPLETE, processXML); 

function processXML(e:Event):void 
{ 
    myXML = new XML(e.target.data); 

    size_ns.value = myXML.SET[0][email protected]; 
    lock_cb.selected = myXML.SET[1][email protected]; 
    trace(myXML.SET[1][email protected]); 
}; 

輸出:假

但lock_cb.selected仍然如此! 謝謝

+0

我不明白如何在XML文件中將輸出設置爲「true」時輸出可能爲「假」? – Aaron 2015-03-19 03:00:47

+0

對不起,這是假的我已經改變了它.. – Nezarov 2015-03-19 03:02:07

回答

0

字符串false的計算結果爲布爾真,可以通過將其與字符串true進行比較將其轉換爲布爾值。

嘗試

lock_cb.selected = myXML.SET[1][email protected] === 'true'; 
+0

謝謝你的回覆,但我不能設置Flash文件內的值..它應該是一個用戶的設置文件! – Nezarov 2015-03-19 03:14:25

0

我相信您有XML type conversion問題。請記住,所有E4X查詢都將返回XMLXMLList對象,並且只能隱式轉換爲Strings。換句話說,VALUE是字符串"false"而不是布爾值false

但是,您可以通過比較其轉換爲一個布爾值:

var value:Boolean = myXML.SET[1][email protected] == true; 

這工作,因爲the == operator will convert both values to strings when one operand is an XML attribute"true" == "true"成爲true,而"false" == "true"變得false。換句話說,它是與此相同:

var value:Boolean = myXML.SET[1][email protected] == "true"; 

原因的數字作品是因爲分配StringNumber將隱式解析字符串轉換成數字。

是的,隱式轉換可能會讓事情變得混亂。

作爲最後一點,這可能超出您現在或想要做的,但JSON支持布爾值,數字和空值,所以您不會遇到同樣的問題。

+0

謝謝阿倫先生我明白你的觀點,但是「JSON」是什麼? – Nezarov 2015-03-19 03:34:08

+0

JSON是一種替代數據格式。它比XML更新,並且由於其簡單性而獲得了很多人氣。 Flash支持原生JSON解析和編碼,與XML類似(儘管它沒有E4X查詢語法)。 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/JSON.html – Aaron 2015-03-19 03:36:42

+0

非常感謝,我認爲這是一個很長的故事,我的意思是JSON,我必須弄清楚,但不是現在:P – Nezarov 2015-03-19 03:46:24

相關問題