gpt4 book ai didi

java - 使用 Java KeyEvent 使动画正常工作

转载 作者:行者123 更新时间:2023-12-02 07:47:32 25 4
gpt4 key购买 nike

我无法通过按 d 让我的 Sprite 角色执行 2 个动画帧(link_frame_2 后跟 link_frame_1)。它只执行一个动画帧(link_frame_2_face_right.png)。

代码如下:

import java.awt.Point;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;

import acm.graphics.GImage;
import acm.graphics.GPoint;
import acm.program.GraphicsProgram;


public class LinkGame extends GraphicsProgram {

public void run(){
setSize(APPLICATION_WIDTH, APPLICATION_HEIGHT);
addLink();
addKeyListeners();
addMouseListeners();
}
private void addLink(){
linkCharacter = new GImage("link sprites/link_frame_1_face_right.png");
add(linkCharacter,link_Location_XCoord,link_Location_YCoord);
}
public void keyPressed(KeyEvent e){
char linkMoveRightKey = e.getKeyChar();
if(linkMoveRightKey == 'd'){
// y should not change so goku moves in a straight line
link_Location_YCoord = 0;
linkCharacter.move(link_Location_XCoord,link_Location_YCoord);
set_Link_Anim_Frame_2_face_left();
}
}
public void set_Link_Anim_Frame_2_face_left(){
linkCharacter.setImage("link sprites/link_frame_2_face_right.png");
}
public void set_Link_Anim_Frame_1_face_left(){
linkCharacter.setImage("link sprites/link_frame_1_face_right.png");
}
private GImage linkCharacter;
private int link_Location_XCoord = 50;
private int link_Location_YCoord = 50 ;
private final int APPLICATION_WIDTH = 600;
private final int APPLICATION_HEIGHT = 600;
}

最佳答案

目前显示的帧不会随着您的移动而更新。如果您使用图像数组并循环播放,那么您的动画中将可以有任何数字。我已在下面提供了您的代码的更新,以便您可以尝试一下。我添加了速度,而不是使用运动的初始位置,因此您可以独立更改这两个值。此外,移动速度较慢可以让您更容易看到帧的变化。

import java.awt.event.KeyEvent;

import acm.graphics.GImage;
import acm.program.GraphicsProgram;

public class LinkGame extends GraphicsProgram {

public void run(){
setSize(APPLICATION_WIDTH, APPLICATION_HEIGHT);
addLink();
addKeyListeners();
addMouseListeners();
}

private void addLink(){
linkCharacter = new GImage("link sprites/link_frame_1_face_right.png");
add(linkCharacter,link_Location_XCoord,link_Location_YCoord);
}

public void keyPressed(KeyEvent e){
char linkMoveRightKey = e.getKeyChar();
if(linkMoveRightKey == 'd'){
linkCharacter.move(xSpeed,ySpeed);
linkCharacter.setImage(images[frame]);
frame++;
if(frame>=images.length){
frame = 0;
}
}
}
private GImage linkCharacter;
private int link_Location_XCoord = 50;
private int link_Location_YCoord = 50 ;
private final int APPLICATION_WIDTH = 600;
private final int APPLICATION_HEIGHT = 600;
private String[] images = {"link sprites/link_frame_1_face_right.png","link sprites/link_frame_2_face_right.png"}; //Add in as many images as you want for your animation
private int frame = 0;
private int xSpeed = 1; //the number of pixels to move in x
private int ySpeed = 0; //0 so you only move horizontally
}

关于java - 使用 Java KeyEvent 使动画正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10628702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com