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

Project1

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

[有事请教] 为什么在window的update里写this.y-=1会没有效果。

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1854
在线时间
395 小时
注册时间
2014-7-7
帖子
264

开拓者

跳转到指定楼层
1
发表于 2020-12-19 12:45:53 | 显示全部楼层 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
JAVASCRIPT 代码复制
  1. Window_TitleCommand_update = Window_TitleCommand.update
  2. Window_TitleCommand.update = function (params) {
  3.     Window_TitleCommand_update.call(this)
  4.     this.y -= 1
  5. }


而直接在控制台里修改的update就可行。
下面就是控制台的代码

JAVASCRIPT 代码复制
  1. a=-5
  2. asd = SceneManager._scene._commandWindow.update
  3. SceneManager._scene._commandWindow.update = function(){
  4.   asd.call(this)
  5.   if (this.y>=20){
  6.       a+=0.1
  7.   this.y-=(a**3)/100
  8.   }
  9.  
  10. }

而且在scene_title里改也有效。
奇怪。。
take is cheap

Lv3.寻梦者

梦石
0
星屑
1854
在线时间
395 小时
注册时间
2014-7-7
帖子
264

开拓者

2
 楼主| 发表于 2020-12-19 21:24:26 | 显示全部楼层

js的构造函数的this以及prototype的实际含义以及call()的内容,许久没碰js,被遗忘了。
总之感谢解答。
(至于var和窗口飘走什么的就别再意啦,,为了测试方便直接上了。)
take is cheap
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1854
在线时间
395 小时
注册时间
2014-7-7
帖子
264

开拓者

3
 楼主| 发表于 2020-12-19 21:42:04 | 显示全部楼层
catinfiltrator 发表于 2020-12-19 20:37
学过一点编程。

Window_TitleCommand 和 SceneManager 是两种变量,所以它们的数据是不互通的。

啊这。确实是错了。
有几点我补充一下。
SceneManager里有一个属性叫_scene,指向当前场景的实例。
而当前场景是scene_title,所以
SceneManager._scene._commandWindow.update 里的this指向_commandWindow,
它是Window_TitleCommand的实例。
所以,this.y不是问题所在,同楼上所述。
关键是对象的update实际上是在构造函数的prototype里。
我把这个当作直接定义在Window_TitleCommand里的this.update并成功把它和普通函数的使用混淆了。
嗯,大概就是这样。
总之还是感谢解答啦。
take is cheap
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1854
在线时间
395 小时
注册时间
2014-7-7
帖子
264

开拓者

4
 楼主| 发表于 2020-12-19 21:47:33 | 显示全部楼层
yang1zhi 发表于 2020-12-19 14:59
说明他在其他地方也有设定这个值

感谢解答。
take is cheap
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-6-10 08:01

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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