2012-04-03 4 views
0

ボード・ゲームを作っています。私は現在、3〜4時間を殺しています。どこにでもドキュメントがありませんので、私は運がなければ推測しています。このコードは、特定のブロックのための「ハイライト」四角形を描画することになっているエンティティ・モディファイヤは動作しますが、変化は見えません

public void highlightBlockTest(BoardCoordinate bc) { 
    Log.i("highlightBlock()", "entered."); 

    Point p = new Point(bc.getPuzzlePiece().getDestination()); 
    Rect rect = getBoardCoordinateRectFromPoint(p); 

    int x = rect.getX(); 
    int y = rect.getY(); 
    int w = rect.getWidth(); 
    int h = rect.getHeight(); 

    Entity e = new Entity(0, 0); 
    Rectangle r; 

    r = new Rectangle(x, y, w, 5); 
    e.attachChild(r); 
    r = new Rectangle(x, y, 5, h); 
    e.attachChild(r); 
    r = new Rectangle(x + w - 5, y, 5, h); 
    e.attachChild(r); 
    r = new Rectangle(x, y + h - 5, w, 5); 
    e.attachChild(r); 

    SequenceEntityModifier sem = new SequenceEntityModifier(
     new DelayModifier(1f), 
     new AlphaModifier(1f, 0.0f, 1.0f, new IEntityModifierListener() { 
     @Override 
     public void onModifierStarted(IModifier<IEntity> arg0, IEntity arg1) { 
      System.out.println("Alpha start!"); 
     } 

     @Override 
     public void onModifierFinished(IModifier<IEntity> arg0, IEntity arg1) { 
      System.out.println("Alpha stop!"); 
     } 
     }) 
); 

    e.registerEntityModifier(sem); 
    this.mScene.attachChild(e); 

    return; 
} 

はこのことを考えてみましょう。矩形はすべて描画されますが、AlphaModifierはその値を問題のエンティティに適用しません。 DelayModifierは正常に動作します。

ModifierListenerを追加して、呼び出されたかどうかを確認しました。私はLogcatで "Alpha start"と "Alpha stop"を見ています。しかし、ハイライトされた矩形はまだそこにあり、ボード上にはっきりと見える。

最後の手段として、MoveModifierを追加して、5秒間に50ピクセル右に移動し、矩形を瞬時に画面外に移動させました。

これらの修飾語が期待どおりに機能しないのはなぜですか?

答えて

0

ブレンド機能を設定する必要があります。.setBlendFunction(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);をエンティティに呼び出します。

+0

まだ動作していません:/ for(int n = 0; n bos

+0

私はただ1つの矩形を作成し、それをシーンに(エンティティの代わりに、次にエンティティをシーンに)添付すれば、すべてが完全に動作します。したがって、モディファイアは子供には適用されないようです。 10時間以上を無駄にする前に私にこれを伝えるドキュメントがあっただけでしたら、 – bos

+0

問題を解決しましたか? – JohnEye

関連する問題