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

Project1

 找回密码
 注册会员
搜索

contents.clear()怎么在执行这个的时候,再执行一段函数

查看数: 3138 | 评论数: 6 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-4-11 16:48

正文摘要:

我在窗口写了一些精灵 但是精灵是不能用contents.clear()清空的 所以我想要在contents.clear()的时候清空一下精灵。 但是要在脚本里一个个找contents.clear(),也太费事了 ...

回复

芯☆淡茹水 发表于 2019-4-12 09:19:53
如果不想搬 Bitmap 的 clear 方法内容, 可以用 call , 但指针需要换成  this.contents
比如这样:
  1. var Last_Window_BaseCreateContents = Window_Base.prototype.createContents;
  2. Window_Base.prototype.createContents = function() {
  3.     Last_Window_BaseCreateContents.call(this);
  4.     this.contents.clear = this.clearAndDeleteSprite.bind(this);
  5. };
  6. Window_Base.prototype.clearAndDeleteSprite = function() {
  7.     Bitmap.prototype.clear.call(this.contents);
  8.     alert('清除精灵');
  9. };
复制代码

点评

受教了  发表于 2019-4-12 10:30
芯☆淡茹水 发表于 2019-4-11 22:58:24
旧的么! 那生成一个默认的 状态窗口 看看





至于具体报错是否你自己的 清除精灵 的方法, 这也无可获知,
但至少,先判断再清除总会吧!

this.精灵 && this.精灵.清除();

如果你要说你总是一直报错,也没有具体报错内容或图片,那俺也没办法。
反正改法就是 2L , 懂 js 的自然懂。

评分

参与人数 1+1 收起 理由
yang1zhi + 1 认可答案

查看全部评分

芯☆淡茹水 发表于 2019-4-11 22:00:01
芯☆淡茹水 发表于 2019-4-11 21:45
Bitmap.prototype.clear = function() {
    this.clearRect(0, 0, this.width, this.height);
};



点评

新的这里是可以的。改了后,旧的那里报错  发表于 2019-4-11 22:36
芯☆淡茹水 发表于 2019-4-11 21:45:55
Bitmap.prototype.clear = function() {
    this.clearRect(0, 0, this.width, this.height);
};

这不还是一个 等号 !
方法 也是一个对象, 可以随时更改。

点评

会报错Maximum call stack size exceeded  发表于 2019-4-11 21:52
芯☆淡茹水 发表于 2019-4-11 21:29:34
本帖最后由 芯☆淡茹水 于 2019-4-11 21:34 编辑

contents 是一个 bitmap , 可以直接改它的 clear 方法啊。

在生成 contents 后, 重新绑一个 clear 方法, 照抄 Bitmap 的 clear 方法内容, 再加上你的 清除精灵 的方法。

JAVASCRIPT 代码复制
  1. var Last_Window_BaseCreateContents = Window_Base.prototype.createContents;
  2. Window_Base.prototype.createContents = function() {
  3.     Last_Window_BaseCreateContents.call(this);
  4.     this.contents.clear = this.clear.bind(this);
  5. };
  6. Window_Base.prototype.clear = function() {
  7.     this.contents.clearRect(0, 0, this.contents.width, this.contents.height);
  8.     this.清除精灵();
  9. };


改在 Window_Base 里,所有以 Window_Base 为基础建立的窗口, 其 this.contents.clear()  运行的都是重新绑的这个方法。
其他 Sprite 里的 bitmap.clear() 仍是原来的方法。

点评

哦。函数也可以直接用等号。我以为要写Bitmap的clear  发表于 2019-4-11 21:36
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2025-1-11 13:57

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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