我要重新张贴此questione再次试图更准确,希望我会得到一些帮助,因为这是推动我疯了。 我正在开发一个棋盘游戏多达6个的球员,每个人有不同颜色的棋子。 我有一个是在BufferedImage的阵列将它视为精灵加载以下图片:
并且这是相对码,将每个彩色骰子的每面中的位置在的BufferedImage []:
private BufferedImage[] initAnimationBuffer() {
BufferedImage[] result = new BufferedImage[36];
for (int i = 0; i < 6; i++) {
for (int j = i; j < 6 + i; j++)
result[i + j] = DieSprite.getSprite(j, i, 0);
}
return result;
}
然后每个玩家,根据他的颜色,港岛线也有根据所获得的模值/位置包含他颜色的面下面的矩阵。 换句话说,这矩阵包含图像的“线”,它是由索引值:
private BufferedImage[][] initExactDieFaces() {
BufferedImage[][] result = new BufferedImage[6][1];
int row = -1;
String myColor = this.coreGame.getMyPartecipant().getColor();
if (myColor.equals(Constants.COLOR[0])) {
row = 0;
} else if (myColor.equals(Constants.COLOR[1])) {
row = 2;
} else if (myColor.equals(Constants.COLOR[2])) {
row = 4;
} else if (myColor.equals(Constants.COLOR[3])) {
row = 1;
} else if (myColor.equals(Constants.COLOR[4])) {
row = 5;
} else if (myColor.equals(Constants.COLOR[5])) {
row = 3;
}
int offset = 0;
for (int i = 0; i < 6; i++) {
result[i][0] = DieSprite.getSprite(row, i, offset);
offset += 2;
}
return result;
}
我想是以下内容: - 当“倒装管芯”按钮被按下时,我想的是(例如)示出的20个随机模面在一特定的JLabel(它们应该被从所述第一阵列,AnimationBuffer采取)一个JPanel内部-as一旦前面的动画完成后,我想的是,获得的发射管芯的的结果示(根据颜色的棋子,从ExcatDieFaces截取)。
为了得到这个我知道,我需要摆动计时器,但我不能把它放在一起; 这里的startAnimationDie方法当按下“翻转芯片”按钮,这就是所谓的一些代码:
private void startAnimationDie(final JPanel dieContainer) {
final BufferedImage[] animationBuffer = initAnimationBuffer();
final BufferedImage[][] exactDieFaces = initExactDieFaces();
final AnimationSprite animation = new AnimationSprite(
animationBuffer, Constants.DIE_ANIMATION_SPEED);
/* getting launch value fromt the core Game */
int launchResult = coreGame.launchDie();
coreGame.getMyPartecipant().setLastLaunch(launchResult);
final Timer timer = new Timer(250, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dieContainer.removeAll();
dieContainer.updateUI();
animation.start();
JLabel resultDie = new JLabel();
resultDie.setBounds(60, 265, Constants.DIE_SIZE,Constants.DIE_SIZE);
resultDie.setIcon(new ImageIcon(animationBuffer[new Random().nextInt(36)]));
dieContainer.add(resultDie);
dieContainer.updateUI();
updateUI();
repaint();
}
});
/* animation begins, rolling faces are shown each time the Timer ends*/
for(int i = 0; i<20; i++)
timer.start()
/* showing the final face according to the pawn color and the obtained result from the launch */
dieContainer.removeAll();
dieContainer.updateUI();
AnimationSprite resultAnimation = new AnimationSprite(exactDieFaces[launchResult - 1], 6);
resultAnimation.start();
resultAnimation.update();
resultDie.setIcon(new ImageIcon(exactDieFaces[launchResult - 1][0]));
resultDie.setBounds(60, 265, Constants.DIE_SIZE, Constants.DIE_SIZE);
dieContainer.add(resultDie);
dieContainer.updateUI();
dieContainer.repaint();
}
我怎样才能使它发挥作用? 我想我应该使用Swing.invokeAndWait但我不能放在一起的所有作品...你能帮忙吗?