Project1

标题: 【教學】MV教學系列:【一】手把手教你如何在MV裡自製視窗 [打印本页]

作者: 余烬之中    时间: 2015-12-5 10:16
标题: 【教學】MV教學系列:【一】手把手教你如何在MV裡自製視窗
本帖最后由 余烬之中 于 2015-12-5 10:55 编辑


【教學】MV教學系列:【一】手把手教你如何在MV裡自製視窗
写在前面的一些说明



此套教程来源自台湾巴哈姆特的【James Eviat Ko / J.E.K.】,亦称【食夢】,其账号是【jamessl2】,原帖请戳我进入

已经联系作者并取得了在66RPG的转载授权,但是我们未允许也没有权利允许二次转载,希望转载请联系原作者。

原始教程由@鑫晴 发现,并代为联系授权,特此感谢。


作者: 余烬之中    时间: 2015-12-5 10:31
本帖最后由 余烬之中 于 2015-12-7 22:47 编辑


此楼放帖子内容

原文以繁中写成,搬运时考虑到简中与繁中也有部分文法不同,故没有强行转换为简中。看不习惯繁中的同学请点击网页左上角【繁體中文】,待其变成【简体中文】后再次点击,即可强行将文本内容转换为简中。

由于原始地址和6R的代码高亮方式有差异,对部分内容进行了调整以免除困扰,为了阅读的流畅性,并没有特别注明调整的部分。如有任何冲突,以原始地址内容为准。







展开以浏览内容

作者: 真_真空    时间: 2015-12-7 22:24
本帖最后由 真_真空 于 2015-12-7 22:44 编辑

挑个虫,很小的错误啦,最后一段代码里
Window_Testing.prototype.initialize = function(x, y, width, height) {
    Window_Selectable.prototype.initialize.call(this, x, y, width, height);
    this.drawSometext();
}
这句话 this.drawSometext();改成 this.drawSomeText();
我说怎么直接复制会出错= =

很不错的教程

作者: Stolf    时间: 2016-1-9 16:34
【教學】MV教學系列:【一】手把手教你如何在MV裡自製視窗
看起来是一个系列的样子,所以说【二】【三】【四】【五】有吗?
作者: 欧买歌    时间: 2016-1-9 16:38
为什么不用简繁转换器
作者: 梦幻学习机器    时间: 2016-1-9 17:26
这个太好了!
雪中送炭的教程,谢谢楼主和原作者
作者: 梦幻学习机器    时间: 2016-1-11 22:06

作者: aaaassss123    时间: 2016-1-13 11:42
那要调用角色信息数据要怎么写呢,比如我要调取角色信息数据放在界面至中的位置上
作者: bualojio    时间: 2016-1-17 13:16
这个要改成右键退出视窗,怎么改
作者: 夜狠简单    时间: 2016-1-18 16:38
我是不是写错了,发生错误
  1. function Window_Testing() {
  2.     this.initialize.apply(this, arguments);
  3. }
  4. Window_Testing.prototype = Object.create(Window_Selectable.prototype);
  5. Window_Testing.prototype.initialize = function(x, y, width, height) {
  6.     Window_Selectable.prototype.initialize.call(this, x, y, width, height);
  7.     this.drawSomeText();
  8. }

  9. Window_Testing.prototype.drawSomeText = function() {
  10.     var textW = 360;
  11.     var textH = 0;
  12.     this.drawText("這是你的第一個自製視窗", 0, 0, textW, 'left');
  13.     textH += this.lineHeight();
  14.     this.drawText("靠左", 0, textH, textW, 'left');
  15.     textH += this.lineHeight();
  16.     this.drawText("置中", 0, textH, textW, 'center');
  17.     textH += this.lineHeight();
  18.     this.drawText("靠右", 0, textH, textW, 'right');
  19. }


  20. function Scene_Testing() {
  21.     this.initialize.apply(this, arguments);
  22. }
  23. Scene_Testing.prototype = Object.create(Scene_MenuBase.prototype);
  24. Scene_Testing.prototype.initialize = function() {
  25.     Scene_MenuBase.prototype.initialize.call(this);
  26. };
  27. Scene_Testing.prototype.create = function() {
  28. Scene_MenuBase.prototype.create.call(this);
  29.     this._commandWindow = new Window_Testing(0, 0, 400, 200);
  30. this.addWindow(this._commandWindow);
  31. }
  32. Scene_Testing.prototype.update = function() {
  33.     if (Input.isTriggered('escape') || Input.isTriggered('cancel')) {
  34.         this._commandWindow.hide();
  35.         SceneManager.goto(Scene_Map);
  36.     }
  37. };
复制代码

