AndEngine - 向上和向下滚动精灵

时间:2014-02-15 14:01:29

标签: android andengine onscroll

我是初学者和发动机用户,我需要你的帮助。

我创建了一个MySprite类延伸精灵,我希望精灵在y坐标上上下移动,当我用手指在屏幕上滑动时只触摸精灵。

我试图通过实现IScrollDetectorListener和IonSceneTouchListener来实现这一点,但问题是:我可以触摸任何地方,我的精灵会移动。

如果有人可以提供帮助,我会很高兴。

更多细节只需评论:)

3 个答案:

答案 0 :(得分:1)

         Sprite mySprite = new Sprite(x, y, textureRegion, this.getVertexBufferObjectManager()) {
            @Override
            public boolean onAreaTouched(final TouchEvent pSceneTouchEvent, final float pTouchAreaLocalX, final float pTouchAreaLocalY) {

 this.setPosition(x, y);
            //Insert Code Here
            return true;
             }};

        // dont forgot to register your touch area i.e 
        mScene.registerTouchArea(mySprite);
    // Hoping it may help you.

答案 1 :(得分:0)

希望你试图用精灵制作一个滚动条。请使用此代码

Initial scrollbarPosition = scrollbar.getX(); //fix this position

final Sprite scrollbar= new Sprite(centerX, centerY, this.scrollbarTextureRegion, this.getVertexBufferObjectManager()) {
            @Override
            public boolean onAreaTouched(final TouchEvent pSceneTouchEvent, final float pTouchAreaLocalX, final float pTouchAreaLocalY) {
                this.setPosition(scrollbarPosition, pSceneTouchEvent.getY() - this.getHeight() / 2);
                return true;
            }
        };

scene.attachChild(scrollbar);
scene.registerTouchArea(scrollbar);
scene.setTouchAreaBindingOnActionDownEnabled(true);

希望这有助于感谢。

答案 2 :(得分:0)

如果只想在Y坐标上移动它,首先必须覆盖onAreaTouched,然后在压制X移动时处理Y移动。请尝试以下代码:

Sprite mSprite = new Sprite(mX, mY, mTexture, this.mEngine.getVertexBufferObjectManager()) {                        
                    @Override
                    public boolean onAreaTouched(final TouchEvent pSceneTouchEvent, final float pTouchAreaLocalX, final float pTouchAreaLocalY) {
                        this.setPosition(this.getX(), pSceneTouchEvent.getY());                         
                        return true;
                    }
                };
                this.mScene.attachChild(mSprite);
                this.mScene.registerTouchArea(mSprite);

哦,如果您使用GLES2-AnchorCenter分支,它将正常工作!

希望它有所帮助! :)