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
Flash 无法通过actionscript创建对象_Flash_Actionscript 3 - Fatal编程技术网

Flash 无法通过actionscript创建对象

Flash 无法通过actionscript创建对象,flash,actionscript-3,Flash,Actionscript 3,我创建了MovieClip,“导出它用于ActionScript”,同名。当我通过将对象拖到后台直观地创建一个对象时,这是可以的,但是当使用var smth:*=new myClass()时,会发生错误。有一个错误,因为我导出的MovieClip中有一些代码,它涉及到Stage。发生这种情况是为了在运行代码时不实例化阶段?我的意思是,我在第二帧上创建对象,所以这看起来有点不可能。当(在MovieClip中)我写跟踪(stage)输出为null。正如我所说,在可视化地创建对象时没有问题。女士们先生

我创建了MovieClip,“导出它用于ActionScript”,同名。当我通过将对象拖到后台直观地创建一个对象时,这是可以的,但是当使用
var smth:*=new myClass()
时,会发生错误。有一个错误,因为我导出的MovieClip中有一些代码,它涉及到Stage。发生这种情况是为了在运行代码时不实例化阶段?我的意思是,我在第二帧上创建对象,所以这看起来有点不可能。当(在MovieClip中)我写
跟踪(stage)输出为
null
。正如我所说,在可视化地创建对象时没有问题。女士们先生们,这是什么

import flash.events.Event;
在类的构造函数中,为要添加的阶段添加eventListener

this.addEventListener(Event.ADDED_TO_STAGE, myFunction);
然后创建一个名为init的eventListener,并使用一个事件作为参数

function myFunction(e : Event) : void
{
    this.removeEventListener(Event.ADDED_TO_STAGE, myFunction);

    // execute code here
}

removeEventListener是必需的,不要忘记删除它!flash中的错误将触发添加到stage的事件两次,因此如果不想执行代码两次,则必须将其删除。

如果我按照您所说的进行操作,则您的
MovieClip
子类中没有立即引用
stage
?如果
MovieClip
未附加到后台或已附加到后台的另一个
DisplayObjectContainer
(显示列表链上的某个位置),则会发生这种情况

验证阶段是否可用以及在可用时执行代码的一种方法是在FlashDevelop项目中经常可以找到的一个小代码片段:

public function Main():void {
    stage ? init() : addEventListener(Event.ADDED_TO_STAGE, init);
}

private function init(e:Event = null):void {
    removeEventListener(Event.ADDED_TO_STAGE, init);
    // entry point
}

因此,如果找到
stage
,它会立即触发
init()
方法(不带参数),否则它将等待将其添加到stage(或已附加的某个其他DisplayObjectContainer)时,当它使用
init(e:Event)时,它将传入
事件
参数
作为回调方法。

哦,谢谢。它起作用了。但是,每当我编写
MovieClip(this.root)
时,就会出现一个错误,说明AS无法将
Stage
转换为
MovieClip
。为什么会这样?请在单独的问题中提问,这样其他用户可以使用搜索更快地找到解决方案:-)。