RPG Maker MV 踩坑八 仿新仙剑战斗物品指令菜单

仿新仙剑战斗物品指令菜单

  • 遇到的坑
  • 坑一
  • 坑二
  • 解决方法

遇到的坑

上次做的额外战斗指令菜单和物品战斗指令菜单,突然发现一个大问题,漏风了!!!在这里插入图片描述
其实就是将底部漏出来了,这样整个UI就不完整了,算是出现了BUG。
其实要是直接进行处理也不是没有解决办法,就像主菜单一样,将所以菜单图片均在主菜单的场景中绘制也不是不行,但是会挺麻烦的。

坑一

遇到这个问题首先想到的解决办法是在物品战斗指令菜单的图片绘制中直接绘制背景图片:

Window_ItemCommand.prototype.drawBattleItemCommand=function(){var bitmap=this.oldCommand;bitmap.blt(this.oldCommand, 0, 0, 128, 224, -55, -64);bitmap=this.BattleCommand;var sy=0;var sw=128;var sh=160;var dx=0;var dy=0;this.contents.blt(bitmap, this.drawSx.get(this._index), sy, sw, sh, dx, dy);
}

在需要的UI前绘制背景图片,即将额外战斗指令菜单的图片再绘制一遍,只是在物品指令中绘制。
在这里插入图片描述 在这里插入图片描述
这样绘制的弊端很明显绘制好后确实进行了遮挡,但是由于窗口打开时背景是透明的,因此会看到缺了这么一块,这样也算是一个比较明显的穿帮。

坑二

这样不行,那直接在窗口背景上做文章可行吗?

Window.prototype._createAllParts = function() {this._windowSpriteContainer = new PIXI.Container();this._windowBackSprite = new Sprite();//背景this._windowCursorSprite = new Sprite();//光标this._windowFrameSprite = new Sprite();//框架this._windowContentsSprite = new Sprite();//内容this._downArrowSprite = new Sprite();//向下箭头this._upArrowSprite = new Sprite();//向上箭头this._windowPauseSignSprite = new Sprite();//暂停标志this._windowBackSprite.bitmap = new Bitmap(1, 1);this._windowBackSprite.alpha = 192 / 255;this.addChild(this._windowSpriteContainer);this._windowSpriteContainer.addChild(this._windowBackSprite);this._windowSpriteContainer.addChild(this._windowFrameSprite);this.addChild(this._windowCursorSprite);this.addChild(this._windowContentsSprite);this.addChild(this._downArrowSprite);this.addChild(this._upArrowSprite);this.addChild(this._windowPauseSignSprite);
};
Window.prototype._refreshAllParts = function() {this._refreshBack();this._refreshFrame();this._refreshCursor();this._refreshContents();this._refreshArrows();this._refreshPauseSign();
};
Window.prototype._refreshBack = function() {var m = this._margin;var w = this._width - m * 2;var h = this._height - m * 2;var bitmap = new Bitmap(w, h);this._windowBackSprite.bitmap = bitmap;this._windowBackSprite.setFrame(0, 0, w, h);this._windowBackSprite.move(m, m);if (w > 0 && h > 0 && this._windowskin) {var p = 96;bitmap.blt(this._windowskin, 0, 0, p, p, 0, 0, w, h);for (var y = 0; y < h; y += p) {for (var x = 0; x < w; x += p) {bitmap.blt(this._windowskin, 0, p, p, p, x, y, p, p);}}var tone = this._colorTone;bitmap.adjustTone(tone[0], tone[1], tone[2]);}
};

通过这三个方法知道了,窗口在创建时的顺序,并且知道了在_windowSpriteContainer 变量即窗口精灵容器中添加了这么两个精灵,_windowBackSprite _windowFrameSprite 这两个精灵,它们一个是背景精灵,一个框架精灵,而我们需要处理的就行背景精灵了。
但可惜通过直接在背景精灵的操作方法中进行修改代码,并绘制需要的背景这个方法不可行,因为窗口打开后就直接看到后面的场景了。同时为了确保这不是我的操作问题,我在浏览器上重新进行了一遍绘制,却发现可以绘制出来,这是什么原因呢?
这是由于窗口加载时已经将对应的图片操作加载了,因此可以看做是,程序底层运行时只会绘制这对应图片上的内容,若是需要绘制其他的东西,需要我们手动操作。

