2011-04-30 36 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");