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

Project1

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

[已经解决] 关于JS脚本学习的疑问

[复制链接]

Lv5.捕梦者

梦石
0
星屑
31215
在线时间
608 小时
注册时间
2014-7-18
帖子
729

开拓者

跳转到指定楼层
1
发表于 2016-5-7 13:08:19 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
经过对比VA脚本和JS脚本,我有了以下疑问:
1.是不是
function Window_Base() {
    this.initialize.apply(this, arguments);
}
Window_Base.prototype = Object.create(Window.prototype);
就相当于
class Window_Base < Window?
2.是不是
Window_Base.prototype.initialize = function(x, y, width, height) {
    Window.prototype.initialize.call(this);
    this.loadWindowskin();
    this.move(x, y, width, height);
    this.updatePadding();
    this.updateBackOpacity();
    this.updateTone();
    this.createContents();
    this._opening = false;
    this._closing = false;
    this._dimmerSprite = null;
};
就相当于
  def initialize(x, y, width, height)
    super
    self.windowskin = Cache.system("Window")
    update_padding
    update_tone
    create_contents
    @opening = @closing = false
  end?
3.那么Window_Base.prototype.constructor = Window_Base;有时什么意思?
其中的constructor又是什么方法?

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

13
发表于 2016-5-14 19:54:42 | 只看该作者
xjzsq 发表于 2016-5-14 17:12
对不起,我完善一下问题:
2.在VA中,想要重新定义场景中的一个方法,例如我想在地图中显示一个窗口,我 ...

2. VA 中 class Scene_Map < Scene_Base 也不是类定义,只是打开类(open a class)
无论 VA 还是 MV 都不需要重新定义

3. 找对应类的构造函数(通常是调用 initialize 方法)

点评

MV 中没有打开类这一说法  发表于 2016-5-15 07:34
是不是mv中不用打开类?  发表于 2016-5-14 22:17
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
31215
在线时间
608 小时
注册时间
2014-7-18
帖子
729

开拓者

12
 楼主| 发表于 2016-5-14 17:12:40 | 只看该作者
taroxd 发表于 2016-5-13 21:15
1. 不用。方法类似 ruby 的 alias,你可以参考 MV 自带的那些插件
2. 没看懂问题
3. 没看懂问题

对不起,我完善一下问题:
2.在VA中,想要重新定义场景中的一个方法,例如我想在地图中显示一个窗口,我必须更改Scene_Map中的start方法,那样我必须先写上
class Scene_Map < Scene_Base
end
然后在中间重新定义start,
但是在8L的回答中,直接用的是Scene_Map.prototype,createDisplayObjects = fuction(){
}
然后把该方法的内容都加了进去,
是不是不用再重新定义一次场景了?(fuction Scene_Map...之类的代码)
3.8L的
this._nameWindow = new Window_Help(1)
这行代码中,参数“1”是怎么回事?
为什么我在Window_Help中没有找到需要加参数的标志?
如果改成
this._nameWindow = new Window_Base(1)
的话,还需要加上参数“1”吗?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1232
在线时间
1017 小时
注册时间
2011-4-30
帖子
1516
11
发表于 2016-5-14 17:07:19 | 只看该作者
xjzsq 发表于 2016-5-13 19:57
1.是不是在JS里面向Scene_Map.prototype.createDisplayObjects里添加方法,需要把方法里的内容重新再写一 ...

1,这只是一种写法,
Scene_Map.prototype.createDisplayObjects =function() {}
这种是把一个function 赋予 Scene_Map.prototype.createDisplayObjects  ,这样原本的  Scene_Map.prototype.createDisplayObjects 所代表的方法就被替代了,
解决方法有二,
一,在新的方法里把原来的方法里的内容重新写一遍
二,把原来的方法赋与一个变量 , 在新的方法里调用这个方法,
因为这个变量 和 新方法 的this 是不同的 ,所以需要 .call(this)


2  是不是场景的方法可以直接使用,而不用再定义类?
额,场景是指Scene_Map 吗? 已经被定义了吧

3,Window_Help的那个行数为“1”是怎么回事?
这个是Window_Help的一个参数,控制窗口的行数(行数就是高发变化)
Window_Base 的参数与之不同,你应该看原版mv的相应脚本
(可以参考我的机翻mv)
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

10
发表于 2016-5-13 21:15:45 | 只看该作者
本帖最后由 taroxd 于 2016-5-13 21:18 编辑
xjzsq 发表于 2016-5-13 19:57
1.是不是在JS里面向Scene_Map.prototype.createDisplayObjects里添加方法,需要把方法里的内容重新再写一 ...


