Citrus Engine Flash游戏无法正确编译

时间:2012-05-17 17:32:27

标签: actionscript-3 flash flash-builder box2d

我正在开发一个基于柑橘引擎的flash游戏,用于单项目。

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

在flahs建设者中我已经去了文件 - >出口 - >发布版本并编译游戏。

.swf文件打开正常并启动spirte菜单但是当点击开始游戏按钮时它开始启动游戏状态但是然后挂起一个纯色,在flash调试器中我得到这些错误

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

发起者 TypeError:错误#1009:无法访问空对象引用的属性或方法。     at com.citrusengine.utils :: ObjectMaker $ / FromMovieClip()     在GameState / initialize()     在com.citrusengine.core :: CitrusEngine / handleEnterFrame() SecurityError:错误#2000:没有活动的安全上下文。

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

任何建议表示赞赏

2 个答案:

答案 0 :(得分:0)

以下可能会解决您的问题:

将所有init代码包装到自定义函数(假设:initFunctionOfApplication)。在调用此init函数之前设置延迟计时器。这是我之前遇到过的一个问题,并且稍微延迟修复了......也许这会解决你的问题。

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

让我们发布!

答案 1 :(得分: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未封装在加载器中,则父对象应该是舞台,否则,您可以安全地向侦听addedToStage事件的已加载swf的时间轴添加侦听器。