我正在为一个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);
请随时通知我们!