本帖最后由 ekmomo 于 2018-4-26 12:52 编辑
Scene_Base.prototype.addWindow = function(window) { this._windowLayer.addChild(window);//这里 };
Scene_Base.prototype.addWindow = function(window) {
this._windowLayer.addChild(window);//这里
};
一、本质上讲
addwindow是在场景对象的_windowLayer属性下addChild。
addChild是PIXI.js原生方法,它需要一个stage(PIXI.Container构造的对象)来放置精灵,而_windowLayer就是一个stage。
二、按照MV本身的开发规范
addwindow顾名思义是添加window对象的,window对象除了包含PIXI.Sprite的prototype还应当在Window_Base的原型链上。
而addChild就不然,你可以直接添加精灵(PIXI.Sprite构造出来的对象)到场景中去。
三、Scene本身也是一个stage 只不过它包含了自己的属性和方法
Scene_Base.prototype.initialize = function() { Stage.prototype.initialize.call(this);//这里 this._active = false; this._fadeSign = 0; this._fadeDuration = 0; this._fadeSprite = null; this._imageReservationId = Utils.generateRuntimeId(); };
Scene_Base.prototype.initialize = function() {
Stage.prototype.initialize.call(this);//这里
this._active = false;
this._fadeSign = 0;
this._fadeDuration = 0;
this._fadeSprite = null;
this._imageReservationId = Utils.generateRuntimeId();
};
Stage.prototype.initialize = function() { PIXI.Container.call(this);//这里 // The interactive flag causes a memory leak. this.interactive = false; };
Stage.prototype.initialize = function() {
PIXI.Container.call(this);//这里
// The interactive flag causes a memory leak.
this.interactive = false;
};
四、建议
在不了解绘图机制的情况下尽量多使用addWindow,少量使用addChild,避免直接addChild到Scene,并避免使用drawImage。
可以参考YEP的CTB系统里ICON的绘制,而MOG大多是反面教材…… |