2012-03-07 9 views
0

私はAndEngineで遊んでいて、スプラッシュスクリーンを作っている間にこれを文書化していません。私は、SplashSceneクラスがあることを認識していますが、私が学んでいる限り、私はあらゆる種類の方法を試しています。ScaleModifierでスプライトがちらつくのはなぜですか?

しかし、私はこの権利を得ることはできません。画面は240x320(W x H)で、スプラッシュ画面のテクスチャは480x640ですので、画面に合わせて縮小しています。テクスチャローディングなどは正常に動作していますが、スプライトが表示されているときは、最初に大きなテクスチャが0.1秒間表示され、次にそれが縮小されます。私はそれが前に縮小表示されるようにしたい。すべてを試していて、setVisible(false)などを使ってattachChild()をonLoadComplete()に移動しましたが、テクスチャが毎回縮小されるのがわかります。

なぜですか?私はこれまででonLoadComplete()を書き換えた場合

@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); 
} 

は、ここに私のコードです

@Override 
public void onLoadComplete() { 
    scene.attachChild(splashScreen); 

    mHandler.postDelayed(korv, 1000); 
} 

private Runnable korv = new Runnable() { 
    @Override 
    public void run() { 
    splashScreen.setVisible(true); 

    } 
}; 

ちらつきがなくなっているが、それは良い解決策のように感じることはありません。

答えて

2

ScaleModifierは、指定された時間の倍以上のスケールを調整 - あなたのケースで

ScaleModifier(0.1f, 1.0f, scaleFactor) 

0.1Fあなたはおそらくしたいことは、直接子供を取り付ける前にそれを行う

SplashScreen.setScale(scaleFactor); 

を使用してスプライトをスケーリングすることですあなたは大丈夫でしょう。

+0

パーフェクト。ありがとう! – bos

関連する問題