Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在AndEngine中滚动儿童场景_Android_Scroll_Andengine_Scene - Fatal编程技术网

Android 在AndEngine中滚动儿童场景

Android 在AndEngine中滚动儿童场景,android,scroll,andengine,scene,Android,Scroll,Andengine,Scene,滚动我的孩子场景时出现问题。我已经创建了一个相机场景,我正试图用触摸事件滚动它。我的子场景没有滚动,但是,如果我在连接到引擎的相机上滚动,父场景滚动良好 那么,如何让我的子场景在没有附加到父场景的对象的情况下滚动呢 public StatsScene(Context context, VertexBufferObjectManager vbo) { super(new SmoothCamera(0, 0, WITDH, HEIGHT, 0, SPEEDY, 0)); this.

滚动我的孩子场景时出现问题。我已经创建了一个相机场景,我正试图用触摸事件滚动它。我的子场景没有滚动,但是,如果我在连接到引擎的相机上滚动,父场景滚动良好

那么,如何让我的子场景在没有附加到父场景的对象的情况下滚动呢

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;
        }
    });
}

我不太喜欢AndEngine,我也不确定我是否正确处理了您的问题(在您的代码中,与“我的父母”或“孩子场景”无关),但当某个东西附加到您的场景时,这意味着它将随之移动。你可以将你的孩子往另一个方向滚动,以保持他们的位置,但从长远来看,这可能会给你带来麻烦。如果可能,尝试将滚动场景和对象分开,这意味着它们不应该是彼此的子对象。相反,如果你想让他们保持联系,给他们一个共同的父母。如果现在移动一个对象,则兄弟对象不会移动。希望这能有所帮助。

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

mMainScene.attachChild(mChildScene);
在这种情况下,您必须处理将输入偏离到子项而不是父项的问题。但是,您在这里有几个选项:

  • 如果您的子场景占据了整个屏幕,并且您不需要担心更新/绘制父场景,只需使用替换场景即可

    mEngine.setScene(mChildScene)

  • 如果您确实需要继续绘制和更新父场景,请检查MenuScene预制类和scene.setChildScene()方法,我认为有一个示例说明如何在AndEngineeExamples项目中使用此方法。使用该类可以在子场景上进行输入,但仍然可以绘制和更新主场景,甚至可以以模态方式设置子场景