1. 不用。方法类似 ruby 的 alias,你可以参考 MV 自带的那些插件
2. 没看懂问题
3. 没看懂问题

请尽量使用代码和英文提问,不然的话就会像后两个问题那样,我都没看懂。当然,最好也不要一贴多问咯
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
31215
在线时间
608 小时
注册时间
2014-7-18
帖子
729

开拓者

9
 楼主| 发表于 2016-5-13 19:57:38 | 只看该作者
本帖最后由 xjzsq 于 2016-5-14 17:39 编辑
汪汪 发表于 2016-5-11 17:02
Scene_Map.prototype.createDisplayObjects = function() {
        //创建精灵组
    this.createSpriteset();

1.是不是在JS里面向Scene_Map.prototype.createDisplayObjects里添加方法,需要把方法里的内容重新再写一遍?
2.是不是场景的方法可以直接使用,而不用再定义类?
3.Window_Help的那个行数为“1”是怎么回事?
在Window_Base中也要加上这个参数吗?
重新完善一下问题:2.在VA中,想要重新定义场景中的一个方法,例如我想在地图中显示一个窗口,我必须更改Scene_Map中的start方法,那样我必须先写上
class Scene_Map < Scene_Base
end
然后在中间重新定义start,
但是在8L的回答中,直接用的是Scene_Map.prototype,createDisplayObjects = fuction(){
}
然后把该方法的内容都加了进去,
是不是不用再重新定义一次场景了?(fuction Scene_Map...之类的代码)
3.8L的
this._nameWindow = new Window_Help(1)
这行代码中,参数“1”是怎么回事?
为什么我在Window_Help中没有找到需要加参数的标志?
如果改成
this._nameWindow = new Window_Base(1)
的话,还需要加上参数“1”吗?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1232
在线时间
1017 小时
注册时间
2011-4-30
帖子
1516
8
发表于 2016-5-11 17:02:31 | 只看该作者
本帖最后由 汪汪 于 2016-5-11 17:06 编辑

JAVASCRIPT 代码复制
  1. Scene_Map.prototype.createDisplayObjects = function() {
  2.         //创建精灵组
  3.     this.createSpriteset();
  4.         //创建地图名称窗口
  5.     this.createMapNameWindow();
  6.     //创建窗口层
  7.     this.createWindowLayer();
  8.         //创建所有窗口
  9.     this.createAllWindows();
  10.  
  11.     //添加部分 创建一个显示名字的窗口
  12.     this.createNameWindow();
  13.  
  14.  
  15.  
  16. };
  17.  
  18. //创建一个显示名字的窗口
  19. Scene_Map.prototype.createNameWindow = function() {
  20.         this._nameWindow = new Window_Help(1) //设置为 一个 一行的  窗口帮助
  21.         this._nameWindow.setText("名字") //设置该窗口文本为 "名字"
  22.     this.addWindow(this._nameWindow); //窗口添加到窗口层
  23.  
  24. };

回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
31215
在线时间
608 小时
注册时间
2014-7-18
帖子
729

开拓者

7
 楼主| 发表于 2016-5-11 12:13:49 | 只看该作者
tseyik 发表于 2016-5-9 17:46
參考
マップ上に常に情報ウィンドウを表示する
http://ktnhmv.jugem.jp/?cid=5

日站打不开啊,能不能帮忙复制一下

点评

我的意思是我无法翻墙,打不开网页,所以请您帮忙复制一下内容  发表于 2016-5-13 13:52
這個是js+遂段解折,単単下js,學習効果大幅下降,不如直接參考本體的js碼  发表于 2016-5-11 13:46
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
23068
在线时间
8648 小时
注册时间
2011-12-31
帖子
3367
6
发表于 2016-5-9 17:46:44 | 只看该作者
xjzsq 发表于 2016-5-7 22:42
谢谢回答!
那么,我还有几个问题,请您解答一下:
1.我新建了一个窗口,想在地图画面上显示出来,那么我 ...

參考
マップ上に常に情報ウィンドウを表示する
http://ktnhmv.jugem.jp/?cid=5
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
31215
在线时间
608 小时
注册时间
2014-7-18
帖子
729

开拓者

5
 楼主| 发表于 2016-5-9 12:30:33 | 只看该作者
汪汪 发表于 2016-5-7 22:46
new Window_MapStatus()

以及

大神能不能给个例子,比如在地图上显示人物名字
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-25 00:46

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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