`
NewTamato
  • 浏览: 101508 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

java游戏编程5

阅读更多
事件处理


  鼠标监听技术

玩游戏时,不管是小型的扑克牌和大型的RPG游戏,都要参与者溶入到游戏的角色当中。不错,交互,游戏有了交互的功能才可以说是一个完整的游戏。即使是编程游戏如机器人足球,Robocode都要程序员参与编写代码,观察比赛。有两种主流方法可实现游戏的交互:鼠标和键盘。当然还包括手操杆等,但现在大部分Pc机上使用的还是鼠标和键盘。我们就以这两项为基础来说明游戏中事件的响应过程。

  要判断相应的鼠标所进行的动作:是点击,还是移动。我们必须对我们鼠标进行监听。要监听鼠标事件就必须调用这些接口之一,或扩展一个鼠标适配器(mouse adapters) 类. AWT 提供了两种监听接口(listener interface): java.awt.event.MouseListener 和 java.awt.event.MouseMotionListener.

  现在我设计一个鼠标事件,当点击applet屏幕时,下降的球向反方向运动。以实现了对游戏的简单控制。

  MouseListener一共有5个方法,主要用来实现鼠标的点击事件。这里要注意一点:由于MouseListener是接口我们要在实现的类中重载它的所有方法.

  Mouse点击事件

   · mousePressed() 当用户按下鼠标按钮时发生.

   · mouseReleased() 当用户松开鼠标按钮时发生.

   · mouseClicked() 当用户按下并松开鼠标按钮时发生. 用户在选择或双击图标的时候通常会点击鼠标按钮. 用户如果在松开鼠标之前移动鼠标,点击不会导致鼠标相应事件出现.

   · 因为点击鼠标是按下鼠标和松开鼠标的结合, 在事件分配给 mouseClicked() 方法之前, mousePressed() 和 mouseReleased() 方法已同时被调用.

  鼠标状态处理:

   mouseEntered() 当鼠标离开当前组件并进入你所监听的组件时激活事件.

   mouseExited() 当鼠标离开你所监听的组件时发生.

  Mouse 移动事件

  鼠标移动主要通过接口MouseMotionListener来实现:

   mouseDragged() 当用户按下鼠标按钮并在松开之前进行移动时发生.在mouseDragged() 后松开鼠标不会导致mouseClicked().

   mouseMoved() 当鼠标在组件上移动而 不时拖动时发生.

  依据我们的游戏设计,我们在这要使用到MouseListener接口。实现接口后。我们要在init()函数加入监听器addMouseLisener(),来监听对applet的响应事件。

  知道了鼠标事件的处理,我们再来回顾一下上面提到的球反弹设计,现在我们要如何处理了球的控制呢?让我们想一想,不错,可能你已经发现了,我们照样可通过改变speed方向来实现回弹控制操作。在mousePressed(){}事件中加入下面的代码,我们的回弹控制就设计完成。

speed = -4


  记得在释放applet资源时,我们要释放mouseListener资源。在destory()中加入

removeMouseListener(this);

  可能有些朋友会使用mouseDown()方法,mouseDown()在此我建议大家不要再使用这个方法了,它已经是被淘汰的产品。是为了兼容JDK1.0而带到JDK1.4中来的。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics