【问题标题】:OnAreaTouched stacking AndengineOnAreaTouched 堆叠和引擎
【发布时间】:2013-11-22 07:38:42
【问题描述】:

首先我会展示图片来解释我的问题

图片说明:

我有 2 个精灵 REDwhite。我附上了

  1. 带有场景的红色精灵和
  2. 白色雪碧与红色雪碧

我已经移动并缩放了它 Red Spritewhite sprite 就像在第二张图片中一样

我的问题

我已经注册了触摸监听器。但是我想在缩放完整图像时注册白色精灵的触摸(在第二张图像情况下)

但是当我完全按比例注册触摸时,它不会触发触摸。

要触发触摸,我必须在 图像 1 之前注册两个精灵触摸

我也看到过类似的问题 here.

我的代码

> `titleScene = new Scene();
        titleScene.setBackground(new Background(0, 1, 0));
        A_Background_Sprite = new Sprite(0, 0, A_Background_TextureRegion, activity.getVertexBufferObjectManager());
        titleScene.attachChild(A_Background_Sprite);
        RED_Sprite = new Sprite(50, 50, RED_TextureRegion, activity.getVertexBufferObjectManager()){


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

                if(!RED_Sprite.isScaled())

                {
                Log.i("Apple_Background_Sprite", "setOnClickListener");
                AppleX=(int) RED_Sprite.getX();

                AppleY= (int) RED_Sprite.getY();



                RED_Sprite.registerEntityModifier(new SequenceEntityModifier(new MoveModifier(1f, RED_Sprite.getX(), camera.getCenterX(), RED_Sprite.getY(),camera.getCenterY()),new ScaleModifier(1f, 1f, 2f, new IEntityModifierListener() {

                    public void onModifierStarted(IModifier<IEntity> pModifier, IEntity pItem) {
                        // TODO Auto-generated method stub

                        white_Sprite.setVisible(true);
        titleScene.registerTouchArea(white_Sprite);
                    }

                    public void onModifierFinished(IModifier<IEntity> pModifier, IEntity pItem) {
                        // TODO Auto-generated method stub


                    }
                },EaseLinear.getInstance())));




                }
                else
                {        

                //  Spelling_Background_Sprite.registerEntityModifier(new MoveModifier(4f,  camera.getWidth(), 20, 400, 400));

                }

                return true;
                              // here you can use the code
                            }
        };



        RED_Sprite.setSize(150f, 150f);


        titleScene.setTouchAreaBindingOnActionDownEnabled(true);

        white_Sprite.setVisible(false);

        titleScene.attachChild(RED_Sprite);
        RED_Sprite.attachChild(white_Sprite);


        titleScene.registerTouchArea(RED_Sprite);

请看一下

RED_Sprite.registerEntityModifier(new SequenceEntityModifier(new MoveModifier(1f, RED_Sprite.getX(), camera.getCenterX(), RED_Sprite.getY(),camera.getCenterY()),new ScaleModifier(1f, 1f, 2f, new IEntityModifierListener() {

            public void onModifierStarted(IModifier<IEntity> pModifier, IEntity pItem) {
                // TODO Auto-generated method stub

                white_Sprite.setVisible(true);
titleScene.registerTouchArea(white_Sprite);
            }

【问题讨论】:

    标签: touch andengine sprite


    【解决方案1】:

    当你有重叠的对象,并且你想在所有对象上触发触摸事件时,确保在 onTouch 回调函数结束时不要返回 true,否则触摸监听器会停止处理剩余的触摸事件。有关更多信息,请参阅本教程http://andengineguides.wordpress.com/2011/09/14/getting-started-touch-events/

    【讨论】:

      猜你喜欢
      • 2013-07-27
      • 1970-01-01
      • 2012-06-23
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 2013-10-13
      • 1970-01-01
      相关资源
      最近更新 更多