Project1

标题: 请问有大佬能够指教一下SceneDesktop插件的使用方法吗? [打印本页]

作者: kastife    时间: 2023-6-24 15:50
标题: 请问有大佬能够指教一下SceneDesktop插件的使用方法吗?
在git上发现了Roseshadows(离影玫)大大发布的模拟手机电脑界面的插件(https://github.com/Roseshadows/RPG-Maker-MV),大概有以下几个相关的,查看了脚本界面却看不太明白,有问题想要请教各位大佬


比如说是这个范例,可以直接使用吗?要更改什么才能在游戏里显示出来?
JAVASCRIPT 代码复制
  1. // 游戏中要用的手机界面。
  2. // 需要SceneDesktop.js作为前置插件。
  3.  
  4. /*:
  5.  * @plugindesc SceneDesktop.js的一个实例。需要 SceneDesktop.js 提供父类。
  6.  * @author 离影玫 | Rose_shadows
  7.  * @help 直接在代码中修改吧。
  8.  */
  9.  
  10. /**
  11.  * Francis' phone
  12.  */
  13.  
  14. function Window_FrancisPhone() {
  15.     this.initialize.apply(this, arguments);
  16. }
  17.  
  18. Window_FrancisPhone.prototype = Object.create(Window_Desktop.prototype);
  19. Window_FrancisPhone.prototype.constructor = Window_FrancisPhone;
  20.  
  21. Window_FrancisPhone.prototype.initialize = function(x, y) {
  22.     this._iconList = [160,161,162,163,164,165];
  23.     this._standardBackOpacity = 0;
  24.     this._frameOpacity = 0;
  25.     Window_Desktop.prototype.initialize.call(this, x, y);
  26. }
  27.  
  28. Window_FrancisPhone.prototype.windowWidth = function() {
  29.     return 287;
  30. }
  31.  
  32. Window_FrancisPhone.prototype.windowHeight = function() {
  33.     return 512;
  34. }
  35.  
  36. Window_FrancisPhone.prototype.numVisibleRows = function() {
  37.     return 7;
  38. }
  39.  
  40. Window_FrancisPhone.prototype.maxCols = function() {
  41.     return 4;
  42. }
  43.  
  44. Window_FrancisPhone.prototype.lineHeight = function() {
  45.     return this.iconDrawingHeight() + this.standardFontSize() + this.iconTextDistance() + 18;
  46. }
  47.  
  48. Window_FrancisPhone.prototype.standardFontSize = function() {
  49.     return 16;
  50. }
  51.  
  52. Window_FrancisPhone.prototype.iconTextDistance = function() {
  53.     return 2;
  54. }
  55.  
  56. Window_FrancisPhone.prototype.makeCommandList = function() {
  57.     this.addCommand('搜索', 'search1', true);
  58.     this.addCommand('备忘录', 'notebook1', true);
  59.     this.addCommand('视频', 'video1', true);
  60.     this.addCommand('照片', 'photo1', true);
  61.     this.addCommand('电话簿', 'phonelist1', true);
  62.     this.addCommand('关机', 'shutdown1', true);
  63. }
  64.  
  65. function Scene_FrancisPhone() {
  66.     this.initialize.apply(this, arguments);
  67. }
  68.  
  69. Scene_FrancisPhone.prototype = Object.create(Scene_Desktop.prototype);
  70. Scene_FrancisPhone.prototype.constructor = Scene_FrancisPhone;
  71.  
  72. Scene_FrancisPhone.prototype.initialize = function() {
  73.     Scene_Desktop.prototype.initialize.call(this);
  74. }
  75.  
  76. Scene_FrancisPhone.prototype.create = function() {
  77.     Scene_Desktop.prototype.create.call(this);
  78.     this.createPhoneWindow();
  79. }
  80.  
  81. Scene_FrancisPhone.prototype.createPhoneWindow = function() {
  82.     this._phoneWindow = new Window_FrancisPhone(268, 63);
  83.     this._phoneWindow.setHandler('search1',     this.onFirst.bind(this));
  84.     this._phoneWindow.setHandler('notebook1',   this.onSecond.bind(this));
  85.     this._phoneWindow.setHandler('video1',      this.onThird.bind(this));
  86.     this._phoneWindow.setHandler('photo1',      this.onForth.bind(this));
  87.     this._phoneWindow.setHandler('phonelist1',  this.onFifth.bind(this));
  88.     this._phoneWindow.setHandler('shutdown1',   this.exitPhone.bind(this));
  89.     this._phoneWindow.setHandler('cancel',      this.popScene.bind(this));
  90.     this.addWindow(this._phoneWindow);
  91. }
  92.  
  93. // 指令相关的方法。
  94. Scene_FrancisPhone.prototype.onFirst = function() {
  95.     SceneManager.push(Scene_Item);
  96. }
  97.  
  98. Scene_FrancisPhone.prototype.onSecond = function() {
  99.     SceneManager.push(Scene_Options);
  100. }
  101.  
  102. Scene_FrancisPhone.prototype.onThird = function() {
  103.     SceneManager.push(Scene_Save);
  104. }
  105.  
  106. Scene_FrancisPhone.prototype.onForth = function() {
  107.     SceneManager.push(Scene_Debug);
  108. }
  109.  
  110. Scene_FrancisPhone.prototype.onFifth = function() {
  111.     SceneManager.push(Scene_Load);
  112. }
  113.  
  114. Scene_FrancisPhone.prototype.exitPhone = function() {
  115.     SceneManager.pop();
  116. }
  117.  
  118. Scene_FrancisPhone.prototype.createBackground = function() {
  119.     Scene_Desktop.prototype.createBackground.call(this);
  120.     var x = SceneManager._screenWidth/2;
  121.     var y = SceneManager._screenHeight/2;
  122.     this.addExtendedSprite('img/pictures/','Phone-1',x+50,y+30,255,$gameSwitches.value(15));
  123. }

作者: bleen    时间: 2023-6-24 18:30
你别管那个范例,反正我是看不懂,还不如看插件说明。

SceneDesktop.js是基础插件,RSSD_ScenePhone是实现的插件,放在基础的下面,这是插件顺序。


调用界面的插件命令  
JAVASCRIPT 代码复制
  1. ::ScenePhone RSSD_ScenePhone open

调用界面的脚本命令  
JAVASCRIPT 代码复制
  1. SceneManager.push(Scene_RSSDPhone);


效果一样的,二选一。

在调用之前,你得先在RSSD_ScenePhone插件设置的最下面,有个APP列表,把要显示的APP设置好。因为它的界面需要根据设置内容来填充,如果你内容是空的,这个手机界面就出不来,只会显示一个小方块。

上面是最简单的实现方法,默认界面非常丑陋,你要设置手机背景,改变尺寸大小,设置APP的图标,以及点击APP后有什么反应,才能看起来更像手机或者电脑,这些自己进一步研究吧。

你安装了插件后,在插件说明其实都有提到的,认真研究就知道了,我说的这些其实也是插件说明写到的。


作者: Rose_shadows    时间: 2023-6-25 21:23
嗯……就像楼上说的那样,基本只要看 RSSD_ScenePhone.js 里的帮助文档就可以了,SceneDesktop.js 只是提供了创建所需的类而已。

如果你需要手机背景,可以看看 这里 ,提供了已经抠好图的2个手机背景和1个手机框架,选择一张直接放到 img/phones/ 文件夹下,插件参数 x, y, 宽, 高保持插件默认值,然后设置参数 背景图片 即可。

(呃,话说回来,那个范例其实是我在 SceneDesktop.js 的基础上给自己的游戏制作的一个插件,放在上面存档而已,和 RSSD_ScenePhone.js 的使用没有半毛钱关系,所以参考价值确实不高……)
作者: 眼泪是礼物    时间: 2024-6-4 19:50
bleen 发表于 2023-6-24 18:30
你别管那个范例,反正我是看不懂,还不如看插件说明。

SceneDesktop.js是基础插件,RSSD_ScenePhone是实现 ...

请问这个插件要怎么设置APP的位置和图标啊 看不懂T-T
作者: 眼泪是礼物    时间: 2024-6-4 19:54
Rose_shadows 发表于 2023-6-25 21:23
嗯……就像楼上说的那样,基本只要看 RSSD_ScenePhone.js 里的帮助文档就可以了,SceneDesktop.js 只是提供 ...

请问这个插件要怎么设置APP的位置和图标啊 看不懂 特别需要这个插件呜呜呜 求教
作者: 眼泪是礼物    时间: 2024-6-4 22:37
眼泪是礼物 发表于 2024-6-4 19:50
请问这个插件要怎么设置APP的位置和图标啊 看不懂T-T

已经解决了,谢谢




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