RPG Maker MV 踩坑二 新仙剑子菜单

主菜单遇到的问题

大家好啊!本计划进行的主菜单人物菜单和金钱菜单的绘制的没有如期进行原因是主菜单绘制出现了一些问题这次就分享一下这上面遇到的问题。

原始正常效果

主菜单 第一个子菜单

显示的辅助菜单

显示原始菜单,辅助查看问题原因
将原菜单显示出来 将原菜单显示出来
通过这两个图片可以看到已经完成了子菜单功能了,嗯!基本万事大吉了…
不过鬼畜的还在后面呢!!!

鬼畜的二级菜单

子菜单 子菜单 子菜单
到这里大家应该已经明白了。
不过再说一下,主菜单界面上,第一个子菜单能够正常运行,但添加了第二个子菜单后却运行鬼畜了,同时将两个子菜单图片显示出来,按键时第二个子菜单只能显示前两个按钮效果;打开第二个子菜单界面时却不显示对应的子菜单图片。

错误代码部分

由于是复制粘贴的代码的原因,对于代码检查上过于疏忽,导致问题的发生。
错误出现在哪里呢?

if(this._OptionsButtons[this._itemCommandWindow.index()]){
		this._OptionsButtons[this._itemCommandWindow.index()].visible=true;
	}

这段代码是进行图片更新的,即菜单的更新,查找的不少的时间,都没有找到原因,之后才发现原来是:

this._itemCommandWindow

它的作用是进行物品菜单图片的更新,很明显这不是我们需要的,我们需要的是设置菜单的更新;由于这个部分错误导致了更新出现了鬼畜的情况发生。

修改后的完整代码

var _Scene_Menu_create = Scene_Menu.prototype.create;
Scene_Menu.prototype.create = function() {
	_Scene_Menu_create.call(this);
	var menuIndexs = [0, 1, 2, 3];
	var menuItemIndexs = [0, 1];
	var menuOptionsIndexs = [0, 1, 2, 3, 4];
	
	var clickMenus = [
	  function() {
	    this.commandPersonal();
	    SoundManager.playOk();
	  },
	  function() {
	    this.commandPersonal();
	    SoundManager.playOk();
	  },
	  function() {
	    this.commandMenuItem();
	    SoundManager.playOk();
	  },
	  function() {
	    this.commandMenuIOptions();
	    SoundManager.playOk();
	  }
	];
	this._cmdMenuButtons = [];
	for (var i in menuIndexs) {
	  var sprite = new Sprite_Button();
	  sprite.bitmap = ImageManager.loadMenu("MianMenu2");
	  var sx = menuIndexs[i] % 4 * 128;
	  var sy = 0;
	  sprite.y = 130;
	  sprite.x = 15;
	  sprite.setFrame(sx, sy, 128, 192);
	  sprite.setClickHandler(clickMenus[i].bind(this));
	  this._cmdMenuButtons.push(sprite);
	  this.addChild(sprite);
	}
	
	var clickItemMenus = [
	  function() {
	    this.commandItem();
	    SoundManager.playOk();
	  },
	  function() {
	    this.commandPersonal();
	    SoundManager.playOk();
	  }
	];
	this._ItemMenuButtons = [];
	for (var i in menuItemIndexs) {
	  var sprite = new Sprite_Button();
	  sprite.bitmap = ImageManager.loadMenu("MianMenuItem");
	  var sx = menuItemIndexs[i] % 2 * 128;
	  var sy = 0;
	  sprite.y = 147;//70
	  sprite.x = 71;//50
	  sprite.setFrame(sx, sy, 128, 128);
	  sprite.setClickHandler(clickItemMenus[i].bind(this));
	  this._ItemMenuButtons.push(sprite);
	  this.addChild(sprite);
	}
	
	var clickOptionsMenus = [
	  function() {
	    this.commandSave();
	    SoundManager.playOk();
	  },
	  function() {
	    this.commandContinue();
	    SoundManager.playOk();
	  },
	  function() {
	    this.commandPersonal();
	    SoundManager.playOk();
	  },
	  function() {
	    this.commandPersonal();
	    SoundManager.playOk();
	  },
	  function() {
	    this.commandGameEnd();
	    SoundManager.playOk();
	  }
	];
	this._OptionsButtons = [];
	for (var i in menuOptionsIndexs) {
	  var sprite = new Sprite_Button();
	  sprite.bitmap = ImageManager.loadMenu("MianMenuSys");
	  var sx = menuOptionsIndexs[i] % 5 * 192;
	  var sy = 0;
	  sprite.y = 49;//70
	  sprite.x = 71;//50
	  sprite.setFrame(sx, sy, 192, 224);
	  sprite.setClickHandler(clickOptionsMenus[i].bind(this));
	  this._OptionsButtons.push(sprite);
	  this.addChild(sprite);
	}
	
	//主菜单窗口
	//this.createCommandWindow();
	//主菜单物品窗口
	this.createItemCommandWindow();
	//主菜单系统窗口
	this.createOptionsCommandWindow();
};

var _Scene_Menu_update = Scene_Menu.prototype.update;
Scene_Menu.prototype.update = function(){
	_Scene_Menu_update.call(this);
	
	var scmdButtons= this._cmdMenuButtons;
	for(var i in scmdButtons){
		this._cmdMenuButtons[i].visible=false;
	}
	if(this._cmdMenuButtons[this._commandWindow.index()]){
		this._cmdMenuButtons[this._commandWindow.index()].visible=true;
	}
	
	var scmdItemButtons= this._ItemMenuButtons;
	for(var i in scmdItemButtons){
		this._ItemMenuButtons[i].visible=false;
	}
	if(this._ItemMenuButtons[this._itemCommandWindow.index()]){
		this._ItemMenuButtons[this._itemCommandWindow.index()].visible=true;
	}
	
	var scmdOptionsButtons= this._OptionsButtons;
	for(var i in scmdOptionsButtons){
		this._OptionsButtons[i].visible=false;
	}
	if(this._OptionsButtons[this._optionsCommandWindow.index()]){
		this._OptionsButtons[this._optionsCommandWindow.index()].visible=true;
	}
}

最终结果

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述
由于操作按钮过多,因此放几张确定下实际效果没有问题就行。

下一步

接下来确定要处理的包括人物菜单UI,状态菜单UI,系统音乐及音效按钮操作,S/L的UI操作及游戏开始菜单的UI美化,不知道还会遇到多少的坑在等待的我呢!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值