剪辑由AS3创建的剪辑

时间:2015-07-15 18:33:54

标签: actionscript-3 clip addchild

有两个片段: 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);

如何在主时间轴上创建的AS3中更改 child_mc 中的x,y?

3 个答案:

答案 0 :(得分:1)

在时间轴中创建var时,它将成为该MovieClip的属性,因此您可以像任何其他属性一样访问它

因此,在主时间轴上,您可以执行以下操作:

main_mc.child_mc.x = 100; 
main_mc.child_mc.y = 100;

如果我误解了您想要的其他方向,请使用rootparent个关键字:

因此,从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);
}

答案 1 :(得分:0)

你可以这样做:

var child_mc:Sprite=new Sprite;
child_mc.name = "myinnerchild";

然后:

var child:Sprite = main_mc.getChildByName("myinnerchild") as Sprite;

瞧。

答案 2 :(得分:0)

如果“child_mc”是一个全局变量,或者您将它分配给一个变量,您可以在准备移动它时访问该变量,那么代码就是......

child_mc.x = 100;