赞 | 4 |
VIP | 211 |
好人卡 | 175 |
积分 | 7 |
经验 | 48096 |
最后登录 | 2014-1-9 |
在线时间 | 1327 小时 |
Lv2.观梦者 (?????)
- 梦石
- 0
- 星屑
- 736
- 在线时间
- 1327 小时
- 注册时间
- 2011-7-18
- 帖子
- 3184
|
本帖最后由 各种压力的猫君 于 2012-1-15 06:58 编辑
mark一下……等我搞完日常版务回来写给你 =w=
- #==============================================================================
- # ■ 注释详细到闹心的VX图片标题菜单 by 各种压力的猫君
- #------------------------------------------------------------------------------
- # 置于 Scene_Title 脚本之下,不能替换原脚本!
- # 本脚本仅用于学习,此结构效率极差!
- # 请勿参考本脚本的这种采用大量计算的方式
- #==============================================================================
- class Scene_Title < Scene_Base
- #--------------------------------------------------------------------------
- # ● 开始处理
- #--------------------------------------------------------------------------
-
- # 给原来的start方法定义一个别名 start_original
- alias start_original start
-
- # 重定义start方法
- def start
-
- # 载入图片标题菜单图像(未选中)
-
- bitmap = Bitmap.new("Graphics/System/MENUS")
- width = bitmap.width # 获取素材图宽度
- height = bitmap.height # 获取素材图高度
- lines = 4 # 指定素材图行数,用于方便计算
-
- # 检测素材图规格是否正确
-
- if height % 4 != 0 # 若高度除以4的余数不为0
- print "图片素材高度不能被行数整除,请检查素材规格"
- exit # 退出
- else # 除此之外的情况(能够整除)
- single_height = height / 4 # 计算单个选项高度
- end
-
- # 生成一些区域(Rect)四个参数分别为 x坐标 y坐标 宽度 高度
-
- # 新游戏
- rect_new_game = Rect.new(0, 0, width, single_height)
- # 继续游戏
- rect_continue = Rect.new(0, single_height, width, single_height)
- # 继续游戏(不可用)
- rect_continue_disabled = Rect.new(0, single_height*2, width, single_height)
- # 退出游戏
- rect_exit = Rect.new(0, single_height*3, width, single_height)
-
- # 生成四个选项的位图(Bitmap)这里用了局部变量方便后面调用
-
- # 新游戏
- @bitmap_new_game = Bitmap.new(width, single_height)
- @bitmap_new_game.blt(0, 0, bitmap, rect_new_game)
- # 继续游戏
- @bitmap_continue_enabled = Bitmap.new(width, single_height)
- @bitmap_continue_enabled.blt(0, 0, bitmap, rect_continue)
- # 继续游戏(不可用)
- @bitmap_continue_disabled = Bitmap.new(width, single_height)
- @bitmap_continue_disabled.blt(0, 0, bitmap, rect_continue_disabled)
- # 退出游戏
- @bitmap_exit = Bitmap.new(width, single_height)
- @bitmap_exit.blt(0, 0, bitmap, rect_exit)
- # 载入图片标题菜单图像(已选中)
-
- bitmap = Bitmap.new("Graphics/System/MENUS_Selected")
-
- # 检测素材图规格是否正确
-
- # 若素材的宽度与之前不同
- if bitmap.height != height or bitmap.height != height
- print "选中后图片素材与选中前规格不同,请检查素材规格"
- exit # 退出
- end
-
- # 生成四个选项的位图(Bitmap)这里用了局部变量方便后面调用
-
- # 新游戏
- @bitmap_new_game2 = Bitmap.new(width, single_height)
- @bitmap_new_game2.blt(0, 0, bitmap, rect_new_game)
- # 继续游戏
- @bitmap_continue_enabled2 = Bitmap.new(width, single_height)
- @bitmap_continue_enabled2.blt(0, 0, bitmap, rect_continue)
- # 继续游戏(不可用)
- @bitmap_continue_disabled2 = Bitmap.new(width, single_height)
- @bitmap_continue_disabled2.blt(0, 0, bitmap, rect_continue_disabled)
- # 退出游戏
- @bitmap_exit2 = Bitmap.new(width, single_height)
- @bitmap_exit2.blt(0, 0, bitmap, rect_exit)
-
- # 清空已经用不到的临时bitmap
-
- bitmap.dispose
-
-
- # 调用原来的开始处理定义
-
- start_original
-
- end
- #--------------------------------------------------------------------------
- # ● 更新画面
- #--------------------------------------------------------------------------
- def update
-
- super # 父类定义
- # 当按下↑方向键的时候
- if Input.trigger?(Input::UP)
- case @menu_index
- when 0
- @menu_index = 2 # 这样写是循环,如果不想循环注释掉这行就好
- when 1
- @menu_index = 0
- when 2
- @menu_index = 1
- end
- # 更新菜单(显示)
- update_menu
- # 当按下↓方向键的时候
- elsif Input.trigger?(Input::DOWN)
- case @menu_index
- when 0
- @menu_index = 1
- when 1
- @menu_index = 2
- when 2
- @menu_index = 0 # 这样写是循环,如果不想循环注释掉这行就好
- end
- # 更新菜单(显示)
- update_menu
- end
-
- # 当按下C键(确定键)的时候
- if Input.trigger?(Input::C)
- # 根据 @menu_index 的值判断下一步行动
- case @menu_index
- when 0 # 新游戏
- command_new_game
- when 1 # 继续
- command_continue
- when 2 # 关闭
- command_shutdown
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● 更新菜单(显示)
- #--------------------------------------------------------------------------
- def update_menu
- # 冻结画面,相当于RMXP的“准备渐变”
- # 如果要兼容动态标题特效则不能使用这种方式
- Graphics.freeze
- # 根据 @menu_index 的值判断变化
- case @menu_index
- when 0 # 新游戏
- @sprite_new_game.bitmap = @bitmap_new_game2
- @sprite_continue.bitmap = @bitmap_continue
- @sprite_exit.bitmap = @bitmap_exit
- when 1 # 继续
- @sprite_new_game.bitmap = @bitmap_new_game
- @sprite_continue.bitmap = @bitmap_continue2
- @sprite_exit.bitmap = @bitmap_exit
- when 2 # 关闭
- @sprite_new_game.bitmap = @bitmap_new_game
- @sprite_continue.bitmap = @bitmap_continue
- @sprite_exit.bitmap = @bitmap_exit2
- end
- # 播放光标音效
- Sound.play_cursor
- # 执行渐变(10帧)形成菜单项淡入淡出的效果
- # 如果要兼容动态标题特效则不能使用这种方式
- Graphics.transition(10)
- end
- #--------------------------------------------------------------------------
- # ● 生成命令窗口
- #--------------------------------------------------------------------------
- def create_command_window
- # 临时变量
-
- # x 坐标 = ( 游戏画面宽度 - 单个素材宽度 ) ÷ 2 ,这样计算结果是居中
- x = (Graphics.width - @bitmap_new_game.width) / 2
- # y 坐标(直接指定)
- y = 300
- # 选项间行距 = 单个素材高度
- oy = @bitmap_new_game.height
-
- # 生成显示菜单命令的精灵(Sprite)并指定坐标
-
- # 新游戏
- @sprite_new_game = Sprite.new
- @sprite_new_game.x = x
- @sprite_new_game.y = y
- # 继续游戏
- @sprite_continue = Sprite.new
- @sprite_continue.x = x
- @sprite_continue.y = y + oy
- # 退出游戏
- @sprite_exit = Sprite.new
- @sprite_exit.x = x
- @sprite_exit.y = y + oy*2
-
- # 检测存档
-
- # 如果「继续」有效
- if @continue_enabled
- # 默认激活「继续游戏」
- @menu_index = 1
- # 将继续游戏位图指定为可用
- @bitmap_continue = @bitmap_continue_enabled
- @bitmap_continue2 = @bitmap_continue_enabled2
- # 并消除不可用位图
- @bitmap_continue_disabled.dispose
- @bitmap_continue_disabled2.dispose
- else # 否则
- # 默认激活「新游戏」
- @menu_index = 0
- # 将继续游戏位图指定为不可用
- @bitmap_continue = @bitmap_continue_disabled
- @bitmap_continue2 = @bitmap_continue_disabled2
- # 并消除可用位图
- @bitmap_continue_enabled.dispose
- @bitmap_continue_enabled2.dispose
- end
-
- # 设定精灵的初始位图
-
- # 新游戏
- if @menu_index == 0 # 若默认选中新游戏
- @sprite_new_game.bitmap = @bitmap_new_game2 # 加载选中位图
- else # 否则
- @sprite_new_game.bitmap = @bitmap_new_game # 加载未选中位图
- end
- # 继续游戏
- if @menu_index == 1 # 若默认选中继续游戏
- @sprite_continue.bitmap = @bitmap_continue2 # 加载选中位图
- else # 否则
- @sprite_continue.bitmap = @bitmap_continue # 加载未选中位图
- end
- # 退出游戏
- @sprite_exit.bitmap = @bitmap_exit # 加载未选中位图
-
- end
- #--------------------------------------------------------------------------
- # ● 释放命令窗口
- #--------------------------------------------------------------------------
- def dispose_command_window
-
- # 清除精灵
-
- @sprite_new_game.dispose
- @sprite_continue.dispose
- @sprite_exit.dispose
-
- end
- #--------------------------------------------------------------------------
- # ● 开启命令窗口
- #--------------------------------------------------------------------------
- def open_command_window
-
- # 清空这个定义
-
- end
- #--------------------------------------------------------------------------
- # ● 关闭命令窗口
- #--------------------------------------------------------------------------
- def close_command_window
-
- # 清空这个定义
-
- end
- end
复制代码
范例:
图片标题菜单.zip
(284.47 KB, 下载次数: 110)
|
评分
-
查看全部评分
|