【问题标题】:How can i set an onAreaTouched listener to a TiledSprite or ButtonSprite after initialized it?如何在初始化后将 onAreaTouched 侦听器设置为 TiledSprite 或 ButtonSprite?
【发布时间】:2015-02-22 14:30:04
【问题描述】:

我知道我可以像这样设置这个监听器初始化:

buttonSprite = new ButtonSprite(X, Y, mITextureRegion,
            mEngine.getVertexBufferObjectManager()) {
        @Override
        public boolean onAreaTouched(TouchEvent pSceneTouchEvent,
                float pTouchAreaLocalX, float pTouchAreaLocalY) {

            if (pSceneTouchEvent.isActionDown()) {

                return true;
            }
            return super.onAreaTouched(pSceneTouchEvent, pTouchAreaLocalX,
                    pTouchAreaLocalY);
        }
    };

这行得通。但我想要这样的东西:

buttonSprite = new ButtonSprite(X, Y, mITextureRegion,
            mEngine.getVertexBufferObjectManager());

先创建它,然后设置onAreaTouched(我猜肯定是这样的,但是因为不存在这个setter所以不起作用)

buttonSprite.setOnAreaTouched(new onAreaTouched(TouchEvent pSceneTouchEvent,
                float pTouchAreaLocalX, float pTouchAreaLocalY) {

            if (pSceneTouchEvent.isActionDown()) {

                return true;
            }
            return super.onAreaTouched(pSceneTouchEvent, pTouchAreaLocalX,
                    pTouchAreaLocalY);
        }
    };

而且我没有找到任何模式来做到这一点。有可能吗?

【问题讨论】:

    标签: android button sprite andengine


    【解决方案1】:

    你不能,onAreaTouched 不是一个事件,它只是精灵类中的一个方法,你可以在你的子类中重写它(就像第一个例子,它是一个匿名子类)。

    但是,您可以扩展 sprite 类,为事件创建一个接口,将它的列表添加到新的 sprite 类并在 onAreaTouched 中运行它的方法。

    【讨论】:

      猜你喜欢
      • 2013-03-07
      • 1970-01-01
      • 2014-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多