作者: 一步天堂    时间: 2016-1-19 22:52
我下载的是破解版的 JS文件夹在 MV的文件夹里, 然后我复制了上面的代码按照教程的步骤
用Notepad++写的JS  然后复制进文件夹   但是在MV的插件管理器中就是不显示。
还有就是脚本SceneManager.goto(Scene_Testing) 这个有什么特殊含义吗?是大部分都是这么激活插件还是怎么弄?
作者: 西姐    时间: 2016-1-20 20:22
我弄成好感显示窗口了,希望能更新下怎么用图片做背景,还有变量的数字怎么用图片显示{:2_275:}对于我来说非常有用
作者: aaaassss123    时间: 2016-1-21 17:36
没有后续了,挺可惜的,我也等着教程呢,比如按钮下增加图片啥的
作者: ziemo375    时间: 2016-2-21 11:03
很好的 教程.可惜没有后续.很受用~~谢谢
作者: xjzsq    时间: 2016-2-21 12:56
一步天堂 发表于 2016-1-19 22:52
我下载的是破解版的 JS文件夹在 MV的文件夹里, 然后我复制了上面的代码按照教程的步骤
用Notepad++写的JS  ...

第一个问题我也不清楚,提示是否把后缀名改成了.js,还好像有编码问题……
第二个问题,这个是让你从地图场景(Scene_Map)跳转到教程中创建的场景(名字叫啥我忘了……),
就像你从你家客厅进入你家厨房是一个道理,而显示出来的窗口就像你在厨房做饭,
当然,不是所有的插件都是需要转换场景的,就像你想看电视,只需在客厅里打开电视就行了。
至于需要什么命令来激活未创建场景的插件,这个情况很多,而且我也在学习中,所以就不便解释了。希望你能理解我的意思。
作者: 冷峻逸    时间: 2016-2-22 17:49
提示: 作者被禁止或删除 内容自动屏蔽
作者: kurokmiya    时间: 2016-3-18 14:51
=.=这个是啥 我是哪里搞错了吗.........求解
作者: mobi9900    时间: 2016-3-18 23:20
先MARK,后學習
作者: s20031221mx    时间: 2016-3-20 10:23
感谢楼主分享,我寻了好久了
作者: qgpcybs    时间: 2016-4-22 18:10
叮!学会了技能:写窗体

谢谢作者和楼主搬运
作者: zw66duo    时间: 2016-4-26 11:17
看下,新人学习
作者: king    时间: 2016-4-29 14:52
本帖最后由 king 于 2016-4-29 21:21 编辑

Window_Testing.prototype.drawSomeText = function() {
    var textW = 360;
    var textH = 0;
    this.drawText("Frist Window", 0, 0, textW, 'left');
    textH += this.lineHeight();
    this.drawText("Gold" + $gameParty.gold(), 0, textH, textW, 'left');
    textH += this.lineHeight();
    this.drawText($gameMap.displayName(), 0, textH, textW, 'center');
    textH += this.lineHeight();
    this.drawText($gameVariables.value(15), 0, textH, textW, 'right');
}

今天翻了翻一些自带的脚本,可以显示 金钱   地图名字   变量15 的数值
但是,怎么显示 一张窗口背景图片? 文字显示,无法显示中文,用中文会出现??



作者: alexcyk    时间: 2016-5-20 22:26
如果采用记事本编写程序,需要显示中文,无论是简体还是繁体,记得要另存为后缀为.js的文件,而且编码(E):一定要改成UTF-8,不能采用默认的ANSI,否则显示乱码。

乱码.jpg (110.17 KB, 下载次数: 41)

乱码

乱码

作者: 地狱的蓝炎    时间: 2016-5-30 23:39
这个是入门教程吗?! 又是prototype又是call的,js语言水准绝对得高阶才行啊。。
作者: 地狱的蓝炎    时间: 2016-5-30 23:40
alexcyk 发表于 2016-5-20 22:26
如果采用记事本编写程序,需要显示中文,无论是简体还是繁体,记得要另存为后缀为.js的文件,而且编码(E): ...

感觉你这是记事本的编码问题,改成UTF-8试试
作者: 宁静    时间: 2016-6-2 17:08
改成UTF-8也是乱码啊= =

为了这乱码我连游戏默认字体都改了- -
作者: 7pakinek    时间: 2016-7-12 05:42
留着,明早研究研究,谢谢分享 搬运工大湿

作者: 淺川一葉    时间: 2016-7-12 17:05
新手来问,这是什么问题?

猎豹截图20160712170422.png (159.82 KB, 下载次数: 30)

猎豹截图20160712170422.png

猎豹截图20160712170430.png (78.47 KB, 下载次数: 26)

猎豹截图20160712170430.png

作者: xjh01    时间: 2016-8-1 14:46
深入浅出,通俗易懂。我作为菜鸟,认为这个教学很棒。问题是,快出23456789啊
作者: sfliad    时间: 2016-9-6 17:45
关于这个初级窗口脚本,有2个问题想请教一下
1、如果去掉那个背景模糊的处理
2、变量\v[1]这个文字输入无法引用到这个窗口,如何可以做到,系统自建的文字窗那样可以应用\v等公式
作者: Zackyooo    时间: 2016-11-8 11:37
我有个问题
Window_Testing.prototype.initialize 这是给Window_Testing添加initialize函数的意思 我知道 但是后面调用Window_Selectable的initialize时候 为什么要加prototype,直接用Window_Selectable.initialize.call(this, x, y, width, height)不行吗

