2012-03-28 8 views
0

私は、ユーザが画面の右端を押したときに、右に移動したアニメーションを左に移動したいと考えています。ここ コード)DigitalEnscreencontrolを使わずにAndEngineでスプライトを移動する

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

あなたのCAMERA_WIDTHとCAMERA_HEIGHTはどのように設定されていますか? if文で幅と高さの相対値を使うことをお勧めします。 – Lokiare

答えて

0

なぜpSceneTouchEvent.getYを(いけない仕事しますか?それは左/右ではなく、上/下です。おそらく、あなたはおそらく常に400未満のY座標を持つ領域に触れていると思います。getX()に置き換えて何が起こるかを見てください。

+0

それはうまくいきません((私は目に見えない大きなデジタルコントロールを使うことができるかもしれませんが、コントロールのサイズをどのように変更できるのか分かりません)。 – user1298718

0

画面に触れるたびに新しいスプライトが生成されるようです。これはおそらくあなたがしたいことではありません。私は、IOnSceneTouchListenerを使用するようにあなたのメインクラス(通常はBaseGameActivityまたは類似のアクティビティ)を拡張し、タッチデータにアクセスしたり、animatedSpritesにアクセスできるようにすることをお勧めします。新しいIOnSceneTouchListenerを作成する代わりに、あなたの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; 
    } 
} 

これらの行に何かがあります。

関連する問題