这是交易, 我有一个我从.fla文件中调用的Main类。一切正常,直到我在库中设置一个对象“export for actionscript”...之后,舞台不再起作用,舞台现在返回“null”,因为我检查了一个对象“export for actionscript”。
我正在使用flash cs5,而且早期版本的闪存从未发生过这种情况。
对英语很抱歉...我希望我很清楚。
代码示例:
package com {
import flash.display.MovieClip;
public class Teste extends MovieClip {
public function Teste() {
trace(stage)// traced null
}
}
}
我会尝试解释我所做的步骤。 - 创建Teste类; - 打开.fla文件,并在.fla文件属性的Class字段中添加该Class; - 创建和MovieClip并尝试从Actionscript导出它; 这就出现了问题......当我这样做时,舞台现在返回Null,因为我在库中导出了一个MovieClip。 o.O
答案 0 :(得分:1)
原因是当没有太多载入时,舞台可能立即可用。现在您已经为Actionscript添加了要导出的内容,加载甚至可能需要更长的时间并且阶段将无法使用。
始终检查阶段是否存在,然后等待它存在,然后再尝试引用它。
试试这个:
package com {
import flash.display.MovieClip;
public class Teste extends MovieClip {
public function Teste() {
if(!stage) addEventListener(Event.ADDED_TO_STAGE, _addedToStage)
else _addedToStage();
}
private function _addedToStage(e:Event = null)
{
trace(stage)// traced null
}
}
}
答案 1 :(得分:0)
如果这是您的文档类,那么在阶段对象存在之前,此代码很可能正在初始化。我只是猜测,但我希望行为的改变是由于你的'actions for actionscript'类在第一帧上加载它们的定义并导致某种形式的延迟。
尝试等待舞台存在:
package com {
import flash.display.MovieClip;
public class Teste extends MovieClip {
public function Teste() {
if(stage) {
init();
} else {
addEventListener(Event.ADDED_TO_STAGE,init);
}
}
private function init(evt:Event = null):void {
removeEventListener(Event.ADDED_TO_STAGE,init);
//stage should now exist
trace(stage);
}
}
}