【问题标题】:One sprite follows another one一个精灵跟随另一个精灵
【发布时间】:2013-11-28 21:44:32
【问题描述】:

我正在通过 Andengine 开发游戏,但我被卡在了某个地方! 问题是: 它在我触摸场景(touchX,touchY)的地方添加了一个精灵,并且在(touchX + 100,touchY)处添加了一个精灵。这两个精灵在 x 轴上相互之间总是有 100px 的距离。 到目前为止,我触摸了一次并在场景中添加了两个精灵。然后,当我想移动其中一个(比如说第一个)时,第二个也必须移动以保持它们之间的距离(100px)。我的代码在下面,这些代码是正确添加的,但只有一个在移动,这就是为什么另一个不能不断保持距离的原因。我怎样才能正确地做到这一点?

public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) {

    if(pSceneTouchEvent.getAction() == MotionEvent.ACTION_DOWN)
    {

        touchX = pSceneTouchEvent.getX();
        touchY = pSceneTouchEvent.getY();

     }
    if(pSceneTouchEvent.getAction() == MotionEvent.ACTION_UP)
    {

    }

    if (pSceneTouchEvent.getAction() == MotionEvent.ACTION_MOVE){

            AnimatedSprite circleBoxE1 = new AnimatedSprite(touchX, touchY, resourcesManager.circleBoxRegion, vbom){
                                   @Override
                                    public boolean onAreaTouched(TouchEvent pTouchEvent, float pTouchAreaLocalX, float pTouchAreaLocalY) {

                                       this.setPosition(pTouchEvent.getX(), pTouchEvent.getY());


                                        return true;
                                    }
                                };
                                registerTouchArea(circleBoxE1);
                                attachChild(circleBoxE1);
                                setTouchAreaBindingOnActionDownEnabled(true);

                              AnimatedSprite circleBoxE2 = new AnimatedSprite(touchX, 450 - touchY, resourcesManager.circleBoxRegion, vbom){
                                   @Override
                                    public boolean onAreaTouched(TouchEvent pTouchEvent, float pTouchAreaLocalX, float pTouchAreaLocalY) {

                                       this.setPosition(pTouchEvent.getX() + 100,  pTouchEvent.getY());


                                        return true;
                                    }
                                };
                                registerTouchArea(circleBoxE2);
                                attachChild(circleBoxE2);
                                setTouchAreaBindingOnActionDownEnabled(true);

  }

【问题讨论】:

    标签: android coding-style touch andengine game-center


    【解决方案1】:

    如果您想更新场景触摸上的两个位置,请按照以下说明操作:

    例如:sprite1.setPosition(touchX, touchY); sprite2.setPosition(sprite1.getX()+100, touchY);

    如果你想更新 sprite1 touch

    例如:this.setPositon(touchX, touchY); sprite2.setPosition(this.getX()+100, touchY);

    当另一个精灵正在更新时,您可以使用 updateHandlers 更新一个精灵:

    【讨论】:

      猜你喜欢
      • 2012-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-21
      相关资源
      最近更新 更多