私はボードゲームを作っていますが、今は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ピクセル移動し、長方形を画面から瞬時に移動しました。
これらの修飾子が期待どおりに機能しないのはなぜですか?