事件监听中的KeyListener的一个问题
……
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
if (e.getKeyCode() == KeyEvent.VK_LEFT
|| e.getKeyCode() == KeyEvent.VK_A) {
boy1.moveLeft();
boy1.direct = 2;
} else if (e.getKeyCode() == KeyEvent.VK_RIGHT
|| e.getKeyCode() == KeyEvent.VK_D) {
boy1.moveRight();
boy1.direct = 3;
} else if (e.getKeyCode() == KeyEvent.VK_UP
|| e.getKeyCode() == KeyEvent.VK_W) {
boy1.moveUp();
boy1.direct = 0;
} else if (e.getKeyCode() == KeyEvent.VK_DOWN
|| e.getKeyCode() == KeyEvent.VK_S) {
boy1.moveDown();
boy1.direct = 1;
}
if (e.getKeyCode() == KeyEvent.VK_SPACE)
{ boy1.trowRolls();}
}
……
这段代码的意思就是,当按下上下左右键时,boy1这个对象分别做出上下左右移动动作,并且方向转向正确的方向。
但是当我继续监听另一个键,如空格键(space),使得boy1这个对象发出另外一种动作,比如抛石头,此时我始终按住的方向键,此时方向键和space键发生阻塞,此时事件监听者,监听到的没有方向键,而监听到的对象是(方向键+space)键,就不会执行上下左右的行为,所以达不到,既要运动又要抛石头的这两个动作。
现在我就是想要做到,既要运动,又要抛石头这两个动作一起发生的效果,求解决方法……
(其实不光是两个动作的阻塞问题。当我们按住方向键,他会运动。但如果按住方向键的同时不小心又按住了另外的键,依然会造成阻塞,停止运动。我希望达到的效果就是其他键对方向键互不影响)
期待您的回复……
- 大小: 36.8 KB
分享到:
相关推荐
在 JavaScript 事件机制中,事件 handler 是一个函数,它会在事件发生时被调用。事件 handler 可以通过多种方式添加到元素上,例如:直接将 JS 代码写在 HTML 上、定义一个函数、使用 element.onXXX 方式、使用 ...
使用addEventListener方法为元素添加事件监听是推荐的方式,因为它允许为同一个元素的同一个事件添加多个监听器,而且不会覆盖之前添加的监听器。而直接在对象上赋值事件处理器的方式则有限制,通常只能绑定一个函数...
C# 事件机制归纳 C# 事件机制是指在 C# 编程语言中实现事件处理的机制,包括委派、事件和事件处理过程。以下是对 C# 事件机制的详细归纳: 一、委派 委派是指一种特殊的方法签名,可以将方法作为参数传递,用于...
Java中的事件机制是Java编程中一个重要的概念,它基于观察者模式(Observer Pattern)来实现对象之间的通信。观察者模式是一种行为设计模式,允许你定义一个订阅机制,可以在对象状态改变时通知多个“观察”该对象的...
在异步机制中,事件是线程之间进行通信的一个非常常用的方式。比如:用户在界面上按下一个按钮,执行某项耗时的任务。程序此时启动一个线程来处理这个任务,用户界面上显示一个进度条指示用户任务执行的状态。这个...
1. 事件捕捉:硬件捕捉到用户的操作,并将其封装成一个事件对象。 2. 事件传递:事件对象被传递给应用程序的活动事件队列中。 3. 事件分发:UIApplication 对象管理应用程序,从事件队列中取出最前面的事件,并将其...
在Java编程语言中,事件处理是图形用户界面(GUI)编程的一个重要组成部分。它允许程序对用户的交互作出响应,如点击按钮、选择菜单项或在文本框中输入文本。Java事件机制基于观察者模式,其中事件源(如按钮)会...
Android事件处理机制
OpenLayers 是一个强大的开源JavaScript库,用于在Web浏览器中创建交互式地图。事件机制是OpenLayers的核心部分,它使得用户与地图进行交互成为可能。在OpenLayers中,事件机制主要涉及到控件(Controls)和处理器...
Java事件处理机制是Java编程中一个关键的概念,它主要用于用户界面(UI)应用程序,使得程序能够响应用户的操作,如点击按钮、选择菜单项等。在Java中,事件处理主要涉及三个核心组件:事件源(Event Source)、事件...
总结来说,"java事件处理机制Demo"是一个关于如何在Java项目中使用观察者模式和事件处理机制的实例,通过学习和实践这个示例,开发者可以更好地理解和掌握这两项核心技术,从而提升程序的交互性和可维护性。
在这一阶段,每个ViewGroup都有机会“拦截”(intercept)事件,决定是否将事件继续传递给子视图。如果ViewGroup的onInterceptTouchEvent()返回true,则表示该ViewGroup拦截了事件,事件进入目标阶段;如果返回false...
关于Android触摸事件机制 关于Android触摸事件机制 关于Android触摸事件机制
它维护了一个事件队列 `__eventQueue`,用于存放待处理的事件,以及一个字典 `__handlers`,用于存储不同类型的事件及其对应的处理函数列表。`EventManager` 使用一个事件处理线程 `__thread` 来不断地从队列中取出...
### Qt中的事件机制详解 #### 一、事件的分类与特性 在Qt中,事件机制是框架的核心之一,用于管理用户界面与用户的交互过程。事件根据其产生方式的不同,可以分为三类:自发事件(Spontaneous events)、发布事件...
例如,如果需要在程序接收到邮件时触发事件,就可以创建一个自定义的事件类,比如DoorEvent,继承自`EventObject`,并定义相应的属性和方法来表示门的状态。同时,需要创建一个监听器接口,比如DoorEventListener,...
本篇文章基于一个关于“事件传递机制和原理”的流程图进行深入解析,旨在帮助开发者更好地掌握事件传递的核心概念与流程。 #### 一、事件传递机制概述 Android中的事件传递主要包括三个关键步骤:分发(dispatch)、...
3. 当事件发生时,事件源创建一个事件对象,并将其传递给相应的监听器。 4. 监听器接收到事件对象后,根据事件类型调用已实现的处理方法,执行相应的操作。 在实际编程中,开发者需要根据需求创建监听器类,实现所...
当一个View接收到事件后,它会先调用`dispatchTouchEvent`方法,决定是否消耗掉这个事件。如果`dispatchTouchEvent`返回true,表示该View处理了事件;如果返回false,则事件会继续向子View传递。如果所有子View都...