前言
这是我看RyanBern的rmxp脚本教程做的笔记,发在这只是用来督促自己。因为我自己是零基础,所以有些用词不够专业,记的也有些乱七八糟,请各位高抬贵手
如果要学的话,建议还是自己去看大大的视频教程
[toc]
显示标题图片
生成和释放图片
scene_title类处理标题画面
在“生成标题图形”处生成标题的文字图片,使用显示图片的命令
25行后:
1 2 3 4 5
| @sprite1 = Sprite.new @sprite1.bitmap = RPG::Cache.title("Title-Words.png") @sprite2 = Sprite.new @sprite2.bitmap = RPG::Cache.title("Title-Subwords.png")
|
sprite是用于显示图片的类
在使用图片过后,需要进行释放
90行后:
1 2 3 4
| @sprite1.bitmap.dispose @sprite1.dispose @sprite2.bitmap.dispose @sprite2.dispose
|
注意顺序是先释放位图再释放精灵
调整图片位置
使用sprite类的属性
x
精灵的 X 座标。
y
精灵的 Y 座标。
z
精灵的 Z 座标。该值大的东西显示在上面。Z 座标相同的话,则后生成的对象显示在上面。
1 2 3 4 5 6 7 8 9
| @sprite1 = Sprite.new @sprite1.bitmap = RPG::Cache.title("Title-Words.png") @sprite1.x = 112 @sprite1.y = 32 @sprite2 = Sprite.new @sprite2.bitmap = RPG::Cache.title("Title-Subwords.png") @sprite2.x = 128 @sprite2.y = 96
|
动画效果
制作两个标题从左右分别滑入,从完全透明到不透明,在屏幕中间重合为一个的效果
首先添加另一个标题图片的精灵
1 2 3 4 5 6 7 8
| @sprite3 = Sprite.new @sprite3.bitmap = @sprite1.bitmap @sprite3.x = 240 @sprite3.y = 32 @sprite4 = sprite.new @@sprite4.bitmap = @sprite2.bitmap @sprite4.x = 256 @sprite4.y = 96
|
进行释放
1 2
| @sprite3.dispose @sprite4.dispose
|
要实现画面的动态效果,需要进行过渡,来解除画面的冻结
82行后:
1 2 3 4
| Graphic.transition
title_fade_in
|
在位图新建位置设置初始不透明度
1 2 3 4
| @sprite1.opacity = 0 @sprite2.opacity = 0 @sprite3.opacity = 0 @sprite4.opacity = 0
|
然后对title_fade_in方法进行定义
过渡有16帧,因此标题过渡的过程要循环执行16次
两个图片之间相差128,执行16次,每次移动4个像素,透明度提高16
1 2 3 4 5 6 7 8 9 10 11 12
| def title_fade_in 16.times do @sprite1.x += 4 @sprite2.x += 4 @sprite3.x -= 4 @sprite4.x -= 4 @sprite1.opacity += 16 @sprite2.opacity += 16 @sprite3.opacity += 16 @sprite4.opacity += 16 Graphic.update end
|
图片选项
载入图片
用数组的方式来载入图片,避免啰嗦
1 2 3 4 5 6 7 8
| @sprite_commands = [] (0..2).each do |i| sprite = Sprite.new sprite.bitmap = RPG::Cache.title("menu-#{i}-off.png") sprite.x = 420 sprite.y = 320 + 32 * i @sprite_commands << sprite end
|
进行释放
1 2 3 4 5
| @sprite_commands.each do |sprite| sprite.bitmap.dispose sprite.dispose end
|
图片选项的处理
删除涉及到command_window的部分,包括命令窗口的生成,对“继续”是否为灰色的判断,释放命令窗口,刷新命令窗口,光标分支
在生成图片命令后,新建一个变量,用于表示光标位置
同时将139行对光标位置的判断变量改为index
在光标位置改变时,图片选项也要变化
定义一个新的方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| def Index=(index) if index > 2 index = 0 if index < 0 index = 2 end sprite = @sprite_commands[@index] sprite.bitmap.dispose sprite.bitmap = RPG::Cache.title("menu-#{@index}-off.png") sprite_new = @sprite_commands[index] sprite.bitmap.dispose sprite_new.bitmap = RPG::Cache.title("menu-#{@index}-on.png") @index = index end
|
定义方法后,在生成图片选项的位置进行调用
1 2 3 4 5 6 7 8 9 10
| @sprite_commands = [] (0..2).each do |i| sprite = Sprite.new sprite.bitmap = RPG::Cache.title("menu-#{i}-off.png") sprite.x = 420 sprite.y = 320 + 32 * i @sprite_commands << sprite end @index = 0 self.index = 0
|
游戏测试,光标无法移动
图片选项移动的效果
在update下调用一个用于图片选项刷新的方法,然后进行定义
1 2
| def update update_command
|
1 2 3 4 5 6 7 8 9 10 11
| def update_command if Input trigger?(Input::DOWN) $game_system.se_play($data_system.cursor_se) self.index = @Index +=1 return end if Input.trigger?(Input::UP) self.index = @index -1 return end end
|
判定继续的有效性
在有存档的情况下,“继续”选项可以选择,反之则为灰色的无效状态
1 2 3 4 5 6 7
| if @continue_enabled self.index = 1 else @sprite_command[1].bitmap.dispose @sprite.command[1].bitmap = RPG::Cache.title("menu-5-off.png") end
|
对@index部分也要改
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| def Index=(index) if index > 2 index = 0 if index < 0 index = 2 end sprite = @sprite_commands[@index] sprite.bitmap.dispose filename = !@continue_enabled && @index == 1 ? "menu-5-off.png" : "menu-#{@index}-off.png" sprite.bitmap = RPG::Cache.title(filename) sprite_new = @sprite_commands[index] sprite_new.bitmap.dispose filename_new = !@continue_enabled && index == 1 ? "menu-5-off.png" : "menu-#{index}-off.png" sprite_new.bitmap = RPG::Cache.title("filename.new") @index = index end
|