快速业务通道

创建Eclipse游戏插件,第3部分: 启动游戏 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
W_RIGHT:        game.moveGun(true, false, false, false);        break;      case SWT.PAGE_UP: ...

创建Eclipse游戏插件,第3部分: 启动游戏(5)

时间:2011-02-10 IBM Tyler Anderson

在这里,我们调用 moveGun 方法。这个方法调用 Gun 类的 move 方法,设置一个布尔值,表示**的移动方向。然后,处理 keyReleased 事件,如清单 11 所示。

清单 11. 处理 keyReleased 事件

public void keyReleased(KeyEvent e) {      switch (e.keyCode) {      case SWT.ARROW_UP:      case SWT.ARROW_DOWN:      case SWT.ARROW_LEFT:      case SWT.ARROW_RIGHT:        game.moveGun(false, false, false, false);        break;      }    }

现在,在释放键的时候,枪的方向会被清除。

下面,把需要的方法添加到 GameScene 类和 Gun 类。

添加钩子到 Gun 类

在枪移动时,事件通知被发送到 keyEvent 侦听器。在第 2 部分的实现中,SceneGrip 类是处理这些事件的侦听器。所以,在按下方向键时,SceneGrip 调用 GameScene 类的 moveGun 方法。请定义这个 moveGun 方法,如清单 12 所示。

清单 12. 移动枪

...    public void moveGun(boolean movingPosX, boolean movingPosY,              boolean movingNegX, boolean movingNegY){      gun.move(movingPosX, movingPosY, movingNegX, movingNegY);    }

我们只是把布尔变量传递给 Gun 类的 move 方法。现在把 move 方法添加到**,如清单 13 中的代码所示。

清单 13. 把移动方向添加到 Gun 类

private boolean movingPosX;      private boolean movingPosY;      private boolean movingNegX;      private boolean movingNegY;      public void move(boolean movingPosX, boolean movingPosY,               boolean movingNegX, boolean movingNegY){        this.movingPosX = movingPosX;        this.movingPosY = movingPosY;        this.movingNegX = movingNegX;        this.movingNegY = movingNegY;      }

用布尔值表示枪的当前移动方向,并把它们保存在 Gun 类本地留作后用。

有了枪的方向之后,枪的移动就可以实现动画效果了。

创建Eclipse游戏插件,第3部分: 启动游戏(6)

时间:2011-02-10 IBM Tyler Anderson

动画实现枪的移动

现在我们知道了枪要移动的方向,可以用 TimerTask 实现移动,做出动画效果,如清单 14 所示。

清单 14. 移动枪

public Gun(float ox, float oy, float oz) {        this.ox = ox;        this.oy = oy;        this.oz = oz;        translationy = 0;        translationx = 0;        movingPosX = false;        movingPosY = false;        movingNegX = false;        movingNegY = false;        t = new Timer();        tt = new TimerTask(){          float max = 10;          float delta = 0.01f;          public void run(){            if(movingPosY)              translationy += delta;            if(movingPosX)              translationx += delta;            if(movingNegY)              translationy -= delta;            if(movingNegX)      

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号