【问题标题】:How to move a sprite after the touch from one location to another with a smooth movement with andengine?如何使用andengine平滑移动触摸后的精灵从一个位置到另一个位置?
【发布时间】:2011-11-20 10:12:01
【问题描述】:

我有一个在触摸时必须开始沿 Y 坐标移动的精灵。 当运动达到默认的 Y 坐标时,我需要停止运动。 我已经尝试使用 setposition() 但没有做出平滑的移动(如动画) 我怎样才能做到这一点?

我尝试了 setvelocity() 但我不知道如何在某个坐标处停止运动。

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

                if(pSceneTouchEvent.isActionDown()){
                    //TOCCO DELLO SPRITE

                    PhysicsHandler physicsHandler = new PhysicsHandler(this);
                    this.registerUpdateHandler(physicsHandler);
                    physicsHandler.setVelocityY(-5f);



                    se.getChild(1).detachChild(this);
                    se.getChild(2).attachChild(this);


                }

我也试过这条路径,但我不太明白它是如何工作的。

编辑

根据 Jong 的说法,我使用了 MoveYModifier。它有效,但在 avd 上,运动似乎生涩。我很快就会在设备上尝试,但这只是一个 avd 问题吗? 我是这样做的:

   if(pSceneTouchEvent.isActionDown()){

                    //TOCCO DELLO SPRITE

                    se.getChild(1).detachChild(this);
                    se.getChild(2).attachChild(this);


                    MoveYModifier mod = new MoveYModifier(3, getY(), pSceneTouchEvent.getY()- gap);
                    this.registerEntityModifier(mod);


                }

编辑 2 在设备上测试并且运行良好!很流畅!

【问题讨论】:

    标签: android coordinates sprite andengine


    【解决方案1】:

    使用MoveModifier,阅读更多here

    【讨论】:

    • 它有效!多谢!但在 avd 上,运动似乎很生涩。我很快就会在设备上试一试,但你知道这是否只是一个 avd 问题吗?我已经这样做了:if(pSceneTouchEvent.isActionDown()){ //TOCCO DELLO SPRITE se.getChild(1).detachChild(this); se.getChild(2).attachChild(this); MoveYModifier mod = new MoveYModifier(3, getY(), pSceneTouchEvent.getY()- gap); this.registerEntityModifier(mod); }
    • 你为什么要将this附加到场景中? se 是什么?提供更多细节。包含这段代码的类是'Sprite'对吗?
    • 你说得对,“se”是场景,我有这样声明的方法:sprite = new Sprite(dataV.elementAt(i).x, dataV.elementAt(i).y, tRegionV.elementAt(i)) // gestione del drag & drop { @Override public boolean onAreaTouched(final TouchEvent pSceneTouchEvent, final float pTouchAreaLocalX, final float pTouchAreaLocalY) { if(pSceneTouchEvent.isActionDown()){ 所以“this”就是精灵本身。但我已经在您推荐的设备和 movemodifier 上进行了测试,效果很好!
    • 我不确定你是否可以将 SAME sprite 对象附加到不同的 Entity 父级...但如果它有效,那就太好了:)
    • ooo 我没有注意到其中一种方法是 'detach' 而另一种是 'attach',以为两者都是 'attach' ^^ 好吧。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    相关资源
    最近更新 更多