查看: 4757|回复: 8

[有事请教] 請幫忙修正此全螢幕腳本顯示ON/OFF相反的問題

[复制链接]
梦石
0
星屑
2638
在线时间
365 小时
注册时间
2015-12-8
回帖
77
发表于 2020-4-1 00:12:28 | 显示全部楼层 |阅读模式
悬赏10星屑未解决
本帖最后由 冰冷水藍 于 2020-4-1 00:24 编辑

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

4343.jpg

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


[pre lang="javascript"]/*:
* @plugindesc 全螢幕選項 SRD_FullscreenToggleOption.js
* @author SumRndmDde
*
* @param Option Name
* @desc 選項名稱
* @default 全螢幕
*
* @param Position
* @desc 選項位置
* Choices are: Top, Middle, Bottom
* @default Top
*
* @param Default Value
* @desc 預設值
* true = on    false = off
* @default on
*
* @param ersist Default?
* @desc 堅持預設值 (Choices are: true, false)
* @default true
*
* @help
*/

(function() {

        var parameters = PluginManager.parameters('SRD_FullscreenToggleOption');
        var optionName = String(parameters['Option Name']);
        var defaultValue = String(parameters['Default Value']).trim().toLowerCase() === 'true';
        var position = String(parameters['Position']).toLowerCase();
        var persist = String(parameters['Persist Default?']).trim().toLowerCase() === 'true';

        ConfigManager.fullscreen = defaultValue;

        Object.defineProperty(ConfigManager, 'fullscreen', {
            get: function() {
                return !Graphics._isFullScreen();
            },
            set: function(value) {
                if (value) {
                        Graphics._requestFullScreen(); //執行全螢幕
                    } else {
                        Graphics._cancelFullScreen(); //視窗化
                    }
            },
            configurable: true
        });

        var _ConfigManager_makeData = ConfigManager.makeData;
        ConfigManager.makeData = function() {
            var config = _ConfigManager_makeData.call(this);
            config.fullscreen = this.fullscreen;
            return config;
        };

        var _ConfigManager_applyData = ConfigManager.applyData;
        ConfigManager.applyData = function(config) {
            _ConfigManager_applyData.call(this, config);
            this.fullscreen = this.readFullscreen(config, 'fullscreen');
        };

        ConfigManager.readFullscreen = function(config, name) {
            var value = config[name];
            if(!persist) {
                    if (value !== undefined) { //假如已有定義
                        return value;
                    } else {
                        return defaultValue; //返回預設值
                    }
                } else {
                        return defaultValue; //返回預設值                       
                }
        };

        var _Window_Options_addGeneralOptions = Window_Options.prototype.addGeneralOptions;
        Window_Options.prototype.addGeneralOptions = function() {
            _Window_Options_addGeneralOptions.call(this);
            if(position === 'middle') {
                    this.addCommand(optionName, 'fullscreen'); //新增全螢幕選項
            }
        };

        var _Window_Options_makeCommandList = Window_Options.prototype.makeCommandList;
        Window_Options.prototype.makeCommandList = function() {
                if(position === 'top') {
                    this.addCommand(optionName, 'fullscreen'); //新增全螢幕選項
            }
            _Window_Options_makeCommandList.call(this);
        };

        var _Window_Options_addVolumeOptions = Window_Options.prototype.addVolumeOptions;
        Window_Options.prototype.addVolumeOptions = function() {
            _Window_Options_addVolumeOptions.call(this);
            if(position === 'bottom') {
                    this.addCommand(optionName, 'fullscreen'); //新增全螢幕選項
            }
        };

        var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
        Game_Interpreter.prototype.pluginCommand = function(command, args) {
            _Game_Interpreter_pluginCommand.call(this, command, args);

            if(command.toLowerCase() === 'togglescreentype') { //假如切換選項
                    Graphics._switchFullScreen(); //執行全螢幕切換
            }
        };

})();[/pre]

梦石
0
星屑
6515
在线时间
886 小时
注册时间
2018-1-16
回帖
136
发表于 2020-4-1 22:31:36 | 显示全部楼层
本帖最后由 shantianzu 于 2020-4-1 22:34 编辑

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


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

点评

是這樣的,MV默認選項欄位是左方向撥動OFF,右方向撥動ON 但唯獨這腳本在顯示OFF的時候才是全螢幕,ON反而視窗化了...  发表于 2020-4-1 23:50
回复

使用道具 举报

梦石
0
星屑
646
在线时间
120 小时
注册时间
2019-12-7
回帖
58
发表于 2020-4-2 13:49:07 | 显示全部楼层
get: function() {
     return !Graphics._isFullScreen();
},

中间这行,Graphics前面的感叹号去掉应该就行了吧

点评

變成無法切換ON/OFF了@@  发表于 2020-4-2 14:34
新账号chyj4747,这个账号是我刚来论坛时随便填的,当时没想着要发帖
回复

使用道具 举报

梦石
0
星屑
7801
在线时间
683 小时
注册时间
2012-7-29
回帖
172
发表于 2020-4-3 09:53:02 | 显示全部楼层
我觉得三楼的说的一点也没错,把38行“return !Graphics._isFullScreen();”的感叹号去掉。不过还要再加上一步。
把第42行“Graphics._requestFullScreen(); //執行全螢幕”和第44行“Graphics._cancelFullScreen(); //視窗化”交换一下,我这里测试成功。

点评

好的我試試看  发表于 2020-4-3 14:20

评分

参与人数 1赞 +1 收起 理由
冰冷水藍 + 1 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
2638
在线时间
365 小时
注册时间
2015-12-8
回帖
77
 楼主| 发表于 2020-4-3 14:25:22 | 显示全部楼层
开关关 发表于 2020-4-3 09:53
我觉得三楼的说的一点也没错,把38行“return !Graphics._isFullScreen();”的感叹号去掉。不过还要再加上 ...

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

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

点评

确实挺迷的,从逻辑上讲不该出现这种情况。说不定我漏看了什么关键的代码,希望有大佬能来解答。  发表于 2020-4-3 16:47
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部