0

スプライトに触れている間に何かをさせるにはどうすればよいですか (具体的には、スプライトのサイズを大きくしたいのです)。

private void createSpriteOnTap(float x, float y)
    {
        final Sprite yourSprite = new Sprite(x, y, textureRegionForYourSprite, getVertexBufferObjectManager())
        {           
            @Override
            public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float pTouchAreaLocalX, float pTouchAreaLocalY) 
            {
                //if(pSceneTouchEvent.isActionDown()){
                    if (pSceneTouchEvent.isActionMove())
                    {
                        // while player is touching our sprite
                        setScale(scale += 0.1);
                        setPosition(pSceneTouchEvent.getX() - getWidth() / 2, pSceneTouchEvent.getY() - getHeight() / 2);
                    }

                    if(pSceneTouchEvent.isActionDown())
                            setScale(scale += 0.1);
                return true; 
            }
        };

ただし、スプライトは、移動またはタップされている場合にのみサイズが大きくなり、保持されていません。ユーザーが指を離すまでサイズを大きくするにはどうすればよいですか?

4

3 に答える 3

1

私はこれに従うようにそれをしました-

@Override
public boolean onAreaTouched(TouchEvent pSceneTouchEvent,
        float pTouchAreaLocalX, float pTouchAreaLocalY) {

    if(pSceneTouchEvent.isActionDown()){
        flagTouch=true;
    }
    if(pSceneTouchEvent.isActionMove()) {
        flagTouch=false;
        setScale(1f);
    }
    if (pSceneTouchEvent.isActionUp()) {
        flagTouch=false;
        setScale(1f);   
    }
    return true;
}

@Override
protected void onManagedUpdate(float pSecondsElapsed) {
     if(flagTouch){
         setScale(1.5f);
     }
}
于 2013-03-13T08:45:00.217 に答える
1

スプライト領域内で mousedown イベントをキャッチすると、たとえば CountDownTimer を使用してスプライトの拡大を開始できます。マウスを離すとタイマーが停止します。参照: http://developer.android.com/reference/android/os/CountDownTimer.html

ここでは、マウスダウンで開始します。

CountDownTimer spriteScaleTimer = new CountDownTimer(30000, 1000) {

 public void onTick(long millisUntilFinished) {
     mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
     // put scaling here
 }

 public void onFinish() {
     mTextField.setText("done!");
     // Max scale size.
 }
 }.start();

次に onMouseUp:

spriteScaleTimer.cancel();
于 2012-06-20T00:12:45.330 に答える
0

私はそれをテストし、私のために働いたので、次のコードはあなたのために働くと思います.

final Sprite sprite = new Sprite(centerX, centerY, mFaceTextureRegion) {

        @Override
        public boolean onAreaTouched(TouchEvent pSceneTouchEvent,
                float pTouchAreaLocalX, float pTouchAreaLocalY) {

            if(pSceneTouchEvent.isActionDown())
                flagTouch = true;

            if(pSceneTouchEvent.isActionUp())
                flagTouch = false;

            setPosition(pSceneTouchEvent.getX() - getWidth() / 2,
                    pSceneTouchEvent.getY() - getHeight() / 2);
            return true;
        }

        @Override
        protected void onManagedUpdate(float pSecondsElapsed) {
            super.onManagedUpdate(pSecondsElapsed);

            if(flagTouch)
                setScale(scale+=0.1f);
        }
    };
于 2012-06-23T05:40:42.037 に答える