Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.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 AS3-从类中的阶段访问MovieClip_Actionscript 3_Flash_Movieclip - Fatal编程技术网

Actionscript 3 AS3-从类中的阶段访问MovieClip

Actionscript 3 AS3-从类中的阶段访问MovieClip,actionscript-3,flash,movieclip,Actionscript 3,Flash,Movieclip,我已经在这个问题上停留了很长时间,并且在这里查看了过去关于类似问题的问题,比如这篇文章: 我使用构造函数侦听ADDED_to_STAGE事件,然后启动主函数,从ADDED_to_STAGE处理程序设置eventListeners。在同一个处理程序中,我还尝试使用以下代码从stage获取MovieClip: player=stage.getChildByName(“player”)作为MovieClip player被全局定义为MovieClip 在另一个处理程序中(将类添加到stage之后),我

我已经在这个问题上停留了很长时间,并且在这里查看了过去关于类似问题的问题,比如这篇文章:

我使用构造函数侦听
ADDED_to_STAGE
事件,然后启动主函数,从
ADDED_to_STAGE
处理程序设置
eventListeners
。在同一个处理程序中,我还尝试使用以下代码从stage获取
MovieClip

player=stage.getChildByName(“player”)作为MovieClip

player
被全局定义为
MovieClip

在另一个处理程序中(将类添加到stage之后),我使用
player.gotoAndStop(“跳转”)将
player设置为转到特定的
帧标签
。但是,输出警告显示为“无法访问空对象引用的属性或方法”。

以下是我使用的代码:

public var player:MovieClip;

public function PlayerControl():void {      
    this.addEventListener(Event.ADDED_TO_STAGE, addedToStage);          
}

private function addedToStage(event:Event):void{
    removeEventListener(Event.ADDED_TO_STAGE, addedToStage);

    this.addEventListener(Event.ENTER_FRAME, enterFrameHandler);

    stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);

    stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);

    player = stage.getChildByName("player") as MovieClip;

}

private function enterFrameHandler(event:Event):void{   
   if(up == true && moviePlaying == false){
      player.gotoAndStop("jump");
      moviePlaying = true;
   }
}

检查MC的实例是否实际命名为“player”。还可以尝试通过名称跟踪所有stage的子级:
for(var i:int=0;它支持注释。我尝试了for循环,它显示了这两个名称:root1和instance3。当我从stage中删除播放器MovieClip并重新运行for循环时,instance3被instance2替换。但是在更改“player”之后在getChildByName to instance3中,我收到另一条输出错误消息:“在场景跳转中未找到帧标签跳转”。当您
跟踪(播放器);
跟踪(播放器类型);
时,您会得到什么?我在外部类中执行了
跟踪(播放器)
,它显示:
[对象播放器控制]
(注意:PlayerControl是类名)。
跟踪(播放器类型);
向我展示:
对象
。省去你的头痛,删除所有时间线动画。当你从一帧到另一帧移动时,Flash运行时会删除/添加对象到时间线,这会导致代码疯狂。转到发布设置并启用“允许调试”以获取显式信息,并使用control shift enter在调试模式下编译。这将为您提供调用堆栈和变量范围列表。很可能,您正在查找帧1中存在的属性(当您实例化某些对象时),而帧标签“jump”处不再存在的属性(其中闪存将其删除以匹配定义的状态)。