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()-手指离开屏幕后调用。
分享到:
相关推荐
5. **Input Handling**:AndEngine处理触摸和传感器输入,让开发者可以轻松响应用户的交互。 6. **Audio**:音频管理模块使得在游戏中添加背景音乐和音效变得简单。 7. **Extension Modules**:AndEngine有一些...
通过分析和学习这个源码,你可以了解到AndEngine的游戏对象创建、事件处理、动画制作以及如何实现复杂的逻辑算法。对于想要提升AndEngine使用技能或者对2D游戏开发感兴趣的开发者来说,这是一个很好的实践案例。
9. **触摸事件处理**:它提供了灵活的触摸事件处理机制,可以精确响应用户的触摸操作。 10. **多线程支持**:AndEngine支持在后台线程加载资源,保证游戏运行的流畅性。 11. **教程和社区支持**:AndEngine有一个...
例如,创建场景(Scene),添加精灵(Sprite)和实体(Entity),设置触摸事件,处理物理碰撞等。 5. **调试与优化**:利用Android Studio的调试工具,对游戏进行测试和优化,确保在不同设备上的表现一致。 6. **发布...
5. **用户输入处理**:通过监听触摸事件,开发者可以控制游戏角色的行为,例如移动、跳跃等。 6. **音频管理**:AndEngine有内置的音频播放支持,可以播放背景音乐和音效,提升游戏体验。 7. **游戏对象的生命周期...
4. **输入处理**:包括触摸屏事件、重力感应器数据等,方便处理用户交互。 四、社区与资源 AndEngine有一个活跃的开发者社区,提供大量的教程、示例代码和插件,帮助开发者解决问题和扩展功能。此外,官方文档详尽...
6. **用户输入处理**:如何响应触摸事件,实现角色移动、跳跃等操作。 7. **音频管理**:包含背景音乐和音效的播放控制。 8. **粒子系统**:展示如何创建和使用粒子效果,如火焰、烟雾、爆炸等。 9. **自定义行为**...
在AndEngine中,开发者可以轻松创建精灵、背景、动画,以及处理碰撞检测和用户输入事件。 二、项目结构 AndEngine TicTacToe项目通常包含以下几个关键部分: 1. **MainActivity**:这是应用程序的入口点,负责...
4. **事件处理和触摸输入**:AndEngine提供了简单的接口用于处理用户触摸事件,如点击、滑动等,方便游戏中的交互设计。 5. **扩展和模块化**:AndEngine支持各种扩展,如粒子系统、地形编辑器、音乐和音效模块,...
AndEngine能有效处理触屏和物理按键输入,包括触摸事件、滑动事件和按键事件。开发者可以轻松响应用户的操作,如移动角色、触发动作等。 八、扩展与模块化 AndEngine支持自定义扩展,例如,你可以添加自定义的...
此外,AndEngine还提供了丰富的事件处理机制,使得游戏与用户交互变得简单。你可以注册触摸监听器,响应用户的点击、滑动等操作。同时,AndEngine还支持音乐和音效的播放,增强游戏体验。 在Leekao这个文件中,可能...
- 使用`InputHandler`和`GestureDetector`来处理用户的触摸输入和手势识别。 - 可以通过注册监听器(如`EntityTouchListener`)来响应游戏对象的触摸事件。 **6. 物理引擎** - AndEngine提供了Box2D物理引擎的扩展...
- **用户交互**:触摸事件处理,例如角色移动、物体拖放等。 - **场景管理**:如何在不同场景间切换,以及如何组织复杂的场景结构。 - **音乐和音效**:加载和播放背景音乐及音效的方法。 - **游戏逻辑**:基本...
AndEngine提供了TouchEvent类来处理触摸事件,你需要覆盖onAreaTouched()方法,以检测用户的触摸动作。 2. **Button的图像处理** - 使用TextureRegion对象来加载和管理Button的图像。你可以使用TextureAtlas或单独...
AndEngine提供了许多特性,包括精灵、纹理 atlases、粒子系统、动画支持、音乐和音效播放、触摸事件处理、相机控制、图层管理、场景管理等。这些工具让开发者能够构建出丰富多样的游戏内容,无论是简单的2D游戏还是...
7. **触摸输入和手势识别扩展**:处理用户的触摸事件,识别滑动、点击等手势,增加交互性。 8. **优化和性能扩展**:提供了一些优化工具和技巧,帮助开发者提高游戏运行效率,减少内存消耗。 在压缩包中的"libs...
3. **用户交互**:玩家通过触摸屏发射子弹,AndEngine提供了触控事件处理机制,可以轻松实现手指触摸与游戏行为的绑定。 4. **资源管理**:游戏中有大量的图像、音频资源。AndEngine有内置的资源管理器,负责加载、...
3. 事件监听:利用TouchListener和InputMultiplexer进行触摸事件的处理,实现玩家与游戏的交互。 五、扩展与优化 1. 物理引擎:AndEngine提供了Box2D扩展,可以轻松实现物理模拟,如碰撞检测和重力效果。 2. 音效与...
4. 动画与交互:利用Animation类制作精灵动画,使用TouchListener监听用户触摸事件,实现游戏交互。 5. 更新与渲染:Engine会自动处理更新和渲染任务,开发者只需在相应回调方法中编写逻辑。 五、物理引擎 ...
AndEngine支持多点触摸事件处理,这对于创建互动性强的游戏至关重要。在Android系统中,每个触摸事件都由一个`MotionEvent`对象表示,包括按下、移动和释放等动作。 1. 注册触摸事件监听器:你需要为场景注册一个`...