解决方法

Window_ItemCommand.prototype.initializeBack = function() {var bitmap = new Bitmap(128, 160);this._windowBackSprite.bitmap = bitmap;this._windowBackSprite.setFrame(0, 0, 128, 160);this._windowBackSprite.move(0,0);this._windowBackSprite.alpha=1;if(this.oldCommand){bitmap.blt(this.oldCommand, 0, 0, 128, 224, -55, -64);bitmap.blt(this.BattleCommand, 0, 0, 128, 160, 0, 0);}
};
Window_ItemCommand.prototype._refreshFrame = function() { 
};
//this._itemCommandWindow.changeTransparent();//这是在场景中创建时的,这里需要进行删除或注释掉
Pal_Scene_Battle.prototype.commandItem = function() {this._itemCommandWindow.activate();this._itemCommandWindow.initializeBack();this.selectNextCommand2();
};

通过这几行代码就可以实现想要的效果了。其实这个效果也是有缺陷的,由于窗口是从中间向上下两边展开,因此颜色上就会看到明显的移动痕迹,但是由于展开速度很快,所以大部分人其实是不会看到对应展开的bug的,同时由于这样会出现很明显动画效果,因此我在额外战斗指令的菜单窗口上也添加了这样的代码,这样可以更加的统一一些。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/758322.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微服务day04(上)-- RabbitMQ学习与入门

1.初识MQ 1.1.同步和异步通讯 微服务间通讯有同步和异步两种方式&#xff1a; 同步通讯&#xff1a;就像打电话&#xff0c;需要实时响应。 异步通讯&#xff1a;就像发邮件&#xff0c;不需要马上回复。 两种方式各有优劣&#xff0c;打电话可以立即得到响应&#xff0c;但…

深度学习 | 神经网络

一、神经网络原理 1、神经元模型 虽然叫个神经元&#xff0c;但骨子里还是线性模型。 2、神经网络结构 顾名思义就是由很多个神经元结点前后相连组成的一个网络。虽然长相上是个网络&#xff0c;但是本质上是多个线性模型的模块化组合。 在早期也被称为 多层感知机 Multi-Layer…

Visual Studio 2013 - 调试模式下根据内存地址查看内存

Visual Studio 2013 - 调试模式下根据内存地址查看内存 1. 查看内存References 1. 查看内存 调试 -> 窗口 -> 内存 -> 内存1-4 References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

【质押空投】公链Zkasino

据深潮TechFlow报道&#xff0c;游戏公链Zkasino HyperChain宣布上线质押挖矿活动&#xff0c;参与者可通过将ETH跨链到Zkasino链的方式来获取ZKAS代币。本次活动总共将分配25%的总代币供应量给参与者。质押挖矿时间将通过倒计时的方式来限制参与人数&#xff0c;以保护早期质押…

Datawhale 零基础入门数据挖掘-Task1 赛题理解

一、 赛题理解 Tip:此部分为零基础入门数据挖掘的 Task1 赛题理解 部分&#xff0c;为大家入门数据挖掘比赛提供一个基本的赛题入门讲解&#xff0c;欢迎后续大家多多交流。 赛题&#xff1a;零基础入门数据挖掘 - 二手车交易价格预测 地址&#xff1a;零基础入门数据挖掘 -…

【代码分享】四十七种测试函数(关注可免费获取)

智能优化算法测试函数简介 智能优化算法测试函数是为了在优化算法研究和开发中测试算法性能的规范问题集合。这些测试函数模拟了真实世界优化问题的不同方面,包括局部最小值、最大值、全局最优解,以及多种复杂性如高维度、非线性、不连续等。优化算法,如遗传算法、粒子群优…

蓝桥杯之动态规划冲刺

文章目录 动态规划01背包小练一下01背包网格图上的DP完全背包 最长公共字符串最长递增子序列 动态规划 动态规划&#xff1a;确定好状态方程&#xff0c;我们常常是确定前 当状态来到 i 时&#xff0c;前 i 个物体的状态是怎么样的&#xff0c;我们并不是从一个点去考虑&#x…

数据库基本介绍及编译安装mysql

目录 数据库介绍 数据库类型 数据库管理系统&#xff08;DBMS&#xff09; 数据库系统 DBMS的工作模式 关系型数据库的优缺点 编译安装mysql 数据库介绍 数据&#xff1a;描述事物的的符号纪录称为数据&#xff08;Data&#xff09; 表&#xff1a;以行和列的形式组成…

