怎样优雅的研究 RGSS3 (四) 使窗体从画面边缘弹出
在非常多游戏中,窗体能够从游戏画面的边缘弹出。
而在 RGSS3 的默认脚本中时没有这样的功能的,当在地图上按下取消键时。游戏菜单会突然出现。
如今我们能够为主菜单加入动画效果,使其在屏幕边缘弹出。
我们知道游戏中的画面并非真正的在动。而是在每一帧都绘制一幅新的画面。
每一帧都对画面做一些微小的改变。在玩家的眼里就会产生画面在运动的错觉。
复杂的运动效果涉及到复杂的公式。这里我们仅仅採用最简单的匀速直线运动。
我们为主菜单中的三个窗体加入匀速直线的运动规律。使其从画面的边缘移动到目标位置。
@command_window.x = -Graphics.width
@gold_window.y = Graphics.height
@status_window.x = Graphics.width
要做到这一点,首先要把窗体的初始化坐标设在画面之外。
我们把指令窗体的起始位置设在屏幕左側。状态窗体设在屏幕右側,金币窗体设在屏幕下側。
因为系统在每一帧运行一次 update 。因此使窗体移动的代码既能够设置在窗体类的 update 方法中,也能够设置在场景类的 update 方法中。
考虑到我们仅仅须要将主菜单场景的窗体移动起来。并且为了定位坐标更加便利。所以将移动部分的代码写在 Scene_Menu 中。
在 Scene_Menu 中重写一下 update 方法。
def update
super
end
仅仅要将运动公式加入到这种方法中就能实现移动效果了。
if @command_window.x < -20
@command_window.x += 20
else
@command_window.x = 0
end
if @status_window.x > 20
@status_window.x -= 20
else
@status_window.x = 0
end
if @gold_window.y > Graphics.height - @gold_window.height + 2
@gold_window.y -= 2
else
@gold_window.y = Graphics.height - @gold_window.height
end
在我的设置中。让指令窗体与状态窗体每一帧移动20像素从屏幕左右側移动到指定位置,让金币窗体每一帧移动2像素从屏幕下側出现。
此时进入游戏打开菜单就能够观察到窗体的动画效果。
另外,由于我们的运动代码是在场景类的 update 方法中实现的。所以窗体在移动时并不影响功能的使用。这使我们的游戏更加流畅。
怎样优雅的研究 RGSS3 (四) 使窗体从画面边缘弹出的更多相关文章
- .NET MVC 学习笔记(四)— 基于Bootstarp自定义弹出框
.NET MVC 学习笔记(四)—— 基于Bootstarp自定义弹出框 转载自:https://www.cnblogs.com/nele/p/5327380.html (function ($) { ...
- 四种常见的提示弹出框(success,warning,error,loading)原生JavaScript和jQuery分别实现
原文:四种常见的提示弹出框(success,warning,error,loading)原生JavaScript和jQuery分别实现 虽然说现在官方的自带插件已经有很多了,但是有时候往往不能满足我们 ...
- Eric6中编译窗体时,弹出提示:无法启动pyuic5的解决方案
用 Eric6 与 PyQt5 结合,非常方便的实现界面与逻辑分离,满足python的极速GUI编程,不需要在界面上花很多时间. 这是一对GUI开发完美的组合! Eric6中设计窗体时,弹出提示:‘无 ...
- 关于winform窗体关闭时弹出提示框,选择否时窗体也关闭的问题
在窗体中有FormClosing这个事件,这个事件是在窗体关闭时候运行的.如果要取消某个事件的操作,那么就在该事件中写上e.Cancel=true就能取消该事件,也就是不执行该事件.所以,你要在窗体关 ...
- 如何优雅的研究 RGSS3 (七) 加入LOGO屏幕
对于游戏 LOGO 屏幕. 首先设计 LOGO Scene类.我们知道,现场类 Scene_Base 子类. 让我们回顾一下现场的作品. 首先运行开始处理.其次是开始治疗.然后停止更新屏幕,最后,治疗 ...
- 怎样优雅的研究 RGSS3 番外(一) ruby 实现的后缀自己主动机
*我真的不会 ruby 呀* #encoding:utf-8 #==================================================================== ...
- javascript使浏览器关闭前弹出确认
当用户关闭页面时,弹出对话框,让用户确认是否关闭,选择确定则页面关闭,否则页面不关闭. 效果体验:http://keleyi.com/keleyi/phtml/js/index.htm 完整代码: & ...
- <转>Android开发使输入框点击弹出日期选择对话框的方法
非常简单直接上代码: 转自:http://blog.sina.com.cn/s/blog_4ac1b5f60102vgnx.html final EditText et1=(EditText)find ...
- C#怎样保证弹出窗体是唯一并居中显示
Winform窗体中,假如我从Form1窗体要弹出Form2窗体,写法是这样的: Form2 f2 = new Form2(); f2.Show(); 1.如何使窗体打开时居中显示 //初始化默认窗体 ...
随机推荐
- poj~3694Network
Description A network administrator manages a large network. The network consists of N computers and ...
- 为什么说for循环设置循环变量的那部分是一个父作用域?
最近在看阮一峰老师的<ES6> 看到let时,发现一处for循环很神奇的地方. 书中的原话是:“另外,for循环还有一个特别之处,就是设置变量的那部分是一个父作用域,而循环体内部是一个单独 ...
- Java的运算符及结合性
优先级 运算符 结合性 1 ()[]. 从左向右 2 !+(正)-(负)~ ++ -- 从右向左 3 * / % 从左向右 4 +(加)-(减) 从左向右 5 << >&g ...
- Java中的抽象和封装
一.面向对象和面向过程的区别 面向对象: 核心:封装了属性和方法的类,以数据为中心,实现了类级别的代码重用 面向对象因为采用了类,所以具有继承和多态特性,可以进一步重用代码和简化编程 面向过程: 核心 ...
- webservice soapheader验证方法
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- vue 项目 webstrom IDE格式化代码规则遵循eslint设置
首先vue-cli生成了一个项目,开启了eslint的检测, 但是根据webstorm的快捷格式化代码 ctrl+alt+L会造成eslint报错. 解决办法一: 编辑器打开文件 首先,在编辑器里面要 ...
- eclipse 调试(debug) burpsuite 插件(Extender)
demo: https://github.com/src-kun/transparent-cap/tree/master/burpsuite 1.打开demo项目: 2.右键项目点击Configure ...
- UVA 10801 Lift Hopping 最短路
2种方式直接代码就可以了.注意首次不需要60S的转换 #include <map> #include <set> #include <list> #include ...
- 你不一定知道的、并没有什么卵用的一些python库
1. delorean,用来处理时间的库 import datetime import pytz # 一般情况下,我们想表示时间的话 est = pytz.timezone("Asia/Sh ...
- SQLSERVER2008以上版本的数据恢复
这哥们真不错... http://blog.csdn.net/dba_huangzj/article/details/8491327