【发布时间】:2014-03-18 05:08:25
【问题描述】:
更新:为了让我的问题更清楚:我应该如何构建循环,以确保在上一次迭代的动画结束之前不会发生下一次迭代?
所以我对在 android 中使用动画还是很陌生。我有一个简单的动画,每次使用 placeTile 方法放置瓷砖时都会运行。
代码如下:
public void setUpPlayers(){
//Toast for setting turn order
smallToast(getResources().getString(R.string.deciding_turn_order));
for (int i = 0; i < players.length; i++) {
if(i == 0){
players[i] = new Player("HUMAN", 6000);
players[i].setType(Player.Type.HUMAN);
} else {
players[i] = new Player(playerNames[i], 6000);
players[i].setType(Player.Type.COMPUTER);
}
players[i].drawTile(1);
TextView nameText = (TextView) findViewById(R.id.current_player_text);
nameText.setText(players[i].getName());
//find the ID for the tile just placed
String tileID = players[i].findTileIdByIndex(0);
placeTile(tileID, i); //Tile ID being placed, and the index of the player placing it
}
}
我遇到的问题是,我希望循环在之前放置的图块的动画完成之前不执行下一次迭代。我怎样才能做到这一点?我知道通常您必须设置一个 AnimationLister 并等待动画完成,但我不确定如何去做,因为 A)动画是放置的 Tile 的一部分并且具有私有范围,并且 B)循环想要立即执行。如何使用监听器“保持”循环?
我想到的一个想法是将setUpPlayers()方法重新构造为递归算法,并且每次迭代都会调用动画,但是方法的迭代是在AnimationListener内部调用的。不过,递归算法似乎有点矫枉过正。有什么想法吗?实现这一目标的最佳、最简单的方法是什么?
提前致谢,
JRad 坏人
【问题讨论】:
-
您的最小 sdk 要求是多少?