Project1
标题:
[已解决]想问问大家事件菜单转不到其他界面的原因
[打印本页]
作者:
YHHHHHHH
时间:
昨天 00:41
标题:
[已解决]想问问大家事件菜单转不到其他界面的原因
本帖最后由 YHHHHHHH 于 2025-5-13 17:42 编辑
我尝试着跟着教程做了事件菜单,调出菜单和关闭菜单都很正常但进存档界面什么的就进不去了ORZ,
求问下是怎么回事,是顺序之类的有问题还是脚本错了
存档脚本底下的菜单图片的淡入也会正常显示但是脚本不生效ORZ
QQ_1747067712549.png
(96.31 KB, 下载次数: 0)
下载附件
保存到相册
昨天 00:37
上传
作者:
526396987
时间:
昨天 10:37
新场景用
SceneManager.push(Scene_Save);
作者:
写给妖精的情诗
时间:
昨天 14:37
Scene_Map.prototype.createMenuButton = function() {
this._menuButton = new Sprite_Button("menu");
this._menuButton.x = Graphics.boxWidth - this._menuButton.width - 4;
this._menuButton.y = this.buttonY();
this._menuButton.visible = false;
this.addWindow(this._menuButton);
};
上面这段好像是点击菜单的函数,
Scene_Map.prototype.callMenu = function() {
SoundManager.playOk();
SceneManager.push(Scene_Menu);
Window_MenuCommand.initCommandPosition();
$gameTemp.clearDestination();
this._mapNameWindow.hide();
this._waitCount = 2;
};
上面这段是检测到呼叫菜单就要执行什么指令的函数,
下面这段好像是呼叫菜单的函数,这几段都在rmmz_scenes.js这里。说不定可以使用这些函数来写。
Scene_Map.prototype.isMenuCalled = function() {
return Input.isTriggered("menu") || TouchInput.isCancelled();
};
作者:
写给妖精的情诗
时间:
昨天 14:54
if(TouchInput.isPressed ()){}
if(Input.isTriggered("menu")){}
另外,我想问一下,上面第一行是检测到按下鼠标的脚本 if(TouchInput.isPressed ()){} 和 if(Input.isTriggered()){} 好像都一样 ,
第二行是检测到点击菜单的脚本,单独使用好像都没有问题,一旦让他们两个同时使用,好像就只有一个会起作用。
是不是因为刷新的原因,按下之后有一个响应到了立马就刷新数据了。
还是因为这两个都是检测鼠标左键的原因,检测到了一个就算是完了。
menuButtonX = Graphics.Width - 48 - 4;
menuButtonY = 4;
if(TouchInput.isPressed ()){
if(TouchInput.x>=menuButtonX && TouchInput.x<=menuButtonX+48 && TouchInput.y>=menuButtonY && TouchInput.y<=menuButtonY+48){
$gameMessage.add("点击到了菜单栏");
}else {
$gameMessage.add("没有点击到菜单栏");
}
}
虽然有上面这个变通的方法,但是菜单栏覆盖的范围有点偏差(有空的时候再试着调一调),就算是不偏差,我也想用直接到方法。
所以,有谁知道这个方法吗?
作者:
写给妖精的情诗
时间:
昨天 15:28
搞错了,menuButtonX = Graphics.Width - 48 - 4; 的偏差太大了。
应该是 menuButtonX = Graphics.boxWidth - 48 - 4; 这个,这个偏差小一点。 就是二楼第三行的这个,昨天测试到一半就忘记了。
Graphics.boxWidth - this._menuButton.width - 4;
分别是游戏窗口的宽,菜单栏的宽(在地图场景就是ButtonSet.png最右侧的那个图标,上下两个图标的高是96,一个图标的宽高自然就是48了),减4就是稍微留下一点空间,所以因此知道Y也是有一个4的空间的。
问题就是,Graphics.boxWidth 不完全等于显示的宽度,因为显示的宽度受到分辨率和地图宽度的影响,使用数据库、系统2、进阶设置的画面宽度、界面区域宽度会有一些偏差,使用$gameMap.width()*48也有一点的偏差,
使用screen.width偏差的好像就更多了。
说不定是需要一个数学运算吧,地图的宽度、地图横向的格子数量,分辨率,屏幕大小、游戏显示框的大小、游戏渲染画布的宽度这些东西的值不是同一个,这些东西可能还会相互影响。
比如我习惯地图的格子数量是宽40,高22。40乘以48=1920,22乘以48=1056,这个数字接近于1920*1080这个很常见的台式电脑分辨率,而我的电脑分辨率是2560*1440。
就是说,在全屏的时候虽然可以强制全屏,周围都没有黑边。
但是窗口最大化的时候,旁边是有一点黑边的。
作者:
YHHHHHHH
时间:
昨天 17:41
!!!!可以了!!!!非常感谢大家!!!!!
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1