首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AS3创建的夹内剪辑

AS3创建的夹内剪辑
EN

Stack Overflow用户
提问于 2015-07-15 18:33:54
回答 3查看 43关注 0票数 0

有两个clips:main_mc和child_mc。main_mc在舞台的主时间线上.child_mc位于main_mc内部,由AS3代码创建:

代码语言:javascript
复制
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在主时间线上创建?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-15 18:40:00

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

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

代码语言:javascript
复制
main_mc.child_mc.x = 100; 
main_mc.child_mc.y = 100;

如果我误解了,而您想要另一个方向,您可以使用rootparent关键字:

因此,在main_mc内部,您可以访问主要时间线,如下所示:

代码语言:javascript
复制
MovieClip(parent)

因此,如果在主时间线上有另一个名为myClip的对象,并且您想用main_mc中的代码隐藏它,您可以这样做:

代码语言:javascript
复制
MovieClip(parent).myClip.visible = false;

或者,从任何地方:

代码语言:javascript
复制
MovieClip(root).myClip.visible = false;

编辑

从您的评论中可以看出,您试图在创建child_mc的主时间线的同一帧上访问main_mc。这方面的问题是,主时间线代码将在其任何一个子节点的时间线代码之前运行。(所以当主时间线代码运行时还没有创建child_mc )。

如果您需要一种方法来等待直到所有子时间线代码运行,您可以这样做,作为一个解决办法:

代码语言:javascript
复制
//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
EN

Stack Overflow用户

发布于 2015-07-15 19:10:27

你可以这样做:

代码语言:javascript
复制
var child_mc:Sprite=new Sprite;
child_mc.name = "myinnerchild";

然后:

代码语言:javascript
复制
var child:Sprite = main_mc.getChildByName("myinnerchild") as Sprite;

然后瞧。

票数 0
EN

Stack Overflow用户

发布于 2015-07-15 19:22:29

如果"child_mc“是一个全局变量,或者当您准备移动它时,您可以将它赋值给一个可以访问的变量,那么代码就是.

代码语言:javascript
复制
child_mc.x = 100;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31438388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档