2012-03-28 3 views
0

Je voudrais faire le programme que lorsque l'utilisateur a appuyé sur le côté droit de l'animation de l'écran déplacé vers la droite et quand sur la gauche que sur la gauche. Ici le code ne fonctionnent pasDéplacer sprite dans AndEngine Sans digitalonscreencontrol

if (pSceneTouchEvent.getY() > 400) 
{ 
    AnimatedSprite _AnimSprite = new AnimatedSprite(70, 400, _TiledSprite_TR); 
_AnimSprite.registerEntityModifier(new MoveModifier(5, 70, Camera_width 
    - _AnimSprite.getWidth(), 400, 400)); 
         _AnimSprite.animate(50); 
         xPos = _TiledSprite_TR.getTexturePositionX(); 
    } 
        else 
    { 
         if ((pSceneTouchEvent.getY() < 400)&& 
    pSceneTouchEvent.getY() > 0)) 
     { 
          AnimatedSprite _AnimSprite = new 
     AnimatedSprite(70, 400, _TiledSprite_TR); 
          _AnimSprite.registerEntityModifier(new MoveModifier(5, 
      400, Camera_width - _AnimSprite.getWidth(), 70, 400)); 
          _AnimSprite.animate(50); 
          xPos = _TiledSprite_TR.getTexturePositionX();  
       } 
         else{         
       Sprite _Sprite = new Sprite(xPos, 400, _Sprite_TR); 
           MainScene.attachChild(_Sprite); 
          } 
          }   
+0

À quoi correspondent vos CAMERA_WIDTH et CAMERA_HEIGHT? Je suggère d'utiliser des valeurs relatives pour votre largeur et hauteur dans vos instructions if. – Lokiare

Répondre

0

Pourquoi pSceneTouchEvent.getY()? C'est haut/bas, pas gauche/droite. Je pense que vous touchez probablement toujours une zone dont la coordonnée Y est inférieure à 400. Essayez de remplacer par getX() et voyez ce qui se passe.

+0

Cela ne fonctionne pas ((Peut être que je peux utiliser grand contrôle numérique invisible, mais je ne sais pas comment je peux changer la taille du contrôle. – user1298718

0

Il me semble que vous générez un nouveau sprite à chaque fois que vous touchez l'écran. Ce n'est probablement pas ce que vous voulez faire. Je suggère que vous étendiez votre classe principale (habituellement votre BaseGameActivity ou une activité similaire) pour utiliser IOnSceneTouchListener afin que vous puissiez accéder aux données tactiles et avoir accès à vos animatedSprites, au lieu de créer un nouveau IOnSceneTouchListener qui ne peut accéder à aucun de vos AnimatedSprites.

public class Game extends BaseGameActivity implements IOnSceneTouchListener 
{ 
     private AnimatedSprite animatedSprite; 
     @Override 
    public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) 
    { 
     // Access your animated sprites here and make them move based on the touch data 
     return true; 
    } 
} 

Quelque chose dans ce sens.

Questions connexes