2008-11-20 22 views
2

我努力学习的ActionScript 2或3,AS2我最终通过试验和错误想通,我可以得到任何命名实例和使用字符串使用从AS2到AS3什么是_root的等值?

var theinstance = "titletext"; // actually exctracted from an array 
_root[theinstance].htmlText = "New text with <b>HTML!</b>"; 

它的名字修改,但尝试时将代码转换为AS3 _root不再存在。按照migration doc它是由flash.display.DisplayObject.stage莫名其妙地替换,但显然这是不如何做到这一点:

flash.display.DisplayObject.stage[theinstance].htmlText = "New text with <b>HTML!</b>"; 

也不是这样的:

flash.display.DisplayObject.stage.getChildByName(theinstance).htmlText = "New text with <b>HTML!</b>"; 

如何我得到一个孩子的名字动作3?

回答

3

只要使用“根”(无下划线)或“舞台”,具体取决于你想要做什么。

但是 - 为什么不直接在数组中存储对textField的引用而不是字符串?

2

“flash.display.DisplayObject”实际上并不是您调用的实际代码的一部分。相反,该文档告诉您stage属性可用于DisplayObject类的任何实例 - 例如,movieClip或sprite。

举例来说,如果你有一个影片剪辑名为foo,你可以参考阶段用:

foo.stage 

,并从那里走。

foo.stage.someRootLevelObject.htmlText = "Pretty <b>easy</b>"; 
+0

好的,但我如何使用字符串,而不是硬编码对象名? – 2008-11-20 14:44:56

+0

var objectName ='someString'; var object = foo.stage [objectName]; – 2008-11-20 15:57:52