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