2012-07-31 9 views
5

hallo ist neu in Android-Spiele-Entwicklung zu bewegen i AndEngine i einen Pfad ploat muß verwenden, aber es gibt ein Problem imageZeichnen Sie einen Pfad in AndEngine ein Bild oder Sprit

Blick auf dem Bildes.Verfahren Weg ich brauche, ist Wie beim ersten sollte sich das Objekt vom unteren Rand bis zur Mitte des Bildschirms bewegen. Aber während ich meinen Pfad zeichne, bewegt er sich in die Mitte des Bildschirms, geht aber zum zweiten Punkt zurück wie im zweiten Bild. Das Bild bewegt sich durch der Weg ist aber wie das 2. Bild.Ich brauche es als erstes.Er sollte im 3. Punkt stehen bleiben und erst wieder am ersten Punkt beginnen.

ist mein Code unten

gegeben
package com.example.sss; 

import org.andengine.engine.camera.Camera; 
import org.andengine.engine.options.EngineOptions; 
import org.andengine.engine.options.ScreenOrientation; 
import org.andengine.engine.options.resolutionpolicy.RatioResolutionPolicy; 
import org.andengine.entity.IEntity; 
import org.andengine.entity.modifier.LoopEntityModifier; 
import org.andengine.entity.modifier.PathModifier; 
import org.andengine.entity.modifier.PathModifier.IPathModifierListener; 
import org.andengine.entity.modifier.PathModifier.Path; 
import org.andengine.entity.scene.Scene; 
import org.andengine.entity.scene.background.RepeatingSpriteBackground; 
import org.andengine.entity.sprite.AnimatedSprite; 
import org.andengine.entity.util.FPSLogger; 
import org.andengine.opengl.texture.atlas.bitmap.BitmapTextureAtlas; 
import org.andengine.opengl.texture.atlas.bitmap.BitmapTextureAtlasTextureRegionFactory; 
import org.andengine.opengl.texture.atlas.bitmap.source.AssetBitmapTextureAtlasSource; 
import org.andengine.opengl.texture.region.TiledTextureRegion; 
import org.andengine.ui.activity.SimpleBaseGameActivity; 

/** 
* (c) 2010 Nicolas Gramlich 
* (c) 2011 Zynga 
    * 
* @author Nicolas Gramlich 
* @since 13:58:48 - 19.07.2010 
*/ 
public class MainActivity extends SimpleBaseGameActivity { 
// =========================================================== 
// Constants 
// =========================================================== 

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

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

private RepeatingSpriteBackground mGrassBackground; 

private BitmapTextureAtlas mBitmapTextureAtlas; 
private TiledTextureRegion mPlayerTextureRegion; 

// =========================================================== 
// Constructors 
// =========================================================== 

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

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


public EngineOptions onCreateEngineOptions() { 
    final Camera camera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT); 

    return new EngineOptions(true, ScreenOrientation.LANDSCAPE_FIXED, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), camera); 
} 


public void onCreateResources() { 
    BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/"); 

    this.mBitmapTextureAtlas = new BitmapTextureAtlas(this.getTextureManager(), 128, 128); 
    this.mPlayerTextureRegion = BitmapTextureAtlasTextureRegionFactory.createTiledFromAsset(this.mBitmapTextureAtlas, this, "player.png", 0, 0, 3, 4); 
    this.mGrassBackground = new RepeatingSpriteBackground(CAMERA_WIDTH, CAMERA_HEIGHT, this.getTextureManager(), AssetBitmapTextureAtlasSource.create(this.getAssets(), "gfx/background_grass.png"), this.getVertexBufferObjectManager()); 
    this.mBitmapTextureAtlas.load(); 
} 


