0

我正在为一个 uni 项目开发基于 citrus 引擎的 flash 游戏。

所有这些都已完成并提交,但我试图将整个项目编译成 web 版本。

在flahs builder ive got file --> export --> release build 并编译了游戏。

.swf 文件可以正常打开并启动精灵菜单,但是当单击开始游戏按钮时,它开始启动游戏状态,但随后以纯色挂起,在 Flash 调试器中我收到这些错误

SecurityError:错误 #2000:没有活动的安全上下文。

开始类型错误:错误 #1009:无法访问空对象引用的属性或方法。在 com.citrusengine.utils::ObjectMaker$/FromMovieClip() 在 GameState/initialize() 在 com.citrusengine.core::CitrusEngine/handleEnterFrame() SecurityError: Error #2000: No active security context.

开始类型错误:错误 #1009:无法访问空对象引用的属性或方法。在 com.citrusengine.utils::ObjectMaker$/FromMovieClip() 在 GameState/initialize() 在 com.citrusengine.core::CitrusEngine/handleEnterFrame()

任何建议表示赞赏

4

2 回答 2

0

也许以下将解决您的问题:

将所有初始化代码包装到一个自定义函数中(比如说:initFunctionOfApplication)。在调用此初始化函数之前设置一个延迟计时器。这是我以前遇到过的一个问题,并且稍有延迟就解决了...也许这会解决您的问题。

setTimeout(function():void{initFunctionOfApplication();}, 3000);

随时通知我们!

于 2012-05-17T18:02:03.463 回答
0

错误 #2000通常是文件未找到错误。您可以通过运行 IOErrorEvent 获得更多信息,如下所示:

myLoader.addEventListener(IOErrorEvent.IO_ERROR, IOError)

function IOError(e:IOErrorEvent):void {
    trace(e.text);
}

可能是指向正确文件的路径问题。

错误 #1009可能是由于 IOError 而无法处理尚未加载的资产的多米诺骨牌效应。如果您将其他 SWF 加载到舞台并且这些子 SWF 尝试在舞台准备好之前使用它,这也可能是一个问题,在这种情况下,您只想在addedToStage事件触发之后才启动脚本。你可以这样设置:

if (this.parent is Stage) {
    stageReady();
} else {
    addEventListener("addedToStage", stageReady);
}

function stageReady(e:Event = null):void {
    // begin your setup code here.
}

这里的逻辑是,如果您的 swf 没有封装在加载器中,则父对象应该是舞台,否则,您可以安全地向加载的 swf 的时间线添加一个侦听器来侦听addedToStage事件。

于 2012-05-17T18:51:11.913 回答