AndEngine—有问题,附加一个新的实体的精灵
-
27-10-2019 - |
题
我一直在做的尝试和错误的时间现在和我们尚未拿出一个解决方案的东西,似乎很简单。...我用的
public void onConfigurationChanged(Configuration newConfig)
检测方法,如果一个用户拥有改变他们的屏幕的方向。最后,它会发送到这个方法那里的对象上是附加场景:
public void BuildScene(final Scene scene){
// Destroys current scene.
scene.detachChildren();
this.SpriteDayPortrait = new Sprite(-200, 0, 2000, 500, this.mParallaxLayerDayPortrait);
this.SpriteDayLandscape = new Sprite(0, 0, 750, 500, this.mParallaxLayerDayLandscape);
if (prefs.getString("frontImage", "1").equals("3"))
{
//Day
if (orientationValue.equals("PORTRAIT"))
{
Log.d("Orientation", "Portrait");
scene.detachChild(SpriteDayLandscape);
scene.attachChild(SpriteDayPortrait);
}
else if (orientationValue.equals("LANDSCAPE"))
{
Log.d("Orientation", "Landscape");
scene.detachChild(SpriteDayPortrait);
scene.attachChild(SpriteDayLandscape);
}
}
}
这种方法被称为当墙纸首次创建,并且还当用户的变化屏幕的方向。
我已经测试了这个我的电话,并成功显示的登录信息时候我开的方向,这意味着它是做什么我想要它做的。
问题--
精灵的孩子不会分离时,这种方法被称为。如果我是在肖像的模式,并开关于横向、纵向sprite仍然是和我想它会消失,反之亦然。
我将非常高兴,如果任何人都可以回答这个我一直有头痛过这大概20小时。
解决方案
问题似乎出在逻辑上:您在调用有关分离或附加它们的分支之前重新分配了SpriteDayPortrait和SpriteDayLanscape。
因此,每次调用分离脚本时,它都引用该sprite的一个 new 实例,而不是要分离的旧实例。
尝试将子画面的分配移动到仅在创建场景时才调用的另一个函数: 通用标签
其他提示
请记住,由于改变方向,在AndEngine不存在(你是不允许改变引擎的方向),你应该不会让你游戏中可以用方向变化(这将是怪异的用户)。
不管怎么说, onConfigurationChanged
被称为从UI线,你不应该操纵的对象AndEngine但在UpdateThread.它可能会引起一些问题(但是,如果将你的游戏就会崩溃)以改变它。
我认为它会发生是因为你不清楚你的 ParallaxBackground
以前设置的新的背景(也许是老背景隐藏了一个新的?)
保持一个参考你的最后一个 ParallaxEntity
然后把它从背景之前,添加新的一个。
不隶属于 StackOverflow