我正在和AndEngine一起玩,并在制作闪屏时学习这些没有记录。我知道有一个SplashScene课程,但正如我所知,我正在尝试各种方式。
然而,我似乎无法正确对待这一点。屏幕为240x320(宽x高),闪屏纹理为480x640,因此我将其缩小以适应屏幕。纹理加载等工作正常,但是当显示精灵时,我首先看到0.1secs的大纹理,然后缩小。我想让它在显示前缩小。尝试了一切,将调用attachChild()移动到onLoadComplete(),使用setVisible(false)等,但我看到纹理每次都缩小。
为什么?
这是我的代码:
@Override
public Scene onLoadScene() {
this.scene = new Scene();
// Texture sizes
final int sX = mSplashTextureRegion.getWidth();
final int sY = mSplashTextureRegion.getHeight();
// Center on camera
final int cX = (CAMERA_WIDTH - sX) / 2;
final int cY = (CAMERA_HEIGHT - sY) / 2;
// Scale factor according to camera
final float scaleFactor = Math.min((float) CAMERA_WIDTH / sX, (float) CAMERA_HEIGHT / sY);
// Init sprite
splashScreen = new Sprite(cX, cY, mSplashTextureRegion);
splashScreen.setVisible(false);
// Rescale the splash-screen to fit the display, move it to (0, 0) and show it.
splashScreen.registerEntityModifier(new ScaleModifier(0.1f, 1.0f, scaleFactor));
//splashScreen.registerEntityModifier(new ScaleAtModifier(0.001f, 1.0f, scaleFactor, 0, 0));
// splashScreen.registerEntityModifier(new SequenceEntityModifier(
// new ScaleModifier(0.1f, 1.0f, scaleFactor),
// new DelayModifier(0.2f)
// ));
return scene;
}
@Override
public void onLoadComplete() {
scene.attachChild(splashScreen);
splashScreen.setVisible(true);
}
如果我将onLoadComplete()
改写为:
@Override
public void onLoadComplete() {
scene.attachChild(splashScreen);
mHandler.postDelayed(korv, 1000);
}
private Runnable korv = new Runnable() {
@Override
public void run() {
splashScreen.setVisible(true);
}
};
闪烁消失了,但这不是一个好的解决方案。
答案 0 :(得分:2)
ScaleModifier调整超过指定时间因素的比例 - 在您的情况下为0.1f
ScaleModifier(0.1f, 1.0f, scaleFactor)
您可能想要的是使用
直接缩放SpriteSplashScreen.setScale(scaleFactor);
在安抚孩子之前这样做,你应该没事。