修复transition层级问题
This commit is contained in:
@@ -36,6 +36,13 @@ abstract class Component {
|
||||
return this.entity.stage;
|
||||
}
|
||||
|
||||
public get scene(){
|
||||
if (!this.entity)
|
||||
return null;
|
||||
|
||||
return this.entity.scene;
|
||||
}
|
||||
|
||||
public initialize(){
|
||||
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ class SpriteRenderer extends RenderableComponent {
|
||||
this._origin = sprite.origin;
|
||||
|
||||
this._bitmap = new egret.Bitmap(sprite.texture2D);
|
||||
this.stage.addChild(this._bitmap);
|
||||
this.scene.addChild(this._bitmap);
|
||||
|
||||
return this;
|
||||
}
|
||||
@@ -85,6 +85,6 @@ class SpriteRenderer extends RenderableComponent {
|
||||
|
||||
public onRemovedFromEntity(){
|
||||
if (this._bitmap)
|
||||
this.stage.removeChild(this._bitmap);
|
||||
this.scene.removeChild(this._bitmap);
|
||||
}
|
||||
}
|
||||
@@ -11,14 +11,12 @@ class Scene extends egret.DisplayObjectContainer {
|
||||
private _matrixTransformMatrix: Matrix2D;
|
||||
private _renderers: Renderer[] = [];
|
||||
private _postProcessors: PostProcessor[] = [];
|
||||
private _afterPostProcessorRenderer: Renderer[] = [];
|
||||
private _didSceneBegin;
|
||||
|
||||
public readonly entityProcessors: EntityProcessorList;
|
||||
|
||||
constructor(displayObject: egret.DisplayObject) {
|
||||
constructor() {
|
||||
super();
|
||||
displayObject.stage.addChild(this);
|
||||
this._projectionMatrix = new Matrix2D(0, 0, 0, 0, 0, 0);
|
||||
this.entityProcessors = new EntityProcessorList();
|
||||
this.renderableComponents = new RenderableComponentList();
|
||||
@@ -93,9 +91,11 @@ class Scene extends egret.DisplayObjectContainer {
|
||||
|
||||
public removeRenderer(renderer: Renderer) {
|
||||
this._renderers.remove(renderer);
|
||||
renderer.unload();
|
||||
}
|
||||
|
||||
public begin() {
|
||||
SceneManager.stage.addChildAt(this, 0);
|
||||
if (this._renderers.length == 0) {
|
||||
this.addRenderer(new DefaultRenderer());
|
||||
console.warn("场景开始时没有渲染器 自动添加DefaultRenderer以保证能够正常渲染");
|
||||
@@ -184,17 +184,6 @@ class Scene extends egret.DisplayObjectContainer {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (let i = 0; i < this._afterPostProcessorRenderer.length; i ++){
|
||||
if (i == 0){
|
||||
// TODO: 设置渲染对象
|
||||
}
|
||||
|
||||
if (this._afterPostProcessorRenderer[i].camera){
|
||||
this._afterPostProcessorRenderer[i].camera.forceMatrixUpdate();
|
||||
}
|
||||
this._afterPostProcessorRenderer[i].render(this);
|
||||
}
|
||||
}
|
||||
|
||||
public render() {
|
||||
@@ -205,4 +194,16 @@ class Scene extends egret.DisplayObjectContainer {
|
||||
this._renderers[i].render(this);
|
||||
}
|
||||
}
|
||||
|
||||
public addPostProcessor<T extends PostProcessor>(postProcessor: T): T{
|
||||
this._postProcessors.push(postProcessor);
|
||||
this._postProcessors.sort();
|
||||
postProcessor.onAddedToScene(this);
|
||||
|
||||
if (this._didSceneBegin){
|
||||
postProcessor.onSceneBackBufferSizeChanged(this.stage.stageWidth, this.stage.stageHeight);
|
||||
}
|
||||
|
||||
return postProcessor;
|
||||
}
|
||||
}
|
||||
@@ -91,7 +91,8 @@ class SceneManager {
|
||||
*/
|
||||
public static startSceneTransition<T extends SceneTransition>(sceneTransition: T): T {
|
||||
if (this.sceneTransition) {
|
||||
throw new Error("在前一个场景完成之前,不能开始一个新的场景转换。");
|
||||
console.error("在前一个场景完成之前,不能开始一个新的场景转换。");
|
||||
return;
|
||||
}
|
||||
|
||||
this.sceneTransition = sceneTransition;
|
||||
|
||||
Reference in New Issue
Block a user