如何通过触摸相对于移动用户输入移动对象?

时间:2014-02-04 17:26:26

标签: java android andengine

好的,所以说我们在(200,200)处有一个带球的图表,我们将手指从(0,0)滑到(100,100)我该如何将球移动到(300,300)?这应该很简单,但它确实伤到了我的脑袋!这是我到目前为止的代码(使用andengine)

float currentX=0;
float lastX=0;
float currentY=0;
float lastY=0;
@Override

public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) {

    // If a user moves their finger on the device

    if(pSceneTouchEvent.getAction() == TouchEvent.ACTION_MOVE){
        // Set our marble's position to the touched area on the screen

        if(pSceneTouchEvent.getX()!=lastX){
            currentX = lastX- pSceneTouchEvent.getX();

        }
        if(pSceneTouchEvent.getY()!=lastY){
            currentY = lastY- pSceneTouchEvent.getY();

        }
        //float x1 = pSceneTouchEvent.getX()-mMarbleSprite.getX();
        mMarbleSprite.setPosition(currentX,currentY );

        lastX = pSceneTouchEvent.getX();
        lastY = pSceneTouchEvent.getY();


        return true;
    }

    return false;

}

2 个答案:

答案 0 :(得分:0)

我想你可以看一下Android中的Property Animation。这是开发人员参考。它易于实现和理解。

http://developer.android.com/guide/topics/graphics/prop-animation.html

答案 1 :(得分:0)

currentX = lastX- pSceneTouchEvent.getX();

此分配每次都为您提供接近于零的值(您正在计算每次触摸相对于最后一次触摸的增量)。尝试直接设置触摸位置。

currentx = pSceneTouchEvent.getX();