设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3008|回复: 5
打印 上一主题 下一主题

[有事请教] 请问,addChild 和 addWindow 有什么区别?

[复制链接]

Lv2.观梦者

梦石
0
星屑
511
在线时间
50 小时
注册时间
2009-7-1
帖子
87
跳转到指定楼层
1
发表于 2018-4-25 16:33:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
原先以为两者功能是一样的,直到今天尝试了一下窗口之间的覆盖,才发现使用addWindow的话即时上面的窗口有透明度也会盖住下面的窗口,而addChild就不会这样。那么两者之间为什么会产生这种差异?

Lv3.寻梦者

梦石
0
星屑
3404
在线时间
461 小时
注册时间
2013-12-7
帖子
333
2
发表于 2018-4-26 12:48:26 | 只看该作者
本帖最后由 ekmomo 于 2018-4-26 12:52 编辑

JAVASCRIPT 代码复制
  1. Scene_Base.prototype.addWindow = function(window) {
  2.     this._windowLayer.addChild(window);//这里
  3. };


一、本质上讲
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 只不过它包含了自己的属性和方法
JAVASCRIPT 代码复制
  1. Scene_Base.prototype.initialize = function() {
  2.     Stage.prototype.initialize.call(this);//这里
  3.     this._active = false;
  4.     this._fadeSign = 0;
  5.     this._fadeDuration = 0;
  6.     this._fadeSprite = null;
  7.     this._imageReservationId = Utils.generateRuntimeId();
  8. };


JAVASCRIPT 代码复制
  1. Stage.prototype.initialize = function() {
  2.     PIXI.Container.call(this);//这里
  3.  
  4.     // The interactive flag causes a memory leak.
  5.     this.interactive = false;
  6. };


四、建议
在不了解绘图机制的情况下尽量多使用addWindow,少量使用addChild,避免直接addChild到Scene,并避免使用drawImage。
可以参考YEP的CTB系统里ICON的绘制,而MOG大多是反面教材……

点评

受教了!!  发表于 2018-4-26 13:46
赞同  发表于 2018-4-26 13:46

评分

参与人数 1+1 收起 理由
daiboy12 + 1 感谢解答!之前也阅读过您在别的帖子发表的.

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
511
在线时间
50 小时
注册时间
2009-7-1
帖子
87
3
 楼主| 发表于 2018-4-26 17:54:47 | 只看该作者
ekmomo 发表于 2018-4-26 12:48
Scene_Base.prototype.addWindow = function(window) {
    this._windowLayer.addChild(window);//这里
}; ...

感谢解答!直接也阅读过您在别的帖子回复的回答,非常详尽,让我学习到很多!
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1232
在线时间
1017 小时
注册时间
2011-4-30
帖子
1516
4
发表于 2018-4-27 00:36:22 | 只看该作者
addwindow就是添加到窗口层中,主要效果就是会相互遮盖。
当然,也可以加sprite。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-6 13:24

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表