有两个clips:main_mc和child_mc。main_mc在舞台的主时间线上.child_mc位于main_mc内部,由AS3代码创建:
var child_mc:Sprite=new Sprite;
child_mc.graphics.beginFill(0xff0000);
child_mc.graphics.drawCircle(15,20,10);
addChild(child_mc);如何改变,例如x,y,在child_mc中,由AS3在主时间线上创建?
发布于 2015-07-15 18:40:00
当您在时间线内创建一个var时,它将成为该MovieClip的一个属性,因此您可以像任何其他属性一样访问它。
因此,在主时间线上,您可以执行以下操作:
main_mc.child_mc.x = 100;
main_mc.child_mc.y = 100;如果我误解了,而您想要另一个方向,您可以使用root或parent关键字:
因此,在main_mc内部,您可以访问主要时间线,如下所示:
MovieClip(parent)因此,如果在主时间线上有另一个名为myClip的对象,并且您想用main_mc中的代码隐藏它,您可以这样做:
MovieClip(parent).myClip.visible = false;或者,从任何地方:
MovieClip(root).myClip.visible = false;编辑
从您的评论中可以看出,您试图在创建child_mc的主时间线的同一帧上访问main_mc。这方面的问题是,主时间线代码将在其任何一个子节点的时间线代码之前运行。(所以当主时间线代码运行时还没有创建child_mc )。
如果您需要一种方法来等待直到所有子时间线代码运行,您可以这样做,作为一个解决办法:
//add a listener to wait until the frame is done being constructed.
this.addEventListener(Event.FRAME_CONSTRUCTED,frameConstructed);
function frameConstructed(e:Event):void {
//remove the listener so this function doesn't keep running on subsequent frames
this.removeEventListener(Event.FRAME_CONSTRUCTED, frameConstructed);
//do what you need to here
trace(main_mc.child_mc);
}发布于 2015-07-15 19:10:27
你可以这样做:
var child_mc:Sprite=new Sprite;
child_mc.name = "myinnerchild";然后:
var child:Sprite = main_mc.getChildByName("myinnerchild") as Sprite;然后瞧。
发布于 2015-07-15 19:22:29
如果"child_mc“是一个全局变量,或者当您准备移动它时,您可以将它赋值给一个可以访问的变量,那么代码就是.
child_mc.x = 100;https://stackoverflow.com/questions/31438388
复制相似问题