我想做一个简单的2D游戏。现在,我想做的所有事情都是显示我的精灵表中的单个精灵(播放器)。因此,我的主类扩展了javafx.application。应用程序
,我想在上面展示一个舞台和一个播放器。
玩家类包含一个数组,其中包含我从精灵表中获得的单个精灵,方法为.getSubimage
。为了在舞台上显示某些内容,您需要一个场景来容纳要显示的对象的组
或StackPane
。因此,我尝试将我的播放器添加到场景中,方法是将其附加到StackPane中,称为entityities.getChildren().add(player)
的实体。这是行不通的。
我不太熟悉使用阶段等。从“应用程序”扩展我的游戏是错误的方式吗?我如何将自定义对象添加到场景中?
主要类别:
public class Sokobencho extends Application {
private int height = 96;
private int width = 144;
private int scale = 4;
private Player player;
private StackPane entities;
public Stage stage;
public Sokobencho() throws IOException {
player = new Player("res/", 0);
}
public void start(Stage stage) throws Exception {
loadEntities();
Scene scene = new Scene(entities, width*scale, height*scale);
stage.setTitle("Sokobencho by Daniel Welzel");
stage.setScene(scene);
stage.show();
}
public void loadEntities() {
entities.getChildren().add(player);
}
public static void main(String[] args) throws Exception {
launch(args);
}
}
玩家等级:
public class Player extends Moveable {
private int posX;
private int posY;
private Spritesheet spritesheet;
private BufferedImage sprite;
public Player(String filePath, int spriteNumber) throws IOException {
spritesheet = new Spritesheet(filePath, 16, 16, 10, 10);
getSprite(spriteNumber);
}
public void getSprite(int i) {
sprite = spritesheet.getSprite(i);
}
public void moveTo(int newX, int newY) {
posX = newX;
posY = newY;
}
}
如果你想知道我如何处理精灵表:
public Spritesheet(String filepath, int spriteWidth, int spriteHeight, int spriteRows, int spriteCols) throws IOException {
filePath = filepath;
rows = spriteRows;
cols = spriteCols;
width = spriteWidth;
height = spriteHeight;
sprites = new BufferedImage[rows * cols];
createSprites();
}
public void createSprites() throws IOException {
spritesheet = ImageIO.read(new File(filePath));
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
sprites[(i * cols) + j] = spritesheet.getSubimage(
j * width,
i * height,
width,
height
);
}
}
}
public BufferedImage getSprite(int number) {
return sprites[number];
}
}
抽象类可移动:
public abstract class Moveable {
private int posX;
private int posY;
private BufferedImage sprite;
public void getSprite(int x,int y) {
}
public void moveTo(int newX, int newY) {
}
}
只能将< code>Node子类添加到场景图形中。
我将在您的< code>Player类中公开一个< code > Java FX . scene . image . image 。(您可以选择专门使用这些,而不是< code>BufferedImage,或者使用< code>SwingFXUtils.toFXImage(...)代码中的某个地方。)
所以这看起来会像
public class Player {
//existing code...
public Image getSprite() {
return ... ;
}
}
然后你可以做
entities.getChildren().add(new ImageView(player.getSprite()));
我想创建一个对象动态,例如在JavaFX中的一个圆。我的代码会像这样。 我现在的问题是如何增加每个圆的独特性。例如,如果我要添加每个圆的不同颜色和大小。我该如何实现呢?请帮忙。
问题内容: 我是Java的初学者,正在尝试创建自定义类的数组。假设我有一个名为car的类,并且我想创建一组称为Garage的汽车。如何将每辆车添加到车库?这就是我得到的: 问题答案: 如果要使用数组,则必须保留一个包含车库中汽车数量的计数器。最好使用而不是数组:
我有一个HashMap,我试着按它的值(从大到小)排序。我想要一个新的Map对象,它是新排序的哈希映射的克隆(或者直接对哈希映射本身排序的方法)。以下是我的代码: 问题是输出是原始哈希图的输出,而不是排序哈希图的输出。如果有人能帮助我,将不胜感激! 编辑:我使用LinkedHashMap修改了当前代码。
我有一个Employee类有2个属性id和name。我正在重写hashcode和equals方法,如下所示。 Employee.java: 现在我有了一个测试类,我正在创建一个名为“Chris Gayle”的employee类的对象,并将其添加到HashSet中。之后,我将这个现有的employee对象的名称修改为“Kieron Pollard”,并将这个修改后的employee对象再次添加到Ha
我是JavaFX新手。我想与我的场景互动 例如:当我单击一个按钮时,我添加了一个新按钮,Textfield。。在里面。然而,我搜索了一下,却没有找到满意的答案! 我的fxml文件: 我的控制器: }
第一次使用JavaFX,所以我对/方法有一个问题。我在做一个弹跳球项目。首先,我使用对象创建球,但由于需要传递更多参数,我决定构建自己的球类()。这是我以前使用时使用的代码: 当将和和放入中时,就会使“球”弹出墙壁。现在,我正试图弄清楚如何使用ball来实现这一点,因为在使用我自己的对象时,无法解析、和方法。如何处理这个/构建自己的等?