我想对遍历X次的令牌进行动画处理。
在这种情况下,X是骰子上滚动的数字。
例如,如果玩家掷出3,我希望看到标记“移动”到下一个图块,然后在400ms之后到下一个图块,然后在400ms之后到最后一个图块。
我尝试使用TTimer
,它可以使动画效果很好,但是它不会使令牌停在右侧图块上。使用for
循环会导致令牌最终出现在右侧图块上,但没有动画。我只希望TTimer
重复X次。 :)
我的代码如下(使用Delphi 2010):
对于For循环:
for i := 1 to iNum + 1 do // iNum is the number rolled
player1.Left := player1.Left + 200; // player1 is the token`
对于TTimer:
procedure TfrmSnakesNLadders.tmrMoveTimer(Sender: TObject);
begin
player1.Left := player1.Left + 200;
if player1.Left >= 850 then // 850 is the Rightmost Boundary of the token
tmrMove.Enabled := false;
end;
答案 0 :(得分:1)
您没有向我们展示如何初始化player1.right,但是它看起来像是边界条件错误,即您的850值不应该是850。但是要滚动x次,请初始化类变量并对其进行计数。像这样:
class TfrmSnakesNLadders = class( Form )
….
private
fNum : integer
….
然后初始化并启动计时器,类似
….
procedure TfrmSnakesNLadders.InitMove;
begin
fNum := 0;
tmrMove.Enabled := true;
end;
然后为您的计时器设置动画
procedure TfrmSnakesNLadders.tmrMoveTimer(Sender: TObject);
begin
player1.Left := player1.Left + 200;
inc( fNum);
if fNum >= iNum then
tmrMove.Enabled := false;
end;