快速业务通道

创建Eclipse游戏插件,第2部分: 构建和发射BB枪 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
1-02-10 IBM Tyler Anderson

使用计时器进行动画处理

在 BB 弹创建之后,需要设置并初始化计时器。计时器每隔 x 毫秒更新一次 translation 变量。请完成 shoot 方法的定义,如清单 25 所示。

清单 25. 使用计时器

...          GL.glEnd();        GL.glEndList();        tt = new TimerTask(){          public void run(){            translation-=0.1;            if(translation < -100){              GL.glNewList(Bullet.this.getListIndex(),                     GL.GL_COMPILE);              GL.glEndList();              cancel();            }          }          public boolean cancel(){            boolean cancelled = super.cancel();            fired = false;            return cancelled;          }        };        t.scheduleAtFixedRate(tt, 0, 2);      }

TimerTask 对象有两个重要的方法:run 和 cancel。run 方法由 Timer 对象每隔 2 毫秒调用一次。这个方法每次从 translation 中减去 0.1,如果 translation 值低于 100(代表它已经打空了),那么 BB 弹消失并取消 TimerTask。布尔变量 fired 设置为 false,计时器退出执行。最后一行把 TimerTask 对象的 run 方法指定为每 2 毫秒调用一次。

通过转换处理 BB 弹射击的动画

现在在 translation 变量变化的时候,需要更新 BB 的位置。请重载 bullet 类的 draw 方法来做这个工作,如清单 26 所示。

清单 26. 用 translation 变量处理动画

public void draw(){        if(translation >= -100){          GL.glTranslatef(0, 0, translation);          super.draw();          GL.glTranslatef(0, 0, -translation);        }      }

只要 translation 变量在可接受的范围内,BB 的原点就根据 translation 变量值指定的量进行转换。下面,我们把 shoot 方法添加到 GameScene 类。

添加 BB 枪射击的公共钩子

同样,像虫子爆炸一样,需要允许 SceneGrip 类利用 BB 射击的功能。请在 GameScene 类中创建 shoot 方法,就在 dispose 方法之后,如清单 27 所示。

清单 27. 把 shoot 方法添加到 GameScene 类

public void shoot(){      for(int i = 0; i < bullets.length; i++)        if(!bullets[i].fired){          bullets[i].shoot();          break;        }    }

这个方法查找没有发射的 BB 对象,如果发现,就发射。然后这个方法以 break 语句结束。下面,我们向开关语句中添加空格键,作为触发按钮。

创建Eclipse游戏插件,第2部分: 构建和发射BB枪(17)

时间:2011-02-10 IBM Tyler Anderson

修改键盘事件处理函数

需要的最后一个钩子是捕获从 OpenGL 画布按下的空格键。一旦按下空格键,就捕获这个事件,并调用 GameScene 类的 shoot 方法,它发射 BB 弹。捕获这个事件的代码如清单 28 所示。

清单 28. 用空格键作为触发按钮

...      case 100: // d        game.disappearBug(0);        break;      case 32: // space bar         game.shoot();        break; ...

现在看看发射的 BB 弹,如图 9 所示。

图 9. 射击 BB 弹

看看这些 BB 弹的效果!

有没有注意到动画的平滑效果?感谢从 Eclipse 示例插件整合到这个插件中的框架,许多用

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号