5

我在滚动我的子场景时遇到问题。我创建了一个 CameraScene,我试图通过触摸事件滚动它。我的子场景没有滚动,但是,如果我在连接到引擎的相机上滚动父场景滚动正常。

那么我如何让我的子场景滚动而没有附加到我父母场景的对象滚动呢?

public StatsScene(Context context, VertexBufferObjectManager vbo) {
    super(new SmoothCamera(0, 0, WITDH, HEIGHT, 0, SPEEDY, 0));

    this.setOnSceneTouchListener(new IOnSceneTouchListener() {
        @Override
        public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) {
            if(pSceneTouchEvent.getAction() == MotionEvent.ACTION_DOWN) {
                mTouchY = pSceneTouchEvent.getMotionEvent().getY();
            }
            else if(pSceneTouchEvent.getAction() == MotionEvent.ACTION_MOVE) {
                float newY = pSceneTouchEvent.getMotionEvent().getY();

                mTouchOffsetY = (newY - mTouchY);

                float newScrollX = getCamera().getCenterX();
                float newScrollY = getCamera().getCenterY() - mTouchOffsetY;

                getCamera().setCenter(newScrollX, newScrollY);

                mTouchY = newY;
            }
            return true;
        }
    });
}
4

2 回答 2

0

我并没有真正进入 AndEngine,我不确定我是否能解决您的问题(在您的代码中与“myparents”或“childscene”无关),但是当某些东西附加到您的场景时,这意味着它会移动用它。您可以向另一个方向滚动您的孩子以保持他们的位置,但这可能会给您带来长期的麻烦。如果可能,请尝试将您的滚动场景和您的对象分开,这意味着它们不应该是彼此的孩子。相反,如果您希望他们保持相关性,请给他们一个共同的父母。如果您现在移动一个对象,兄弟姐妹将不会。希望有帮助。

于 2013-08-01T19:25:00.853 回答
0

根据您的描述,我认为您的父场景是您输入的场景,所以我猜,如果我错了,请纠正我,您正在设置您的子场景,如下所示:

mMainScene.attachChild(mChildScene);

在这种情况下,您将不得不处理将输入偏离给孩子而不是父母。但是,您有几个选择:

  1. 如果您的子场​​景占据全屏并且您无需担心更新/绘制父场景,只需将场景与

    mEngine.setScene(mChildScene);

  2. 如果您确实需要继续绘制和更新您的父场景,请检查 MenuScene 预制类和 Scene.setChildScene() 方法,我认为有一个关于如何在 AndengineExamples 项目中使用它的示例。使用这个类可以让你接受子场景的输入,但仍然绘制和更新你的主场景,它甚至可以让你以模态方式设置你的孩子。

于 2013-08-03T15:48:01.877 回答