Project1

标题: 請幫忙修正此全螢幕腳本顯示ON/OFF相反的問題 [打印本页]

作者: 冰冷水藍    时间: 2020-4-1 00:12
标题: 請幫忙修正此全螢幕腳本顯示ON/OFF相反的問題
本帖最后由 冰冷水藍 于 2020-4-1 00:24 编辑

一個比較單純的問題
關於這個添加全螢幕選項的SRD_FullscreenToggleOption.js腳本
運作正常,但在選項中的ON/OFF顯示卻是相反的



例如我用左方向鍵切換到了視窗模式,但顯示的是ON
再用右方向鍵切回全螢幕,顯示的又變OFF
求大神幫忙修正,謝謝


JAVASCRIPT 代码复制
  1. /*:
  2.  * @plugindesc 全螢幕選項 SRD_FullscreenToggleOption.js
  3.  * @author SumRndmDde
  4.  *
  5.  * @param Option Name
  6.  * @desc 選項名稱
  7.  * @default 全螢幕
  8.  *
  9.  * @param Position
  10.  * @desc 選項位置
  11.  * Choices are: Top, Middle, Bottom
  12.  * @default Top
  13.  *
  14.  * @param Default Value
  15.  * @desc 預設值
  16.  * true = on    false = off
  17.  * @default on
  18.  *
  19.  * @param ersist Default?
  20.  * @desc 堅持預設值 (Choices are: true, false)
  21.  * @default true
  22.  *
  23.  * @help
  24.  */
  25.  
  26. (function() {
  27.  
  28.         var parameters = PluginManager.parameters('SRD_FullscreenToggleOption');
  29.         var optionName = String(parameters['Option Name']);
  30.         var defaultValue = String(parameters['Default Value']).trim().toLowerCase() === 'true';
  31.         var position = String(parameters['Position']).toLowerCase();
  32.         var persist = String(parameters['Persist Default?']).trim().toLowerCase() === 'true';
  33.  
  34.         ConfigManager.fullscreen = defaultValue;
  35.  
  36.         Object.defineProperty(ConfigManager, 'fullscreen', {
  37.             get: function() {
  38.                 return !Graphics._isFullScreen();
  39.             },
  40.             set: function(value) {
  41.                 if (value) {
  42.                         Graphics._requestFullScreen(); //執行全螢幕
  43.                     } else {
  44.                         Graphics._cancelFullScreen(); //視窗化
  45.                     }
  46.             },
  47.             configurable: true
  48.         });
  49.  
  50.         var _ConfigManager_makeData = ConfigManager.makeData;
  51.         ConfigManager.makeData = function() {
  52.             var config = _ConfigManager_makeData.call(this);
  53.             config.fullscreen = this.fullscreen;
  54.             return config;
  55.         };
  56.  
  57.         var _ConfigManager_applyData = ConfigManager.applyData;
  58.         ConfigManager.applyData = function(config) {
  59.             _ConfigManager_applyData.call(this, config);
  60.             this.fullscreen = this.readFullscreen(config, 'fullscreen');
  61.         };
  62.  
  63.         ConfigManager.readFullscreen = function(config, name) {
  64.             var value = config[name];
  65.             if(!persist) {
  66.                     if (value !== undefined) { //假如已有定義
  67.                         return value;
  68.                     } else {
  69.                         return defaultValue; //返回預設值
  70.                     }
  71.                 } else {
  72.                         return defaultValue; //返回預設值                       
  73.                 }
  74.         };
  75.  
  76.         var _Window_Options_addGeneralOptions = Window_Options.prototype.addGeneralOptions;
  77.         Window_Options.prototype.addGeneralOptions = function() {
  78.             _Window_Options_addGeneralOptions.call(this);
  79.             if(position === 'middle') {
  80.                     this.addCommand(optionName, 'fullscreen'); //新增全螢幕選項
  81.             }
  82.         };
  83.  
  84.         var _Window_Options_makeCommandList = Window_Options.prototype.makeCommandList;
  85.         Window_Options.prototype.makeCommandList = function() {
  86.                 if(position === 'top') {
  87.                     this.addCommand(optionName, 'fullscreen'); //新增全螢幕選項
  88.             }
  89.             _Window_Options_makeCommandList.call(this);
  90.         };
  91.  
  92.         var _Window_Options_addVolumeOptions = Window_Options.prototype.addVolumeOptions;
  93.         Window_Options.prototype.addVolumeOptions = function() {
  94.             _Window_Options_addVolumeOptions.call(this);
  95.             if(position === 'bottom') {
  96.                     this.addCommand(optionName, 'fullscreen'); //新增全螢幕選項
  97.             }
  98.         };
  99.  
  100.         var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
  101.         Game_Interpreter.prototype.pluginCommand = function(command, args) {
  102.             _Game_Interpreter_pluginCommand.call(this, command, args);
  103.  
  104.             if(command.toLowerCase() === 'togglescreentype') { //假如切換選項
  105.                     Graphics._switchFullScreen(); //執行全螢幕切換
  106.             }
  107.         };
  108.  
  109. })();


作者: shantianzu    时间: 2020-4-1 22:31
本帖最后由 shantianzu 于 2020-4-1 22:34 编辑

我没用过这个插件,但是我感觉这样是正确的啊,当你是视窗的时候显示ON,给人的提示是你选择或点击它,全屏就会打开。
全屏的时候显示OFF,给人的提示是你选择或者点击它,全屏就会关闭,没毛病啊。


如果你非要纠结这个问题,就用PS把两个图片的字对换一下。

作者: gg123wtf    时间: 2020-4-2 13:49
get: function() {
     return !Graphics._isFullScreen();
},

中间这行,Graphics前面的感叹号去掉应该就行了吧
作者: 开关关    时间: 2020-4-3 09:53
我觉得三楼的说的一点也没错,把38行“return !Graphics._isFullScreen();”的感叹号去掉。不过还要再加上一步。
把第42行“Graphics._requestFullScreen(); //執行全螢幕”和第44行“Graphics._cancelFullScreen(); //視窗化”交换一下,我这里测试成功。
作者: 冰冷水藍    时间: 2020-4-3 14:25
开关关 发表于 2020-4-3 09:53
我觉得三楼的说的一点也没错,把38行“return !Graphics._isFullScreen();”的感叹号去掉。不过还要再加上 ...

感謝,又朝向成功進入了一步
目前顯示是正常了,但還有個小問題就是

一般項目,像保持衝刺、記憶選單那些開關都是配合方向鍵←OFF/→ON開的
但只有這個是←ON/→OFF跟人家相反了
抱歉如果我描述的不夠我可以再發個GIF圖表示




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