2011-04-30 35 views
0

所以試圖找出爲什麼我的代碼不編譯,我來看看,這段代碼是不兼容的AS3小時後:如何訪問AS3中的root?

function loadXML(loaded) { 
if (loaded) { 
_root.inventor = this.firstChild.childNodes[0].childNodes[0].firstChild.nodeValue; 
_root.comments = this.firstChild.childNodes[0].childNodes[1].firstChild.nodeValue; 
name_txt.text = _root.inventor; 
comment_txt.text = _root.comments; 
} else { 
    trace("file not loaded!"); 
} 
} 

xmlData = new XML(); 
xmlData.ignoreWhite = true; 
xmlData.onLoad = loadXML; 
xmlData.load("http://localhost/connect.php"); 

任何人都知道如何訪問根在AS3?謝謝!

+0

我可能是錯的,但他們不刪除根變量AS3? – Zirak 2011-04-30 08:49:56

+0

如果我知道,我不會問? :)任何想法如何訪問XML樹? – 2011-04-30 08:51:55

+0

此代碼是100%AS2(不僅是_root部分) – OXMO456 2011-04-30 09:30:58

回答

0

如果您的意思是電影的根SpriteMovieClip(文檔類),您可以在舞臺上使用任何DisplayObject的屬性root

1

這裏是我落得這樣做:

var myXML:XML = new XML(); 
var XML_URL:String = "http://localhost/connect.php"; 
var myXMLURL:URLRequest = new URLRequest(XML_URL); 
var myLoader:URLLoader = new URLLoader(myXMLURL); 
myLoader.addEventListener("complete", xmlLoaded); 

function xmlLoaded(event:Event):void 
{ 
    var finalXML:XML = XML(myLoader.data); 
    //trace(finalXML); 
    trace("Data loaded."); 
    //trace(finalXML.triviaQuestion[0].answer1[0]); 
    //questionBox.text = (finalXML.triviaQuestion[0].question[0]).toString(); 
} 
+0

那麼你是說這是你自己的問題的答案還是它的更新?如果它是一個更新,你應該把它添加到你的問題可能在** [更新] **標籤下,然後刪除這個答案。 – Taurayi 2011-04-30 14:24:46

+0

這看起來不錯。最好避免使用AS3中的root作爲存儲數據的地方,因爲它違反了OOP原則。 – 2011-04-30 16:29:34

0

使用MovieClip(root),而不是僅僅_root,它的作品!
像這樣:

function loadXML(loaded){ 
if (loaded) { 
    MovieClip(root).inventor = this.firstChild.childNodes[0].childNodes[0].firstChild.nodeValue; 
    MovieClip(root).comments = this.firstChild.childNodes[0].childNodes[1].firstChild.nodeValue; 
    name_txt.text = MovieClip(root).inventor; 
    comment_txt.text = MovieClip(root).comments; 
} else { 
    trace("file not loaded!"); 
} 
} 

xmlData = new XML(); 
xmlData.ignoreWhite = true; 
xmlData.onLoad = loadXML; 
xmlData.load("http://localhost/connect.php");