本文分析游戲的全屏化處理。
引入:玩家在不同情景下可能會選擇全屏游戲或窗口化游戲,所以作為開發者,應該在設置中加入全屏與否的選項。
兩種插件:screenfull.js與Fullscreen.js
1.screenfull
// MV 1.5.0 for Win7 - 32位
var _CmdName = '窗口模式';// 指令名稱 var _CmdSymbol = 'fullScreen';// 指令標識 ConfigManager[_CmdSymbol] = false;//初始化指令狀態 /*--- 啟動自檢 ---*/ var _SBS = Scene_Boot.prototype.start; Scene_Boot.prototype.start = function() { var value = ConfigManager[_CmdSymbol]; Graphics._changeScreen(value); _SBS.call(this); }; /*--- 選項處理 ---*/ Window_Options.prototype.makeCommandList = function() { this.addGeneralOptions(); this.addCommand(_CmdName, _CmdSymbol);//<<< this.addVolumeOptions(); }; /*--- 觸發處理 ---*/ var _WOPOK = Window_Options.prototype.processOk; Window_Options.prototype.processOk = function() { _WOPOK.call(this); var index = this.index(); var symbol = this.commandSymbol(index); var value = this.getConfigValue(symbol); if(symbol == _CmdSymbol){ Graphics._changeScreen(value); } }; /*--- 切屏處理---*/ Graphics._changeScreen = function(state) { if (state) { this._requestFullScreen(); } else { this._cancelFullScreen(); } }; /*--- 記錄處理 ---*/
var _CMMD = ConfigManager.makeData; ConfigManager.makeData = function() { var config = _CMMD.call(this); config[_CmdSymbol] = ConfigManager[_CmdSymbol]; return config; }; var _CMAD = ConfigManager.applyData; ConfigManager.applyData = function(config) { _CMAD.call(this, config); ConfigManager[_CmdSymbol] = this.readFlag(config, _CmdSymbol); };
優:簡單快捷,
缺點:進入游戲會發現游戲世界的寬高還是窗口化時的,兩邊會出現黑邊。
2.Fullscreen
//============================================================================= // Fullscreen.js //=============================================================================
/*: * @plugindesc Starts the game in fullscreen * @author Christian Schicho * * @help */ ;(function() { function extend(obj, name, func) { var orig = obj.prototype[name] obj.prototype[name] = function() { orig.call(this) func.call(this) } } extend(Scene_Boot, 'start', function() { Graphics._switchFullScreen(); }) var _Scene_Base_create = Scene_Base.prototype.create; Scene_Base.prototype.create = function() { _Scene_Base_create.call(this); Graphics.width = 1280; Graphics.height = 720; Graphics.boxHeight = 720; Graphics.boxWidth = 1280; }; })()
優:無論全屏還是窗口化,界面顯示都是正常。
缺點:用戶不可控
將兩者結合起來,就是比較完美的解決方案了。
關於結合版,將在下文揭曉。