1. 程式人生 > >rpgmakermv插件(1)screenfull.js與Fullscreen.js

rpgmakermv插件(1)screenfull.js與Fullscreen.js

cancel wid 就是 開發者 chan sch desc 選擇 log

本文分析遊戲的全屏化處理。

引入:玩家在不同情景下可能會選擇全屏遊戲或窗口化遊戲,所以作為開發者,應該在設置中加入全屏與否的選項。

兩種插件: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;    
    };
 
})()

優:無論全屏還是窗口化,界面顯示都是正常。

缺點:用戶不可控

將兩者結合起來,就是比較完美的解決方案了。

關於結合版,將在下文揭曉。

rpgmakermv插件(1)screenfull.js與Fullscreen.js