Java 安发动机,如何使用触摸屏移动雪碧
我从Andengine开始,当我触摸屏幕(而不是雪碧)时,很难移动雪碧。我真的需要你的帮助,非常感谢 这是我的密码:Java 安发动机,如何使用触摸屏移动雪碧,java,android,andengine,Java,Android,Andengine,我从Andengine开始,当我触摸屏幕(而不是雪碧)时,很难移动雪碧。我真的需要你的帮助,非常感谢 这是我的密码: @Override protected Scene onCreateScene() { final Scene scene = new Scene(); Sprite backgroundSprite = new Sprite(0, 0, this.mBackgroundTextureRegion, getVertexBufferObjectManager
@Override
protected Scene onCreateScene() {
final Scene scene = new Scene();
Sprite backgroundSprite = new Sprite(0, 0, this.mBackgroundTextureRegion, getVertexBufferObjectManager());
scene.attachChild(backgroundSprite);
Carl carl = new Carl(1, 30, 361, this.carl, getVertexBufferObjectManager()){
};
scene.attachChild(carl);
this.mStack1.add(carl);
carl.setmStack(mStack1);
scene.registerTouchArea(carl);
scene.setTouchAreaBindingOnActionDownEnabled(true);
return scene;
}
public boolean onTouchEvent(MotionEvent event, Carl carl) {
carl.setPosition(carl.getX() +2,carl.getY() );
return true;
}
您可以实现
ionscenetouchleener
接口,而不是重写onSceneTouchEvent方法,在该方法中,您可以使用球进行操作
@Override
public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) {
carl.setPosition(carl.getX() +2,carl.getY() );
return false;
}
但是别忘了添加这个scene.setOnSceneTouchListener(这个)代码>到受保护的场景onCreateSecene()
编辑:
这将添加到您的公共场景onCreateSecene(){
也可以使用“移动”修改器上下移动
public class MainActivity extends BaseGameActivity implements IOnSceneTouchListener {
private static final int CAMERA_WIDTH = 800;
private static final int CAMERA_HEIGHT = 480;
private BitmapTextureAtlas characterTextureAtlas;
private ITiledTextureRegion characterTiledTextureRegion;
private AnimatedSprite characterAnimatedSprite;
boolean canGo = false;
public static final String TAG = "Cowboy#";
private Scene scene;
@Override
public EngineOptions onCreateEngineOptions() {
Camera camera = new Camera(0,0, CAMERA_WIDTH, CAMERA_HEIGHT);
return new EngineOptions(true, ScreenOrientation.LANDSCAPE_FIXED, new FillResolutionPolicy(), camera);
}
@Override
public void onCreateResources(OnCreateResourcesCallback pOnCreateResourcesCallback) throws IOException {
BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");
characterTextureAtlas = new BitmapTextureAtlas(mEngine.getTextureManager(), 640, 320, TextureOptions.BILINEAR);
characterTiledTextureRegion = BitmapTextureAtlasTextureRegionFactory.createTiledFromAsset(characterTextureAtlas, this, "walkman640x320.png", 0, 0, 8, 1);
characterTextureAtlas.load();
pOnCreateResourcesCallback.onCreateResourcesFinished();
}
@Override
public void onCreateScene(OnCreateSceneCallback pOnCreateSceneCallback) throws IOException {
scene = new Scene();
scene.setOnSceneTouchListener(this);
characterAnimatedSprite = new AnimatedSprite(120, 120, characterTiledTextureRegion, mEngine.getVertexBufferObjectManager()){
@Override
protected void onManagedUpdate(float pSecondsElapsed) {
super.onManagedUpdate(pSecondsElapsed);
// Log.d(TAG, "onManagedUpdate: counting#");
}
};
characterAnimatedSprite.animate(50);
scene.attachChild(characterAnimatedSprite);
scene.setBackground(new Background(Color.CYAN));
scene.registerUpdateHandler(new IUpdateHandler() {
@Override
public void reset() {}
@Override
public void onUpdate(float pSecondsElapsed) {
// TODO Auto-generated method stub
//moves character 2 steps forward along x-axis
// if (canGo){
// characterAnimatedSprite.setPosition(characterAnimatedSprite.getX() + 2, characterAnimatedSprite.getY());
// }
//moves character 8 steps upward along y-axis and back
// if (canGo){
// characterAnimatedSprite.setPosition(characterAnimatedSprite.getX(), characterAnimatedSprite.getY()+30);
//// characterAnimatedSprite.setPosition(characterAnimatedSprite.getX(), characterAnimatedSprite.getY()-8);
// }
if (canGo){
final float duration = 1;
// final float duration = 3;
final float fromX = characterAnimatedSprite.getX();
final float toX = characterAnimatedSprite.getX();
final float fromY = characterAnimatedSprite.getY();
final float toY = characterAnimatedSprite.getY() + 80;
//you can move in on axis using MoveYModifier or MoveXModifier
// MoveYModifier mod1=new MoveYModifier(constanttime,fromY,toY);
// sprite.registerEntityModifier(mod1);
final MoveModifier downMoveModifier = new MoveModifier(0.4f, fromX, toY, toX, fromY, new IEntityModifier.IEntityModifierListener() {
@Override
public void onModifierStarted(IModifier<IEntity> pModifier, IEntity pItem) {
characterAnimatedSprite.stopAnimation(0);
}
@Override
public void onModifierFinished(IModifier<IEntity> pModifier, IEntity pItem) {
characterAnimatedSprite.animate(50);
}
});
final MoveModifier upMoveModifier = new MoveModifier(0.2f, fromX, fromY, toX, toY, new IEntityModifier.IEntityModifierListener() {
@Override
public void onModifierStarted(IModifier<IEntity> pModifier, IEntity pItem) {
characterAnimatedSprite.stopAnimation(0);
}
@Override
public void onModifierFinished(IModifier<IEntity> pModifier, IEntity pItem) {
characterAnimatedSprite.registerEntityModifier(downMoveModifier);
}
});
characterAnimatedSprite.registerEntityModifier(upMoveModifier);
}
}
});
pOnCreateSceneCallback.onCreateSceneFinished(scene);
}
@Override
public void onPopulateScene(Scene pScene, OnPopulateSceneCallback pOnPopulateSceneCallback) throws IOException {
pOnPopulateSceneCallback.onPopulateSceneFinished();
}
@Override
public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) {
if (pSceneTouchEvent.getAction() == MotionEvent.ACTION_DOWN)
canGo = true;
if (pSceneTouchEvent.getAction() == MotionEvent.ACTION_UP)
canGo = false;
return false;
}
}
公共类MainActivity扩展BaseGameActivity实现了OnSceneTouchListener{
专用静态最终int摄像机_宽度=800;
专用静态最终内窥镜高度=480;
私有BitmapTextureAtlas字符TextureAtlas;
私有ITiledTextureRegion CharacterizedTextureRegion;
私有动画精灵角色动画精灵;
布尔值canGo=false;
公共静态最终字符串TAG=“Cowboy#”;
私密场景;
@凌驾
public EngineOptions onCreateEngineOptions(){
摄像头=新摄像头(0,0,摄像头宽度,摄像头高度);
返回新的EngineOptions(true,ScreenOrientation.scape\u已修复,新的FillResolutionPolicy(),camera);
}
@凌驾
public void onCreateResources(OnCreateResourcesCallback pOnCreateResourcesCallback)引发IOException{
BitmapTextureLastTextureRegionFactory.setAssetBasePath(“gfx/”);
characterTextureAtlas=新的BitmapTextureAtlas(mEngine.getTextureManager(),640320,TextureOptions.BILINEAR);
characterTiledTextureRegion=BitMapTextureAtlastTextureRegionFactory.createTiledFromAsset(characterTextureAtlas,这是“Walkman 640x320.png”,0,0,8,1);
characterTextureAtlas.load();
ponCreateResourcesScallback.onCreateResourcesFinished();
}
@凌驾
public void OnCreateSceneCallback(OnCreateSceneCallback-pOnCreateSceneCallback)引发IOException{
场景=新场景();
scene.setOnSceneTouchListener(此);
characterAnimatedSprite=新的AnimatedSprite(120120,characterTiledTextureRegion,mEngine.getVertexBufferObjectManager()){
@凌驾
ManageDupDate上的受保护无效(浮点psecondsAppeased){
super.onManagedUpdate(psecondseased);
//Log.d(标记“onManagedUpdate:counting#”);
}
};
角色动画精灵。动画(50);
scene.attachChild(角色动画精灵);
场景.背景(新背景(颜色为青色));
registerUpdateHandler(新的IUUpdateHandler(){
@凌驾
公共无效重置(){}
@凌驾
更新时的公共无效(浮点psecondsappeased){
//TODO自动生成的方法存根
//沿x轴向前移动角色2步
//if(canGo){
//设置位置(characterAnimatedSprite.getX()+2,characterAnimatedSprite.getY());
// }
//沿y轴向上并向后移动角色8步
//if(canGo){
//characterAnimatedSprite.setPosition(characterAnimatedSprite.getX(),characterAnimatedSprite.getY()+30);
////characterAnimatedSprite.setPosition(characterAnimatedSprite.getX(),characterAnimatedSprite.getY()-8);
// }
if(canGo){
最终浮动持续时间=1;
//最终浮动持续时间=3;
final float fromX=characterAnimatedSprite.getX();
final float toX=characterAnimatedSprite.getX();
final float fromY=characterAnimatedSprite.getY();
最终浮动玩具=characterAnimatedSprite.getY()+80;
//可以使用MoveYModifier或MoveXModifier沿轴移动
//MoveYModifier mod1=新的MoveYModifier(康斯坦丁、弗罗米、玩具);
//sprite.注册表修改器(mod1);
final MoveModifier downMoveModifier=新的移动修改器(0.4f,fromX,toY,toX,fromY,new-EntityModifier.EntityModifier-Listener(){
@凌驾
已启动修改器上的公共无效(IModifier pModifier,IEntity pItem){
characterAnimatedSprite.stopAnimation(0);
}
@凌驾
修改器上的公共无效已完成(IModifier pModifier,IEntity pItem){
角色动画精灵。动画(50);
}
});
最终移动修改器upMoveModifier=新移动修改器(0.2f,fromX,fromY,toX,toY,new-EntityModifier.EntityModifierListener(){
@凌驾
已启动修改器上的公共无效(IModifier pModifier,IEntity pItem){
characterAnimatedSprite.stopAnimation(0);
}
@凌驾
修改器上的公共无效已完成(IModifier pModifier,IEntity pItem){
characterAnimatedSprite.registerEntityModifier(向下移动修改器);
}
});
characterAnimatedSprite.registerEntityModifier(upMoveModifier);
}
}
});
pOnCreateSceneCallback.onCreateSceneFinished(场景);
}
@凌驾
PopulateScene(场景pScene、OnPopulateSceneCallback和PopulateSceneCallback)上的公共void引发IOException{
pOnPopulateSceneCallback.onPopulateSceneFinished();
}
@凌驾
公共布尔onSceneTouchEvent(场景pScene、触摸事件pSceneTouchEvent){
if(pSceneTouchEvent.getAction()==MotionEvent.ACTION\u向下)
canGo=真;
scene.registerUpdateHandler(new IUpdateHandler() {
@Override
public void reset() {}
@Override
public void onUpdate(float pSecondsElapsed) {
// TODO Auto-generated method stub
if (canGo)
ball.setPosition(ball.getX() + 2, ball.getY());
}
});
public class MainActivity extends BaseGameActivity implements IOnSceneTouchListener {
private static final int CAMERA_WIDTH = 800;
private static final int CAMERA_HEIGHT = 480;
private BitmapTextureAtlas characterTextureAtlas;
private ITiledTextureRegion characterTiledTextureRegion;
private AnimatedSprite characterAnimatedSprite;
boolean canGo = false;
public static final String TAG = "Cowboy#";
private Scene scene;
@Override
public EngineOptions onCreateEngineOptions() {
Camera camera = new Camera(0,0, CAMERA_WIDTH, CAMERA_HEIGHT);
return new EngineOptions(true, ScreenOrientation.LANDSCAPE_FIXED, new FillResolutionPolicy(), camera);
}
@Override
public void onCreateResources(OnCreateResourcesCallback pOnCreateResourcesCallback) throws IOException {
BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");
characterTextureAtlas = new BitmapTextureAtlas(mEngine.getTextureManager(), 640, 320, TextureOptions.BILINEAR);
characterTiledTextureRegion = BitmapTextureAtlasTextureRegionFactory.createTiledFromAsset(characterTextureAtlas, this, "walkman640x320.png", 0, 0, 8, 1);
characterTextureAtlas.load();
pOnCreateResourcesCallback.onCreateResourcesFinished();
}
@Override
public void onCreateScene(OnCreateSceneCallback pOnCreateSceneCallback) throws IOException {
scene = new Scene();
scene.setOnSceneTouchListener(this);
characterAnimatedSprite = new AnimatedSprite(120, 120, characterTiledTextureRegion, mEngine.getVertexBufferObjectManager()){
@Override
protected void onManagedUpdate(float pSecondsElapsed) {
super.onManagedUpdate(pSecondsElapsed);
// Log.d(TAG, "onManagedUpdate: counting#");
}
};
characterAnimatedSprite.animate(50);
scene.attachChild(characterAnimatedSprite);
scene.setBackground(new Background(Color.CYAN));
scene.registerUpdateHandler(new IUpdateHandler() {
@Override
public void reset() {}
@Override
public void onUpdate(float pSecondsElapsed) {
// TODO Auto-generated method stub
//moves character 2 steps forward along x-axis
// if (canGo){
// characterAnimatedSprite.setPosition(characterAnimatedSprite.getX() + 2, characterAnimatedSprite.getY());
// }
//moves character 8 steps upward along y-axis and back
// if (canGo){
// characterAnimatedSprite.setPosition(characterAnimatedSprite.getX(), characterAnimatedSprite.getY()+30);
//// characterAnimatedSprite.setPosition(characterAnimatedSprite.getX(), characterAnimatedSprite.getY()-8);
// }
if (canGo){
final float duration = 1;
// final float duration = 3;
final float fromX = characterAnimatedSprite.getX();
final float toX = characterAnimatedSprite.getX();
final float fromY = characterAnimatedSprite.getY();
final float toY = characterAnimatedSprite.getY() + 80;
//you can move in on axis using MoveYModifier or MoveXModifier
// MoveYModifier mod1=new MoveYModifier(constanttime,fromY,toY);
// sprite.registerEntityModifier(mod1);
final MoveModifier downMoveModifier = new MoveModifier(0.4f, fromX, toY, toX, fromY, new IEntityModifier.IEntityModifierListener() {
@Override
public void onModifierStarted(IModifier<IEntity> pModifier, IEntity pItem) {
characterAnimatedSprite.stopAnimation(0);
}
@Override
public void onModifierFinished(IModifier<IEntity> pModifier, IEntity pItem) {
characterAnimatedSprite.animate(50);
}
});
final MoveModifier upMoveModifier = new MoveModifier(0.2f, fromX, fromY, toX, toY, new IEntityModifier.IEntityModifierListener() {
@Override
public void onModifierStarted(IModifier<IEntity> pModifier, IEntity pItem) {
characterAnimatedSprite.stopAnimation(0);
}
@Override
public void onModifierFinished(IModifier<IEntity> pModifier, IEntity pItem) {
characterAnimatedSprite.registerEntityModifier(downMoveModifier);
}
});
characterAnimatedSprite.registerEntityModifier(upMoveModifier);
}
}
});
pOnCreateSceneCallback.onCreateSceneFinished(scene);
}
@Override
public void onPopulateScene(Scene pScene, OnPopulateSceneCallback pOnPopulateSceneCallback) throws IOException {
pOnPopulateSceneCallback.onPopulateSceneFinished();
}
@Override
public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) {
if (pSceneTouchEvent.getAction() == MotionEvent.ACTION_DOWN)
canGo = true;
if (pSceneTouchEvent.getAction() == MotionEvent.ACTION_UP)
canGo = false;
return false;
}
}