怎样优雅的研究 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.如何使窗体打开时居中显示 //初始化默认窗体 ...
随机推荐
- 2016"百度之星" - 初赛(Astar Round2A)HDU 5695 拓扑排序+优先队列
Gym Class Time Limit: 6000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total S ...
- bzoj4059 [Cerc2012]Non-boring sequences
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4059 [题解] 考虑分治.定义过程solve(l,r)为判断全在[l,r]范围内的所有连续子 ...
- SCP 命令(自己总结)
\ svn 删除所有的 .svn文件 find . -name .svn -type d -exec rm -fr {} \; linux之cp/scp命令+scp命令详解 名称:cp 使用权限: ...
- [HDU_3652]B-number
题目描述 A wqb-number, or B-number for short, is a non-negative integer whose decimal form contains the ...
- Generator函数的语法
简介 Generator函数是ES6关于异步编程的解决方案.Generator函数能够让函数暂停执行(即交出函数的执行权),简单直白点来理解,Generator函数就是一个状态机,内部封装了多个状态( ...
- sqlmap注入一般步骤
1. 找到注入点url2. sqlmap -u url -v 1--dbs 列出数据库或者 sqlmap -u url -v 1 --current-db 显示当前数据库3. sqlmap -u ur ...
- hdu 5082(水题)
Love Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- 第四步:查看StandardAnalyzer的分词效果并添加停用词
LUCENE的创建索引有好多种分词方式,这里我们用的StandardAnalyzer分词 package cn.lucene; import java.io.IOException; import o ...
- 洛谷——P2660 zzc 种田
P2660 zzc 种田 题目背景 可能以后 zzc就去种田了. 题目描述 田地是一个巨大的矩形,然而zzc 每次只能种一个正方形,而每种一个正方形时zzc所花的体力值是正方形的周长,种过的田不可以再 ...
- ReactiveCocoa(二)
前言 通过ReactiveCocoa(一)的学习,相信大家对ReactiveCocoa有了一些基本认识吧.下面就让我们来学习ReactiveCocoa的一些基本使用吧! ReactiveCocoa基本 ...