具有多个图像/实体的ParallaxLayer以顺序方式滚动

时间:2014-03-17 12:20:26

标签: andengine

您好我是andengine的新手,并尝试使用我从以下示例中获得的ParallaxLayer类来编写基本的sidescroller游戏:http://www.andengine.org/forums/features/parallaxlayer-t5390.html我按照示例运行。

我的问题是如何以顺序的方式显示3个图像(Sun_Stage.png,Moon_Stage.png Dark_stage.png)作为可滚动的背景...首先滚动直到Sun_stage.png完成然后滚动下一个阶段巫婆是Moon_Stage.png?

播放器将在Sun_Stage中启动,而他走过视差层将滚动图像....当Sun_Stage完成(达到其结束宽度),然后下一个阶段Moon_Stage应该可见并滚动?

希望我有意义吗?我不知道是否有另一种方法可以做到这一点...我基本上只想编写一个侧面滚动游戏,它永远不会以可滚动的背景结束而改变。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

Entity parent = new Entity();                 
        attachChild(parent);              
        Sprite mountainsSprite = new Sprite(0, 0, WIDTH, HEIGHT, mountainsTextureRegion, mEngine.getVertexBufferObjectManager());
                          mountainsSprite.setPosition(0, 0);
                          parent.attachChild(mountainsSprite);

                          Sprite starsSprite = new Sprite(0, 0, WIDTH, HEIGHT, starsTextureRegion, mEngine.getVertexBufferObjectManager());
                          starsSprite.setPosition(mountainsSprite.getX()+ mountainsSprite.getWidth(), 0);
                          parent.attachChild(starsSprite);
                          ParallaxLayer parallaxLayer = new ParallaxLayer(camera, true, 4000);
             backgroundParallax.setParallaxChangePerSecond(8);
            backgroundParallax.setParallaxScrollFactor(1);
            backgroundParallax.attachParallaxEntity(new ParallaxEntity(10, parent, true));

这里我所做的是添加所需的精灵以按序列移动到实体。然后我将此实体视为视差实体太视差背景

答案 1 :(得分:1)

拉玛的回答有效但...... 我必须从ParallaxEntity构造函数中删除最后一个参数,设置Entity的位置和维度,并避免将Entity附加到Scene

结果代码如下所示:

Entity parent = new Entity(0, 0, mountainsWidth + starsWidth, height);

// create mountains
Sprite mountainsSprite = new Sprite(0, 0, WIDTH, HEIGHT, mountainsTextureRegion, mEngine.getVertexBufferObjectManager());
parent.attachChild(mountainsSprite);

// create stars
Sprite starsSprite = new Sprite(0, 0, WIDTH, HEIGHT, starsTextureRegion, mEngine.getVertexBufferObjectManager());
parent.attachChild(starsSprite);

// create parallax background
backgroundParallax.setParallaxChangePerSecond(8);
backgroundParallax.setParallaxScrollFactor(1);
backgroundParallax.attachParallaxEntity(new ParallaxEntity(10, parent));