我正在制作一个棋盘游戏,但我被困在一个已经让我消磨了 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 开始”和“Alpha 停止”。但是突出显示的矩形仍然存在,在板上清晰可见。
作为最后的手段,我还添加了一个 MoveModifier 以在 5 秒内将矩形向右移动 50 像素,并且矩形瞬间移出屏幕。
为什么这些修饰符没有按预期工作?