JavaFX战旗类游戏开发 第五课 定时器的应用
2014-07-31 15:43
225 查看
在上一节课中,我们创建了战旗Demo需要的属性显示菜单和操作菜单。这一节课中,我们将会学习创建自己的定时器以及定时器的应用。
由于在战旗类游戏中,人物都需要逐格逐步移动。所以使用定时器是一个比较好的做法。由于API自身的并不太好控制和重复利用,在这里我们将会自己来写。
这个定时器的功能其实很简单,我们只需要以一定的时间间隔来执行某个代码,并且能随意的控制开始和终止。
代码如下:
public class WTimer {
private OnTimerListener onTimerListener;
private long pTime, lastTime, nowTime;
private boolean isRunning = false;
private WTimer(OnTimerListener onTimerListener) {
this.onTimerListener = onTimerListener;
}
private WTimer(long pTime, OnTimerListener onTimerListener) {
this.pTime = pTime;
this.onTimerListener = onTimerListener;
}
public static WTimer createWTimer(long pTime, OnTimerListener onTimerListener) {
WTimer wTimer = new WTimer(pTime, onTimerListener);
return wTimer;
}
public void start() {
isRunning = true;
lastTime = System.currentTimeMillis();
}
public void update() {
if (isRunning) {
nowTime = System.currentTimeMillis();
if (nowTime - lastTime >= pTime) {
if (onTimerListener != null) {
onTimerListener.onTimerRunning(this);
}
lastTime = nowTime;
}
}
}
public void stop() {
isRunning = false;
}
public interface OnTimerListener {
void onTimerRunning(WTimer mTimer);
}
}
这里通过记录开始时间,然后在update的时候,记录时间差值来判断是否执行。
同样采用的Listener机制来做事件处理。
下面在我们的MainCanvas中定义WTimer:
// 移动的Timer
private WTimer moveTimer;
初始化Timer:
moveTimer = WTimer.createWTimer(50, new WTimer.OnTimerListener() {
@Override
public void onTimerRunning(WTimer mTimer) {
System.out.println("Timer Running");
}
});
最后在Update方法中增加代码:
public void update() {
moveTimer.update();
} 我们可以调用moveTimer.start()来测试一下是否运行正常。
本节中写的Timer,在后续角色移动,敌方回合的时候会用到。
那么这节课就到这里了,下节课我们将会讲解战旗类游戏用广度优先搜索来寻找角色可移动的范围。
本文章为个人原创,版权所有,转载请注明出处:http://blog.csdn.net/ml3947。另外我的个人博客:http://www.wjfxgame.com.
由于在战旗类游戏中,人物都需要逐格逐步移动。所以使用定时器是一个比较好的做法。由于API自身的并不太好控制和重复利用,在这里我们将会自己来写。
这个定时器的功能其实很简单,我们只需要以一定的时间间隔来执行某个代码,并且能随意的控制开始和终止。
代码如下:
public class WTimer {
private OnTimerListener onTimerListener;
private long pTime, lastTime, nowTime;
private boolean isRunning = false;
private WTimer(OnTimerListener onTimerListener) {
this.onTimerListener = onTimerListener;
}
private WTimer(long pTime, OnTimerListener onTimerListener) {
this.pTime = pTime;
this.onTimerListener = onTimerListener;
}
public static WTimer createWTimer(long pTime, OnTimerListener onTimerListener) {
WTimer wTimer = new WTimer(pTime, onTimerListener);
return wTimer;
}
public void start() {
isRunning = true;
lastTime = System.currentTimeMillis();
}
public void update() {
if (isRunning) {
nowTime = System.currentTimeMillis();
if (nowTime - lastTime >= pTime) {
if (onTimerListener != null) {
onTimerListener.onTimerRunning(this);
}
lastTime = nowTime;
}
}
}
public void stop() {
isRunning = false;
}
public interface OnTimerListener {
void onTimerRunning(WTimer mTimer);
}
}
这里通过记录开始时间,然后在update的时候,记录时间差值来判断是否执行。
同样采用的Listener机制来做事件处理。
下面在我们的MainCanvas中定义WTimer:
// 移动的Timer
private WTimer moveTimer;
初始化Timer:
moveTimer = WTimer.createWTimer(50, new WTimer.OnTimerListener() {
@Override
public void onTimerRunning(WTimer mTimer) {
System.out.println("Timer Running");
}
});
最后在Update方法中增加代码:
public void update() {
moveTimer.update();
} 我们可以调用moveTimer.start()来测试一下是否运行正常。
本节中写的Timer,在后续角色移动,敌方回合的时候会用到。
那么这节课就到这里了,下节课我们将会讲解战旗类游戏用广度优先搜索来寻找角色可移动的范围。
本文章为个人原创,版权所有,转载请注明出处:http://blog.csdn.net/ml3947。另外我的个人博客:http://www.wjfxgame.com.
相关文章推荐
- Google Android开发入门与实战 视频教程 源代码 游戏应用开发 传送门
- Windows Phone 7 系列应用和游戏开发内容汇总
- 我与Android的故事之- MM应用市场游戏开发
- iPhone游戏应用开发入门
- J2ME游戏开发学习之游戏开发应用的几个核心技术
- 服务于3G手机的移动游戏应用软件开发环境
- canvas游戏开发学习之四:应用图像
- 阅读笔记-游戏开发中的人工智能-第6章-基本路径寻找及航点应用
- 转载:Amf3+socket开发网络游戏或应用的一点研究心得
- 监听器在游戏开发中的应用----消息回调
- Rectangle对象在游戏开发中的应用2
- Rectangle对象在游戏开发中的应用
- iOS软件开发揭密:iPhone&iPad企业应用和游戏开发(china-pub首发)
- Google Android开发入门与实战 视频教程 源代码 游戏应用开发 传送门
- FLASH 应用以及游戏开发中比较好的思路
- 设计模式在游戏开发中的应用
- Android游戏和应用开发中强制横竖屏引起的程序重新启动问题
- Windows Phone 7 开发 31 日谈——第22日:应用?还是 游戏?
- Android游戏与应用开发最佳学习路线图
- Windows Phone 7 开发 31 日谈——第22日:应用?还是 游戏?