`
totoxian
  • 浏览: 1075772 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

andengine -3-处理触摸事件

 
阅读更多

l使用场景触摸监听:

我会解释如何使用触摸监听

·首先,应当实现IOnSceneTouchListener接口

·然后检查事件动作。

@Override

publicbooleanonSceneTouchEvent(ScenepScene,finalTouchEventpSceneTouchEvent)

{

if(pSceneTouchEvent.isActionDown())

{

//executeaction.

}

returnfalse;

}

最后,注册到场景:

scene.setOnSceneTouchListener(this);

l创建左/右按钮

在大多数游戏中,你都要控制某个对象。所以控制器显得有必要。在这个例子中,我会展示如何创建左/右按钮(控制主角左/右移动)

1.创建按钮

本例使用矩形实体(RectangleEntity)简单明了。当然你可以使用任何其他实体如Sprite或AnimatedSprite。

按钮会被关联到HUD

privatevoidcreateControllers()

{

HUDyourHud=newHUD();

finalRectangleleft=newRectangle(20,200,60,60,vbo)

{

publicbooleanonAreaTouched(TouchEventtouchEvent,floatX,floatY)

{

if(touchEvent.isActionUp())

{

//moveplayerleft

}

returntrue;

};

};

finalRectangleright=newRectangle(100,200,60,60,vbo)

{

publicbooleanonAreaTouched(TouchEventtouchEvent,floatX,floatY)

{

if(touchEvent.isActionUp())

{

//moveplayerright

}

returntrue;

};

};

//可见,实际接受触摸事件消息的是场景!

yourHud.registerTouchArea(left);

yourHud.registerTouchArea(right);

yourHud.attachChild(left);

yourHud.attachChild(right);

camera.setHUD(yourHud);

}

首先,创建一个HUD,然后,两个矩形,重写矩形实体的onAreaTouched以便能处理事件,在场景中注册响应区域,最后把实体加到场景中。别忘了调用Camera的setHUD。

l处理安卓的原生按键消息(nativekey)

在开发应用时候,处理按键消息也很重要。有几个要记住,这是我的观点:

(注:这个属于AndroidFramework层)

1.重写方法:

首先,应该重写onKeyDown方法,该方法会捕获电话的回退键。

@Override

publicbooleanonKeyDown(intkeyCode,KeyEventevent)

{

if(keyCode==KeyEvent.KEYCODE_BACK)

{

//performyouractons.

}

returnfalse;

}

2.处理不同的按键

显然,会有很多不同的按键消息,重要的有:

·KeyEvent.KEYCODE_HOME

·KeyEvent.KEYCODE_BACK

·KeyEvent.KEYCODE_MENU

值得一提的是,在有些设备上,没有特定的键,像我的平板就没有Menu键。

3.仔细思考

我强烈不建议重写系统的HOME/BACK键,因为需要返回前一个APP,另一个重要因素是:在GooglePlayStore团队为应用排位时也会考虑这个因素。(注:不太了解)

l捕获连续的触屏事件

本文讲述如何简单,快速,正确捕获连续触屏事件。

假如有一个精灵,需要连续地执行某一动作(如,在X轴上给玩家力来作移动),这里,我使用矩形实体。

1.可能的解法

有两个办法,分别介绍:

finalRectanglebutton=newRectangle(0,0,100,100,vbo)

{

@Override

publicbooleanonAreaTouched(TouchEventpSceneTouchEvent,floatpTouchAreaLocalX,floatpTouchAreaLocalY)

{

if(pSceneTouchEvent.isActionMove())

{

//Handleyouractionhere

}

returntrue;

}

};

如上,重写onAreaTouched方法并捕获isActionMove。这是个好办法,因为你手指按下时随着手指移动,即使是一,两个像素也会获得连续的移动事件,但并不完美。所以有更好的解法:

//ourflag

privatebooleanisTouchedFlag=false;

//ourbutton

finalRectanglebutton=newRectangle(0,0,100,100,vbo)

{

@Override

publicbooleanonAreaTouched(TouchEventpSceneTouchEvent,floatpTouchAreaLocalX,floatpTouchAreaLocalY)

{

if(pSceneTouchEvent.isActionDown())

{

isTouchedFlag=true;

}

if(pSceneTouchEvent.isActionUp())

{

isTouchedFlag=false;

}

returntrue;

}

@Override

protectedvoidonManagedUpdate(floatpSecondsElapsed)

{

if(isTouchedFlag)

{

//Executeyouractions.

}

super.onManagedUpdate(pSecondsElapsed);

}

};

这个办法使用了Updatehandler总是有效,因为:

·首先,声明一个布尔标志来存储按钮状态。

·使用Rectangle声明一个按钮。

·重写onAreaTouched方法捕获事件.

·如果是isActionDown按下,设置标志为True(触屏开始)

·如果是isActionUp抬起设置标志为false(释放)

·这次我们重写onManageUpdate检查标志是否为True,如果是则在循环中执行我们的要做的事。

l捕获长时点击(LongClick)

按着不放这个事件很容易实现,因为AE已经内置这个功能了

长时点击在界面中很有用,下面代码展示如何在场景中实现这个功能:

·首先,必须实现IHoldDetectorListener接口,重写下面三个未实现的方法:

@Override

publicvoidonHoldStarted(HoldDetectorpHoldDetector,intpPointerID,floatpHoldX,floatpHoldY)

{

}

@Override

publicvoidonHold(HoldDetectorpHoldDetector,longpHoldTimeMilliseconds,intpPointerID,floatpHoldX,floatpHoldY)

{

}

@Override

publicvoidonHoldFinished(HoldDetectorpHoldDetector,longpHoldTimeMilliseconds,intpPointerID,floatpHoldX,floatpHoldY)

{

}

·声明一个ContinousHoldDetector对象

privateContinuousHoldDetectorcontinuousHoldDetector;

·初始化它,并注册到场景。注意,这里使用默认的构造函数,如果要自定义一些参数,你也可以使用带参数的构造函数。

continuousHoldDetector=newContinuousHoldDetector(this);

yourScene.registerUpdateHandler(continuousHoldDetector);

·完成后,你就可以在IHoldDetectorListener接口的实现函数里执行自己的代码了

·onHoldStarted()-手指按住一段时间后调用。

·onHoldFinished()-手指离开屏幕后调用。

分享到:
评论

相关推荐

    AndEngine-GLES2源码

    5. **Input Handling**:AndEngine处理触摸和传感器输入,让开发者可以轻松响应用户的交互。 6. **Audio**:音频管理模块使得在游戏中添加背景音乐和音效变得简单。 7. **Extension Modules**:AndEngine有一些...

    AndEngine-"河內塔"遊戲源碼

    通过分析和学习这个源码,你可以了解到AndEngine的游戏对象创建、事件处理、动画制作以及如何实现复杂的逻辑算法。对于想要提升AndEngine使用技能或者对2D游戏开发感兴趣的开发者来说,这是一个很好的实践案例。

    AndEngine-document.docx.zip_andengine_android

    9. **触摸事件处理**:它提供了灵活的触摸事件处理机制,可以精确响应用户的触摸操作。 10. **多线程支持**:AndEngine支持在后台线程加载资源,保证游戏运行的流畅性。 11. **教程和社区支持**:AndEngine有一个...

    Andengine-Android-Studio:用于游戏引擎的 Android Studio 模块,流行的标题和引擎

    例如,创建场景(Scene),添加精灵(Sprite)和实体(Entity),设置触摸事件,处理物理碰撞等。 5. **调试与优化**:利用Android Studio的调试工具,对游戏进行测试和优化,确保在不同设备上的表现一致。 6. **发布...

    AndEngine游戏-DeliveryBoy-源代码

    5. **用户输入处理**:通过监听触摸事件,开发者可以控制游戏角色的行为,例如移动、跳跃等。 6. **音频管理**:AndEngine有内置的音频播放支持,可以播放背景音乐和音效,提升游戏体验。 7. **游戏对象的生命周期...

    andengine最新源码

    4. **输入处理**:包括触摸屏事件、重力感应器数据等,方便处理用户交互。 四、社区与资源 AndEngine有一个活跃的开发者社区,提供大量的教程、示例代码和插件,帮助开发者解决问题和扩展功能。此外,官方文档详尽...

    AndEngine范例-源码

    6. **用户输入处理**:如何响应触摸事件,实现角色移动、跳跃等操作。 7. **音频管理**:包含背景音乐和音效的播放控制。 8. **粒子系统**:展示如何创建和使用粒子效果,如火焰、烟雾、爆炸等。 9. **自定义行为**...

    AndEngine-TicTacToe:使用 AndEngine 的井字游戏,基于 Leonard Payne 的教程

    在AndEngine中,开发者可以轻松创建精灵、背景、动画,以及处理碰撞检测和用户输入事件。 二、项目结构 AndEngine TicTacToe项目通常包含以下几个关键部分: 1. **MainActivity**:这是应用程序的入口点,负责...

    andengine2.0开发的小游戏

    4. **事件处理和触摸输入**:AndEngine提供了简单的接口用于处理用户触摸事件,如点击、滑动等,方便游戏中的交互设计。 5. **扩展和模块化**:AndEngine支持各种扩展,如粒子系统、地形编辑器、音乐和音效模块,...

    andengine 中文

    AndEngine能有效处理触屏和物理按键输入,包括触摸事件、滑动事件和按键事件。开发者可以轻松响应用户的操作,如移动角色、触发动作等。 八、扩展与模块化 AndEngine支持自定义扩展,例如,你可以添加自定义的...

    AndEngine游戏开发示例

    此外,AndEngine还提供了丰富的事件处理机制,使得游戏与用户交互变得简单。你可以注册触摸监听器,响应用户的点击、滑动等操作。同时,AndEngine还支持音乐和音效的播放,增强游戏体验。 在Leekao这个文件中,可能...

    AndEngine的jar包

    - 使用`InputHandler`和`GestureDetector`来处理用户的触摸输入和手势识别。 - 可以通过注册监听器(如`EntityTouchListener`)来响应游戏对象的触摸事件。 **6. 物理引擎** - AndEngine提供了Box2D物理引擎的扩展...

    AndEngine的官网下载的Demo

    - **用户交互**:触摸事件处理,例如角色移动、物体拖放等。 - **场景管理**:如何在不同场景间切换,以及如何组织复杂的场景结构。 - **音乐和音效**:加载和播放背景音乐及音效的方法。 - **游戏逻辑**:基本...

    AndEngine自定义Button

    AndEngine提供了TouchEvent类来处理触摸事件,你需要覆盖onAreaTouched()方法,以检测用户的触摸动作。 2. **Button的图像处理** - 使用TextureRegion对象来加载和管理Button的图像。你可以使用TextureAtlas或单独...

    AndEngine游戏引擎JAR文件

    AndEngine提供了许多特性,包括精灵、纹理 atlases、粒子系统、动画支持、音乐和音效播放、触摸事件处理、相机控制、图层管理、场景管理等。这些工具让开发者能够构建出丰富多样的游戏内容,无论是简单的2D游戏还是...

    Andengine的jar包

    7. **触摸输入和手势识别扩展**:处理用户的触摸事件,识别滑动、点击等手势,增加交互性。 8. **优化和性能扩展**:提供了一些优化工具和技巧,帮助开发者提高游戏运行效率,减少内存消耗。 在压缩包中的"libs...

    android捕鱼达人-andengine源码

    3. **用户交互**:玩家通过触摸屏发射子弹,AndEngine提供了触控事件处理机制,可以轻松实现手指触摸与游戏行为的绑定。 4. **资源管理**:游戏中有大量的图像、音频资源。AndEngine有内置的资源管理器,负责加载、...

    andEngine > 学习1

    3. 事件监听:利用TouchListener和InputMultiplexer进行触摸事件的处理,实现玩家与游戏的交互。 五、扩展与优化 1. 物理引擎:AndEngine提供了Box2D扩展,可以轻松实现物理模拟,如碰撞检测和重力效果。 2. 音效与...

    AndEngine入门篇

    4. 动画与交互:利用Animation类制作精灵动画,使用TouchListener监听用户触摸事件,实现游戏交互。 5. 更新与渲染:Engine会自动处理更新和渲染任务,开发者只需在相应回调方法中编写逻辑。 五、物理引擎 ...

    AndEngine 例子AnimatedSprites

    AndEngine支持多点触摸事件处理,这对于创建互动性强的游戏至关重要。在Android系统中,每个触摸事件都由一个`MotionEvent`对象表示,包括按下、移动和释放等动作。 1. 注册触摸事件监听器:你需要为场景注册一个`...

Global site tag (gtag.js) - Google Analytics