Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 addChild与内部movieClips进行通信_Actionscript 3_Flash - Fatal编程技术网

Actionscript 3 addChild与内部movieClips进行通信

Actionscript 3 addChild与内部movieClips进行通信,actionscript-3,flash,Actionscript 3,Flash,我对AS3有一些问题。我有一个Movieclip,我已经用addChildgameLevelSelect;将它添加到了舞台上 问题是我也有其他的电影唇在里面,但不是像addChildgameLevelSelect中的addChild;在舞台上。我给了一个符号一个stageThumb_01的实例名,但它不起作用。我怎样才能解决这个问题 代码如下: gameLevelSelect.getChildByName("stageThumb_01").addEventListener(MouseEvent.

我对AS3有一些问题。我有一个Movieclip,我已经用addChildgameLevelSelect;将它添加到了舞台上

问题是我也有其他的电影唇在里面,但不是像addChildgameLevelSelect中的addChild;在舞台上。我给了一个符号一个stageThumb_01的实例名,但它不起作用。我怎样才能解决这个问题

代码如下:

gameLevelSelect.getChildByName("stageThumb_01").addEventListener(MouseEvent.CLICK, load_Level01);
function load_Level01(e:MouseEvent):void {
    trace("blam")
    gameLevelSelect.getChildByName("stageThumb_01").getChildByName("stars").gotoAndPlay(2);
}

gameTitle.addEventListener(Event.ENTER_FRAME, load_LevelSelection);
function load_LevelSelection(event:Event):void {
    if(MovieClip(gameTitle).currentFrame == 22){
        removeChild(gameTitle);
        addChild(gameLevelSelect);

        addChild(thumbLevel01);

        thumbLevel01.getChildByName("stars").gotoAndPlay(1);

        gameLevelSelect.gotoAndPlay(1);

    }
}

var thumbLevel01 = new stageThumb01();
thumbLevel01.x = 83;
thumbLevel01.y = 161;

thumbLevel01.addEventListener(MouseEvent.CLICK, load_Level01);
function load_Level01(e:MouseEvent):void {
    trace("blam")
    //thumbLevel01.getChildByName("stars").gotoAndPlay(2);
}
这是可行的,原因是我把thumbLevel01变成了一个addChild。 但这不是我想要的。我在舞台上添加了一个movieclip作为addChildgameLevelSelect;在这部电影里有动画和按钮 而不是做一个链接,我想保持它作为一个电影剪辑在addChildgameLevelSelect;。我想知道的是如何与addChildgameLevelSelect;中实例名为的电影剪辑进行通信;。我试过了

游戏级别选择AddClass.GetChildByNameThumbLevel 01.getChildByNamestars。实例名为-thumbLevel01的movieClip未添加子项。 . . .
. . . . .> 带有实例名称的movieClip-starsMeter for score。

你问这个问题的方式非常迟钝,因此我无法理解你真正问的问题的核心,但我怀疑发生的事情是你试图在孩子们通过代码添加到实例的阶段之前访问他们

通常,您不希望直接访问子级。相反,您添加的组件应该公开允许您执行所需操作的属性和方法,这些属性和方法还应考虑如何构建MC的具体细节。例如:

class ShowMessage extends MovieClip {
  public var tf:TextField;//this is public so the Flash player can fill it, not for external use
  private var _message:String;
  public function get message():String {
      return _message;
  }
  public function set message(value:String):void {
      _message = value;
      if (tf) {
        tf.text = value;
      } 
  }
}

有关处理时间线和AS混合的其他方法,请查看。

什么不起作用?你的事件处理程序没有启动吗?有运行时错误吗?在代码示例中查看带有addChild的gameLevelSelect变量可能会有所帮助。我尝试了很多方法,但都没有成功。