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に「Alphastart」と「Alphastop」が表示されます。しかし、強調表示された長方形はまだそこにあり、ボード上にはっきりと見えます。

最後の手段として、MoveModifierも追加して、長方形を5秒間で右に50ピクセル移動し、長方形を画面から瞬時に移動しました。

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

4

1 に答える 1

0

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

于 2012-04-04T11:09:44.967 に答える