我在Flash项目中有一个主要的(文档类(:
package {
import flash.display.MovieClip;
import flash.events.Event;
public class main extends MovieClip {
public function main() {
var other=new Other(this);
}
}
}
这是另一类:
package {
import flash.display.MovieClip;
import Clippo;
public class Other extends MovieClip {
//
public function Other(ref) {
//
var clippo = new Clippo();
clippo.name="clippo";
clippo.x=100;
clippo.y=100;
//1
//ref.addChild(clippo);
//2
addChild(clippo);
}
}
}
现在:如果我将main类的引用(ref(传递给Other,并添加clippo,正如您在第一种情况中看到的那样,我可以从main中引用movieclip-clippo(getChildAt(0)
是main中的"clippo"(。但是,有没有办法使用第二个方法(没有ref(并从主类中执行同样的操作?当Other创建clippo时,我可以在舞台上看到它,但我不明白clippo在DisplayList中的"位置"。
我不太确定你想完成什么,但是:
-
如果要查看
other
或其子项,则需要将其添加到显示列表中。public function main() { var other:Other = new Other(this); addChild(other); }
-
您可以使用
root
,而不是传递对文档类的引用。(一旦出现在显示列表中(。root.addChild(clippo);
但是,将其添加到Other:
addChild(clippo)
更有意义 -
创建DisplayObjects的位置不会影响显示列表,只有调用
addChild
会影响。调用文档类中的addChild
和Other中的root.addChild
会导致相同的显示列表。
如果您遇到这种问题,您可能需要重新思考您的体系结构。
制定一些你遵循的规则,让事情变得更容易,比如;不要让child元素将子元素添加到父元素中。
我认为获得clippoDisplayObject引用的最好方法是为它提供一个getter方法
public function get clippo():Clippo
{
return this.clippo;
}