mysql迁移达梦数据库 Java踩坑合集

达梦数据库踩坑合集 文章目录 安装达梦设置大小写不敏感Spring boot引入达梦驱动&#xff08;两种方式&#xff09;将jar包打入本地maven仓库使用国内maven仓库&#xff08;阿里云镜像&#xff09; 达梦驱动yml配置springboot mybatis-plus整合达梦,如何避免指定数据库名&…

常用负载均衡详解

一、介绍 在互联网场景下&#xff0c;负载均衡&#xff08;Load Balance&#xff09;是分布式系统架构设计中必须考虑的一个环节&#xff0c;它通常是指将负载流量&#xff08;工作任务、访问请求&#xff09;平衡、分摊到多个操作单元&#xff08;服务器、组件&#xff09;上去…

Vue 计算属性和watch监听

1.1.计算属性 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><!-- 引入vue.js --><script src"node_modules/vue/dist/vue.js"></script> </h…

如何在尽量不损害画质的前提下降低视频占内存大小?视频格式科普及无损压缩软件推荐

大家好呀&#xff0c;相比大家都有对视频画质和体积的追求和取舍&#xff0c;那么&#xff0c;如何才能在不牺牲画质的前提下&#xff0c;尽可能的将视频大小降低到极致呢&#xff1f; 首先我们要了解视频的构成&#xff0c;要想降低视频的体积大小&#xff0c;我们可以从以下几…

FITS:一个轻量级而又功能强大的时间序列分析模型

AI预测相关目录 AI预测流程&#xff0c;包括ETL、算法策略、算法模型、模型评估、可视化等相关内容 最好有基础的python算法预测经验 EEMD策略及踩坑VMD-CNN-LSTM时序预测对双向LSTM等模型添加自注意力机制K折叠交叉验证optuna超参数优化框架多任务学习-模型融合策略Transform…

MySQL 多表查询强化练习

环境准备 create table dept(id int PRIMARY KEY,dname VARCHAR(50),loc VARCHAR(50) ); insert into dept values (10,研发部,北京), (20,学工部, 上海), (30,销售部,广州 ), (40,财务部,深圳);create table job(id int PRIMARY KEY,jname VARCHAR(20),descripition VARCHAR(…

【web世界探险家】HTML5 探索与实践

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &…

129740-002 是ABB生产的模块吗?

ABB 129740-002是一款智能模拟量输入输出IO模块。 这款模块的主要功能是进行模拟信号与数字信号之间的转换。具体来说&#xff0c;它可以将模拟信号转换为数字信号&#xff0c;也可以将数字信号转换回模拟信号。这一特性使其在工业应用中具有重要作用&#xff0c;尤其是在过程…

Cesium新版修改源码后,编译不生效问题

最新版本的cesium源码在编译时默认使用node_models下的cesium/engine&#xff0c;从而导致咱们修改项目中的源码并不会生效 解决方式 &#xff1a; 进入到实际的源码位置&#xff0c;执行npm link 在返回到源码的根目录下执行 npm link ./packages/engine

vue3 几种实现点击复制链接的方法

vue3 几种实现点击复制链接的方法 环境&#xff1a;vue3tselment plus 目的&#xff1a;常用到的地方就是点击复制分享链接功能 1.复制当前页面链接&#xff0c; <template><div class"news" style"margin-top: 30px"><el-button type&q…

游戏 AI 反作弊|内附解决方案详情!

我们提出使用在游戏中广泛存在的回放日志数据&#xff0c;重构出玩家当局的表现。在回放 日志数据中&#xff0c;我们构建了玩家的时序行为数据&#xff0c;并基于该时序行为数据&#xff0c;分别搭建 了透视和自瞄外挂检测系统&#xff0c;该方法和系统可广泛应用于各种在线…

SAP STMS请求重复传输

STMS 在接请求的导入的时候&#xff0c;第一次发生了错误&#xff0c;在修复了错误之后&#xff0c; 该请求二次导入显示已经该请求已全部导入 可以按如下操作进行再次导入 附加--》其他请求--》添加 输入请求号并勾选再次导入 然后点选需要重复导入的请求号即可再次导入