小编Lig*_*ing的帖子

JavaFx 2.0块游戏动画/代码设计

为了保持自己的编码技能,我最近使用JavaFx 2.0在Java中构建了这个游戏版本(Block blaster).因为它只是为了我的利益而没有真正想到软件模式或设计所以所有的游戏逻辑最终都在GUI类中,随着我添加的功能变得越来越臃肿.我最终决定重构代码库,将游戏逻辑和模型与表示(GUI)分开.

经过一些研究后,我决定使用像MVC或MVP这样的东西.在这样做的过程中,我决定动画(阻止在游戏时向上滑动游戏网格,阻止从游戏中移除时闪烁等等)是视图层的一部分.

这导致的问题是,当用户启动一个块并且控制器告诉视图移动块时,它会timeline为动画和调用创建JavaFx timeline.play().这样做不会导致程序流在动画发生时在视图中暂停,因此视图方法返回刚刚启动动画,这意味着控制器然后继续检查以查看该块是否已创建一组块如果是这样,在移动动画到达任何地方之前移除它们.

在旧的(令人讨厌的)实现中,我使用它timeline.onFinish来调用块组检查动画完成但是timeline现在在视图中和控制器中的检查功能我不知道如何将它放在我的新设计中.

有没有办法等待JavaFx动画完成(没有睡眠应用程序线程)或者我应该使用哪种设计模式有助于避免这些问题?

控制器代码

public void fire()
{   
    //Get the current column the launcher is in.
    int x = launcher.getX(), startY = launcher.getY();
    //Find the next available block in the column.
    int endY;
    for(endY = h; endY > 0 && blockMap[endY - 1][x] == null; endY--){}

    //Create a new block of the same colour and location as that on the launcher.
    addBlock(x, launcher.getY(), getCurrentColourAndRotate());
    //Move the …
Run Code Online (Sandbox Code Playgroud)

design-patterns javafx-2

4
推荐指数
1
解决办法
1117
查看次数

标签 统计

design-patterns ×1

javafx-2 ×1