作者: 宁静大叔    时间: 2016-11-13 21:08
问一下,想让这个窗口背景和边框为透明,应该怎么写?
作者: salvareless    时间: 2016-12-9 02:37
233333,无敌了,我想请教原作者jamessl2一个问题,结果我好不容易翻了墙,巴哈雷姆跟我说我需要注册,好吧,我注册了,本来想写封站内信,写了半天写好了,点发送,告诉我需要手机认证才能对非好友会员写信。我又去弄手机认证,填好资料点获取认证的时候告诉我,你所在的地区有会员违规,暂定停止国内手机号的认证。我一想这样的话,我就先加好友呗,大不了多等等,结果一点加好友,提示需要手机认证或者论坛等级达到3= =。这里其实我已经有点想跪的冲动。但是我还是忍住了,我去弄弄看论坛等级,根据经验论坛等级还不就是发帖挂机,挂机估计来不及,我就发发帖吧,结果发帖也需要手机认证= =。那我就在原作者空间随便留个言吧,留言还是需要手机认证= =
尼玛,就是横竖不让国内的人联系到你们论坛呗,有意思么= =
我TMD就是想问问怎么样窗口保持实时刷新,或者有没有什么能写在事件脚本中的代码可以让指定的窗口重新加载之类的。搞了一晚上,毛都没收获半根,也不知道外站的论坛这是怎么了。原谅我图个草。我是真的有想知道的问题,上天下地求问无门。
作者: salvareless    时间: 2016-12-9 02:48

如上图,我想做一个放置游戏,所以需要设计一个类似于这样的窗口。我自己已经有一些想法。例如:
我可以就用这个教程的窗口代码,在代码中加一句调用公共事件01。这个公共事件就是加载一些加减的按钮图片,并联结好每个按钮对应的公共事件(这里使用了YEP的图片公共事件插件)。这样一来我在调用这个窗口的时候就会一并执行公共事件,那么按钮们也就加载出来了。然后在按下ECS或者右键的判断里面加一句调用公共事件02,就是解除按钮图片个公共事件的联结,并清除按钮图片。
这里就完成了窗口的调用和隐藏,点击按钮改变变量的值也能做到。
但是做到这一步,还差一个关键性的东西,就是窗口上会显示出所涉及的变量的实时的数值。这个就没法了,我想到两个解决方案,一个是窗口的代码中加一个实时刷新,另一个就是按钮公共事件中加一句脚本,脚本内容为刷新那个窗口。
不知道我这个想法对不对,也不知道这个想法中的两个猜想呢一个比较容易实现。
如果哪位大神路过,看到我上一楼的吐槽和这一楼的问题,可否赏脸指点一两句呀,我现在这两个猜想我自己实现起来我自己都不敢相信啊。
愿好心人相助~~~~~~~~~~~~~~~~~~~~手动卖萌~~~~
作者: 冲啊小笼包    时间: 2016-12-21 17:14
我只有大概1个月的js的编程经验(写了点网页的js小游戏之类的)= =其他语言可能多一些。。我想问一下,如果我要比较全面的了解RMMV里面写好的类应该从哪里看起比较好啊,那么多东西有点难以下嘴的感觉....
作者: playermaker    时间: 2017-4-8 19:29
这东西还是得需要有js深厚功底才行
作者: pkpk22pk    时间: 2017-9-28 20:09
這個不懂...但都看看
作者: xiayusong336    时间: 2017-12-29 09:34
我来了,强烈支持一下,学习受教了。
作者: IO0294    时间: 2018-1-11 00:34
虽然不是很懂但是还是感谢楼主的分享
作者: URUUR    时间: 2018-11-8 11:29
本帖最后由 URUUR 于 2018-11-8 11:37 编辑

    this.drawText("這是你的第一個自製視窗", 0, 0, textW, 'left');

我想知道怎样才能改这句话的颜色和增加图标?

作者: 疯狂的凯尔文    时间: 2019-2-1 13:54
插眼插眼插眼插眼插眼
作者: Ailan1993    时间: 2020-3-14 12:10
对咱来说好难理解啊
作者: CCD0645    时间: 2020-8-8 20:17
求继续,例如加图片的方法
作者: 男子汉    时间: 2021-8-6 16:13
好教程,支持楼主
作者: kit017886    时间: 2021-8-15 01:20
谢谢分享
作者: asukalin    时间: 2021-9-18 02:17
哇,很有用的新手教程!
感谢分享!
作者: 13345456518    时间: 2021-9-18 13:13
谢谢楼主搬运的这个帖子,,,,希望以后能多点这种教程。
作者: 任小雪    时间: 2021-10-19 23:00
标题: 1
本帖最后由 任小雪 于 2021-11-23 08:06 编辑

111111111111
作者: 任小雪    时间: 2021-11-23 08:05
尝试了直接drawFace,然后发现必须运行一次自身或者菜单,图片才会开始显示,啧
有没有什么法子




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1