Scene:
The Scene class is the root container for all objects to be drawn on the screen. A Scene has a specific amount of Layers, which themselves can contain a (fixed or dynamic) amount of Entities. There are subclasses, like the CameraScene/HUD/MenuScene that are drawing themselves to the same position of the Scene no matter where the camera is positioned to.
Scene是屏幕上所有对象的根容器,它有许多的曾用来包含其他实体,它可以有许多特定的子类。
一般情况下继承BaseGameActivity的类会覆写onLoadScene()方法
public Scene onLoadScene() { this.mEngine.registerUpdateHandler(new FPSLogger()); final Scene scene = new Scene(1); scene.setBackground(new ColorBackground(0.09804f, 0.6274f, 0.8784f)); final Text textCenter = new Text(100, 60, this.mFont, "Hello AndEngine!\nYou can even have multilined text!", HorizontalAlign.CENTER); final Text textLeft = new Text(100, 200, this.mFont, "Also left aligned!\nLorem ipsum dolor sit amat...", HorizontalAlign.LEFT); final Text textRight = new Text(100, 340, this.mFont, "And right aligned!\nLorem ipsum dolor sit amat...", HorizontalAlign.RIGHT); scene.getTopLayer().addEntity(textCenter); scene.getTopLayer().addEntity(textLeft); scene.getTopLayer().addEntity(textRight); return scene; }
1.Scene构造方法
public Scene(final int pLayerCount) { this.mLayerCount = pLayerCount; this.mLayers = new ILayer[pLayerCount]; this.createLayers(); }
2.创建层
private void createLayers() { final ILayer[] layers = this.mLayers; for(int i = this.mLayerCount - 1; i >= 0; i--) { layers[i] = new DynamicCapacityLayer(); } }
3.获取最上面的层:
public ILayer getTopLayer() { return this.mLayers[this.mLayerCount - 1]; }
从Scene类上看public class Scene extends Entity {}
他继承自Entity,它的层上面又可以添加新的Entity,所以在接受上属于合成模式。