comment utiliser correctement l'auditeur / événement tactile et la fonction de la facilité dans AndEngine

StackOverflow https://stackoverflow.com/questions/9346260

Question

cet événement tactile ne se déclenche. Ive été en passant par les exemples et les codes sources et maintenant je suis un peu confus sur la meilleure méthode de faire ce que je veux.

Je dessine un sprite sur la scène. Je veux que sprite de se déplacer avec un EaseFunction aux coordonnées de l'événement tactile des utilisateurs.

est le code à ce jour:

private static final int CAMERA_WIDTH = 720;
private static final int CAMERA_HEIGHT = 480;

// ===========================================================
// Fields
// ===========================================================

private Camera mCamera;
private BitmapTextureAtlas mTexture;
private TextureRegion mFaceTextureRegion;
// ===========================================================
// Constructors
// ===========================================================

// ===========================================================
// Getter & Setter
// ===========================================================

// ===========================================================
// Methods for/from SuperClass/Interfaces
// ===========================================================

@Override
public Engine onLoadEngine() {
    this.mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
    return new Engine(new EngineOptions(true, ScreenOrientation.LANDSCAPE, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), this.mCamera));
}

@Override
public void onLoadResources() {
    this.mTexture = new BitmapTextureAtlas(64, 32, TextureOptions.BILINEAR);
    this.mFaceTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mTexture, this, "gfx/boxface.png", 0, 0);

    this.getEngine().getTextureManager().loadTexture(this.mTexture);
}

@Override
public Scene onLoadScene() {
    this.getEngine().registerUpdateHandler(new FPSLogger());

    final Scene scene = new Scene();
    scene.setBackground(new ColorBackground(0.09804f, 0.6274f, 0.8784f));

    final int x = (CAMERA_WIDTH - this.mFaceTextureRegion.getWidth()) / 2;
    final int y = (CAMERA_HEIGHT - this.mFaceTextureRegion.getHeight()) / 2;
    final Sprite face = new Sprite(x, y, this.mFaceTextureRegion);
    scene.attachChild(face);
    face.setPosition(134, 200);

// c'est là que je tente de mettre en œuvre l'auditeur tactile et le code // est-il juste?

    scene.setOnAreaTouchListener(new IOnAreaTouchListener() {
        //@Override
        public boolean onAreaTouched(TouchEvent pSceneTouchEvent,ITouchArea pTouchArea, float pTouchAreaLocalX,float pTouchAreaLocalY) {
            if(pSceneTouchEvent.isActionDown()) {
                int facePosX = (int) (pSceneTouchEvent.getX() - face.getWidth() / 2);
                int facePosY = (int) (pSceneTouchEvent.getY() - face.getHeight() / 2);

                face.registerEntityModifier(new MoveModifier(500, face.getX(), facePosX, face.getY(),facePosY,EaseQuadIn.getInstance())); 
            }
            return false;
        }
    });
    return scene;
}


@Override
public void onLoadComplete() {

}

Enfin, je dois im assez sûr d'utiliser pScene.registerTouchArea (visage); et pScene.setTouchAreaBindingEnabled (true);

toute précision serait d'une grande utilité. merci

Était-ce utile?

La solution

cela fonctionne! continuez à creuser et trouvé la réponse ici: http: //www.andengine.org/forums/tutorials/touchevent-t1490.html

ici est le code complet. les charges de sprite au centre de la page. où que vous cliquez sur le sprite entrepont »ou la facilité à vos coordonnées de contact.

package and.engine.test;

import org.anddev.andengine.engine.Engine;
import org.anddev.andengine.engine.camera.Camera;
import org.anddev.andengine.engine.options.EngineOptions;
import org.anddev.andengine.engine.options.EngineOptions.ScreenOrientation;
import org.anddev.andengine.engine.options.resolutionpolicy.RatioResolutionPolicy;
import org.anddev.andengine.entity.util.FPSLogger;
import org.anddev.andengine.ui.activity.BaseGameActivity;
import org.anddev.andengine.entity.modifier.MoveModifier;
import org.anddev.andengine.entity.scene.Scene;
import org.anddev.andengine.util.modifier.ease.EaseQuadIn;
import org.anddev.andengine.entity.scene.Scene.IOnSceneTouchListener;
import org.anddev.andengine.entity.scene.background.ColorBackground;
import org.anddev.andengine.entity.sprite.Sprite;
import org.anddev.andengine.input.touch.TouchEvent;
import org.anddev.andengine.opengl.texture.TextureOptions;
import org.anddev.andengine.opengl.texture.atlas.bitmap.BitmapTextureAtlas;
import org.anddev.andengine.opengl.texture.atlas.bitmap.BitmapTextureAtlasTextureRegionFactory;
import org.anddev.andengine.opengl.texture.region.TextureRegion;



public class AndEnginetestActivity extends BaseGameActivity {
    // ===========================================================
    // Constants
    // ===========================================================

    private static final int CAMERA_WIDTH = 720;
    private static final int CAMERA_HEIGHT = 480;

    // ===========================================================
    // Fields
    // ===========================================================

    private Camera mCamera;
    private BitmapTextureAtlas mTexture;
    private TextureRegion mFaceTextureRegion;
    // ===========================================================
    // Constructors
    // ===========================================================

    // ===========================================================
    // Getter & Setter
    // ===========================================================

    // ===========================================================
    // Methods for/from SuperClass/Interfaces
    // ===========================================================

    @Override
    public Engine onLoadEngine() {
        this.mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
        return new Engine(new EngineOptions(true, ScreenOrientation.LANDSCAPE, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), this.mCamera));
    }

    @Override
    public void onLoadResources() {
        this.mTexture = new BitmapTextureAtlas(64, 32, TextureOptions.BILINEAR);
        this.mFaceTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mTexture, this, "gfx/boxface.png", 0, 0);

        this.getEngine().getTextureManager().loadTexture(this.mTexture);
    }

    @Override
    public Scene onLoadScene() {
        this.getEngine().registerUpdateHandler(new FPSLogger());

        final Scene scene = new Scene();
        scene.setBackground(new ColorBackground(0.09804f, 0.6274f, 0.8784f));

        final int x = (CAMERA_WIDTH - this.mFaceTextureRegion.getWidth()) / 2;
        final int y = (CAMERA_HEIGHT - this.mFaceTextureRegion.getHeight()) / 2;
        final Sprite face = new Sprite(x, y, this.mFaceTextureRegion);
        scene.registerTouchArea(face);
        scene.attachChild(face);
        //face.setPosition(134, 200);

        scene.setOnSceneTouchListener(new IOnSceneTouchListener() {

            @Override
            public boolean onSceneTouchEvent(Scene pScene,TouchEvent pSceneTouchEvent) {
                int facePosX = (int) (pSceneTouchEvent.getX() - face.getWidth() / 2);
                int facePosY = (int) (pSceneTouchEvent.getY() - face.getHeight() / 2);
                 face.registerEntityModifier(new MoveModifier(1, face.getX(), facePosX,face.getY(), facePosY, EaseQuadIn.getInstance()));               
                 return false;
            }
        });


        scene.setTouchAreaBindingEnabled(true);
        return scene;
    }


    @Override
    public void onLoadComplete() {

    }

    // ===========================================================
    // Methods
    // ===========================================================

    // ===========================================================
    // Inner and Anonymous Classes
    // ===========================================================
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top