柑橘引擎闪存游戏无法正确编译



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

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

在 flahs 构建器中,我走了文件 --> 导出 -->发布构建并编译了游戏。

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

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

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

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

任何建议表示赞赏

错误 #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事件。

也许以下内容可以解决您的问题:

将所有

初始化代码包装到自定义函数中(例如:initFunctionOfApplication(。在调用此 init 函数之前设置延迟计时器。这是我以前遇到的问题,并在一个小延迟内解决了它......也许这会解决您的问题。

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

请随时通知我们!

最新更新