0

ビットマップを指に追従させたい。しかし、MotionEvent.ACTION_MOVE を使用すると、ビットマップが遅れます。ビットマップが指に瞬時に (またはほぼ瞬時に) 追従する方法はありますか?

    public boolean onTouch(View v, MotionEvent me) 
{   
    // TODO Auto-generated method stub
    switch(me.getAction())
    {
    case MotionEvent.ACTION_DOWN:
        if(me.getX() > player.get_RectXPos() && me.getX() < player.get_RectXPos() + player.get_Width() && 
           me.getY() > player.get_RectYPos() && me.getY() < player.get_RectYPos() + player.get_Height())
        {
            isDown = true;
        }
        break;
    case MotionEvent.ACTION_UP:
        isDown = false;
        break;
    case MotionEvent.ACTION_MOVE:
        if(isDown == true)
        {
            player.set_xPos(me.getX());
            player.set_yPos(me.getY());
        }

        break;
    }
    return true;
}

私はあなたがこの部分を求めたと思います:

    void render(Canvas canvas)
{
    m_Src = new Rect(0, 0, m_RectWidth, m_RectHeight);
    m_Dst = new Rect(m_RectX, m_RectY, m_RectX + m_RectWidth, m_RectY + m_RectHeight);
    canvas.drawBitmap(m_Bitmap, m_Src, m_Dst, null);
}
4

3 に答える 3

0
void render(Canvas canvas)
{
m_Src = new Rect(0, 0, m_RectWidth, m_RectHeight);
m_Dst = new Rect(m_RectX, m_RectY, m_RectX + m_RectWidth, m_RectY + m_RectHeight);
canvas.drawBitmap(m_Bitmap, m_Src, m_Dst, null);
}

ここではRect、毎回 2 つのオブジェクトを割り当てます。それらを一度だけ初期化しRect.set、値を変更するために使用する必要があります。

また、Bitmapサイズを変更しない場合はpublic void drawBitmap (Bitmap bitmap, float left, float top, Paint paint)、このメソッドは へのスケーリング/変換を行わず、Bitmapより効率的であるため、使用できます。

于 2014-02-11T16:36:59.897 に答える