public Scene onCreateScene() { 
    this.mEngine.registerUpdateHandler(new FPSLogger()); 

    final Scene scene = new Scene(); 
    final Scene scene_one = new Scene(); 
    scene.setBackground(this.mGrassBackground); 




    /* Calculate the coordinates for the face, so its centered on the camera.  */ 
    final float centerX = (CAMERA_WIDTH - this.mPlayerTextureRegion.getWidth())/2; 
    final float centerY = (CAMERA_HEIGHT - this.mPlayerTextureRegion.getHeight())/2; 
    System.out.println("aaaaaa"+centerX+"asdadas"); 

    /* Create the sprite and add it to the scene. */ 
    final AnimatedSprite player_one = new AnimatedSprite(centerX, centerY, 48, 64, this.mPlayerTextureRegion, this.getVertexBufferObjectManager()); 

    final Path path_one = new Path(5).to(CAMERA_WIDTH - 58, 10).to(10, 10).to(100, CAMERA_HEIGHT/2f);//to(10, 10).to(10, CAMERA_HEIGHT - 74).to(CAMERA_WIDTH - 58, CAMERA_HEIGHT - 74).to(CAMERA_WIDTH - 58, 10).to(10, 10); 
    final AnimatedSprite player = new AnimatedSprite(centerX, centerY, 48, 64, this.mPlayerTextureRegion, this.getVertexBufferObjectManager()); 
    final Path path = new Path(5).to(CAMERA_WIDTH - 58, 10).to(10, 10).to(10, CAMERA_HEIGHT/2f); 


    player.registerEntityModifier(new LoopEntityModifier(new PathModifier(5, path, null, new IPathModifierListener() { 

     public void onPathStarted(final PathModifier pPathModifier, final IEntity pEntity) { 

     } 


     public void onPathWaypointStarted(final PathModifier pPathModifier, final IEntity pEntity, final int pWaypointIndex) { 
      switch(pWaypointIndex) { 
       case 0: 
        player.animate(new long[]{200, 200, 200}, 6, 8, true); 
        break; 
       case 1: 
        player.animate(new long[]{200, 200, 200}, 3, 5, true); 

        break; 
       case 2: 
        player.animate(new long[]{200, 200, 200}, 0, 2, true); 


        break; 
       case 3: 
        //scene.setVisible(false); 
        player.animate(new long[]{200, 200, 200}, 9, 11, true); 
        break; 
      } 
     } 


     public void onPathWaypointFinished(final PathModifier pPathModifier, final IEntity pEntity, final int pWaypointIndex) { 



     } 


     public void onPathFinished(final PathModifier pPathModifier, final IEntity pEntity) { 
      System.out.println("tileesdfsdfsdfgfdgdfsee"+player.getCurrentTileIndex()); 
     } 
    }))); 
















player_one.registerEntityModifier(new LoopEntityModifier(new PathModifier(5, path_one, null, new IPathModifierListener() { 

     public void onPathStarted(final PathModifier pPathModifier, final IEntity pEntity) { 

     } 


     public void onPathWaypointStarted(final PathModifier pPathModifier, final IEntity pEntity, final int pWaypointIndex) { 
      switch(pWaypointIndex) { 
       case 0: 
        player.animate(new long[]{200, 200, 200}, 6, 8, true); 
        break; 
       case 1: 
        player.animate(new long[]{200, 200, 200}, 3, 5, true); 


        break; 
       case 2: 
        player.animate(new long[]{200, 200, 200}, 0, 2, true); 

         System.out.println("insideeeeeeeeeeeeeeeeeeeeeeeee"); 
        scene.detachChild(player_one); 
        scene.attachChild(player); 
        break; 
       case 3: 
        player.animate(new long[]{200, 200, 200}, 9, 11, true); 
        break; 
      } 
     } 


     public void onPathWaypointFinished(final PathModifier pPathModifier, final IEntity pEntity, final int pWaypointIndex) { 



     } 


     public void onPathFinished(final PathModifier pPathModifier, final IEntity pEntity) { 
      System.out.println("tileesdfsdfsdfgfdgdfsee"+player.getCurrentTileIndex()); 
     } 
    }))); 






    scene.attachChild(player); 

    return scene; 
} 

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

// =========================================================== 
// Inner and Anonymous Classes 
// =========================================================== 
} 

bitte helfen me.Thanks im Voraus

Antwort

7

Wenn Sie drei Punkte haben Sie es in Ihrem Pfad Konstruktor angeben sollten:

final Path path = new Path(3).to(CAMERA_WIDTH - 58, 10).to(10, 10).to(10, CAMERA_HEIGHT/2f); 

statt

final Path path = new Path(5).to(CAMERA_WIDTH - 58, 10).to(10, 10).to(10, CAMERA_HEIGHT/2f); 
+0

als k Sie driver613 funktioniert jetzt gut :) – Ramz

+0

driver613 kennen Sie die Lösung für diese Frage http://StackOverflow.com/Questions/11755693/How-to-fall-a-sprite-over-another-using-and-engine -in-android – Ramz

+0

Sie haben bereits eine Antwort :) –