Stage null ActionScript 3 Flash CS5导出为Actionscript

时间:2011-07-21 17:55:31

标签: flash null flash-cs5 stage

这是交易, 我有一个我从.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

2 个答案:

答案 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);
    }
}
}