我正在使用AIR for android和Starling框架开发游戏。我使用Flash CC作为IDE。当我测试我在内部闪存它工作正常,但当我发布到Android它不能正常工作。
我有一个屏幕管理器类,它隐藏并显示菜单,级别选择和游戏屏幕。为此,我有一个自定义事件类。下面的函数位于Screen manager类中。它适用于每个目标值但是 不适用于TO_GAME。
private function onNavigate(e: NavEvent)
{
if (e.destination == Destination.TO_HOME)
{
menuScreen.wake();
}
else if (e.destination == Destination.TO_LEVELS)
{
levelScreen.wake();
}
else if (e.destination == Destination.TO_GAME)
{
gameScreen.wake();
}
else if (e.destination == Destination.TO_HELP)
{
helpScreen.wake();
}
else if (e.destination == Destination.TO_ABOUT)
{
aboutScreen.wake();
}
}
当用户点击关卡按钮时会触发该事件。请参阅其他部分
var btn:Button = e.target as Button;
if (btn == backBtn)
{
this.dispatchEvent(new NavEvent(NavEvent.NAVIGATE , Destination.TO_HOME));
this.sleep();
}
else
{
//just testing if I can get the level number from the position of the level button
trace(this.getLevelNumber(btn.x,btn.y));
this.dispatchEvent(new NavEvent(NavEvent.NAVIGATE , Destination.TO_GAME));
this.sleep();
}
我从不同的按钮解雇了这个事件,但到目前为止没有运气。它在IDE内部工作,但设备内部没有任何反应。所有其他活动都在运作。事件上述功能的第一个条件正常。
答案 0 :(得分:1)
在AIR for Android平台上发布时,您应该记住文件名区分大小写。
例如,我有一个名为“LevelData.json”的文件。注意首都'D'。
我正在将此文件加载到starling资产管理器中,如下所示
assets.enqueue(dir.resolvePath("Data/Levels/leveldata.json"));
请注意,我使用了小写字母'd'。由于Windows具有不区分大小写的文件名,因此当我在实际的Android设备上运行应用程序时,它不会引起任何问题。那没起效。所以我把原来的文件名改为“leveldata.json”vo瞧!该应用程序现在运行良好。