赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 1 |
经验 | 375 |
最后登录 | 2012-2-16 |
在线时间 | 19 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 19 小时
- 注册时间
- 2012-2-3
- 帖子
- 12
|
想弄一个动态的标题背景,用了一下脚本,没有效果。这个脚本是流星划过画面的~~应该有人知道吧~~
脚本如下,不知道有什么问题。- #==============================================================================
- # ◎ Scene_Star
- #------------------------------------------------------------------------------
- # ◎ 流星流过刷出图片
- #------------------------------------------------------------------------------
- # 制作者:绿梨子红苹果
- # 个人主页:vbgm.9126.com
- # E-Mail:[email protected]
- # QQ:42378361
- #==============================================================================
- class Scene_Star
- #--------------------------------------------------------------------------
- # ● 住处理
- #--------------------------------------------------------------------------
- def main
-
- # 战斗测试的情况下
- if $BTEST
- battle_test
- return
- end
- # 载入数据库
- $data_actors = load_data("Data/Actors.rxdata")
- $data_classes = load_data("Data/Classes.rxdata")
- $data_skills = load_data("Data/Skills.rxdata")
- $data_items = load_data("Data/Items.rxdata")
- $data_weapons = load_data("Data/Weapons.rxdata")
- $data_armors = load_data("Data/Armors.rxdata")
- $data_enemies = load_data("Data/Enemies.rxdata")
- $data_troops = load_data("Data/Troops.rxdata")
- $data_states = load_data("Data/States.rxdata")
- $data_animations = load_data("Data/Animations.rxdata")
- $data_tilesets = load_data("Data/Tilesets.rxdata")
- $data_common_events = load_data("Data/CommonEvents.rxdata")
- $data_system = load_data("Data/System.rxdata")
- # 生成系统对像
- $game_system = Game_System.new
-
- # 生成显示 标题 图片用的Sprite
- @SurTitle = Sprite.new
- @SurTitle.bitmap = Bitmap.new("Graphics/Titles/" + $data_system.title_name)
- # 生成 VB Game Maker 背景图形Sprite
- @SurVBGM = Sprite.new
- @SurVBGM.bitmap = Bitmap.new("Graphics/Titles/vbgm.png")
- # 实现擦除的关键,将待擦除的背景混合方式改为减法
- @SurVBGM.blend_type =2
- # 载入 流星 位图
- @SurStar = Bitmap.new("Graphics/Titles/star.png")
- # 生成星星Sprite,星星同时最多出现8个
- @star=[nil,nil,nil,nil,nil,nil,nil,nil]
- for i in 0..7
- @star[i] = Sprite.new
- @star[i].bitmap = Bitmap.new(32,32)
- @star[i].x=-32 # 这两步设定初始值
- @star[i].y=-32 # 防止星星错误的出现在屏幕中央
- @star[i].blend_type =1 # 星星混合方式为加法
- @star[i].visible =false # 一开始不显示星星
- @star[i].bitmap.blt(0,0,@SurStar,Rect.new(0,32,32,32))
- end
-
- # 星星出现的顺序,当然不嫌麻烦的话,这里应该做成随机的
- @star_turn=
- [
- 20,31,36,24,18,40,27,38,34,47,
- 13,19,11,5,46,14,16,2,37,44,
- 39,6,12,25,8,17,35,1,10,42,
- 21,15,4,22,9,43,26,29,45,23,
- 33,3,32,41,30,7,28,0
- ]
- # 记录星星出现的数量
- @star_num=0
- # 记录星星状态的矩形
- # 注:这个矩形是记录应该显示星星的哪个状态的,实在不懂的话不必追究
- @star_rect=[nil,nil,nil,nil,nil,nil,nil,nil]
-
- # 执行过渡
- Graphics.transition
-
- # 定义计数器,这里计数器是控制星星转动的
- @i=0
- # 主循环
- loop do
- # 刷新游戏画面
- Graphics.update
- # 刷新输入信息
- Input.update
- # 刷新画面
- update
- # 如果画面被切换就中断循环
- if $scene != self
- break
- end
- # 计数器自增
- @i+=1
- end
-
- # 准备过渡
- Graphics.freeze
-
- # 释放图形
- @SurTitle.bitmap.dispose
- @SurTitle.dispose
- @SurVBGM.bitmap.dispose
- @SurVBGM.dispose
- for i in 0..7
- @star[i].bitmap.dispose
- @star[i].dispose
- end
- end
- #--------------------------------------------------------------------------
- # ● 刷新画面
- #--------------------------------------------------------------------------
- def update
- # 在星星数量小于8时是随机让星星出现的
- if @star_num < 8
- # 随机出现星星,1/10概率
- if rand(10)==1
- # 取得应该出现的星星的序号
- t=@star_turn[@star_num]
- # 计算星星的开始坐标
- if t<28
- @star[@star_num].x=t * 24
- @star[@star_num].y=-32
- else
- @star[@star_num].x=640
- @star[@star_num].y=(t-28)*24
- end
- # 初始化星星的状态矩形,绘制它的起始图片以及设定它可见
- @star_rect[@star_num]=Rect.new(0,0,32,32)
- @star[@star_num].visible = true
- # 已出现的星星数目自增1
- @star_num+=1
- end
- end
- # 这段用于擦除背景
- for i in 0..7
- # 当星星的可视状态为真时
- if @star[i].visible == true
- # 将星星流过的位置背景图片擦成黑色,减法运算的时候就是透明的了
- @SurVBGM.bitmap.blt(@star[i].x,@star[i].y,@SurStar,@star_rect[i])
- # 将矩形位置移动到下一行,就是准备显示真实的黄色星星了
- @star_rect[i].y=32
- end
- end
- # 这一步显示金色的流星
- for i in 0..7
- # 当星星的可视状态为真时
- if @star[i].visible==true
- # 这里是每3帧将星星的状态转移到下一步
- if @i%3==0
- @star[i].bitmap.blt(0,0,@SurStar,@star_rect[i])
- @star_rect[i].x+=32
- @star_rect[i].x%=160
- end
- # 星星的坐标移动,让星星从右上至左下流动
- @star[i].x-=2
- @star[i].y+=2
- # 改变矩形,为了下一次的擦除背景做准备
- @star_rect[i].y=0
- # 这里是当星星流出屏幕后进行的处理
- if @star[i].x<=-32 or @star[i].y>=480
- # 当星星没有擦除屏幕完成时,47才表示48颗星星擦除完毕了
- if @star_num < 47 then
- # 这里进行的操作就和前面的添加星星的操作一样了,省略注释
- t=@star_turn[@star_num]
- if t<28
- @star[i].x=t * 24
- @star[i].y=-32
- else
- @star[i].x=640
- @star[i].y=(t-28)*24
- end
- @star_rect[i]=Rect.new(0,0,32,32)
- @star_num+=1
- # 这里是当所有星星出现完后
- else
- # 将此流出屏幕的星星可视状态设为否
- @star[i].visible=false
- end
- end
- end
- end
- # 按下 C 键的情况下,进入标题画面
- if Input.trigger?(Input::C)
- $scene = Scene_Title.new
- end
- end
- #--------------------------------------------------------------------------
- # ● 战斗测试
- #--------------------------------------------------------------------------
- def battle_test
- # 载入数据库 (战斗测试用)
- $data_actors = load_data("Data/BT_Actors.rxdata")
- $data_classes = load_data("Data/BT_Classes.rxdata")
- $data_skills = load_data("Data/BT_Skills.rxdata")
- $data_items = load_data("Data/BT_Items.rxdata")
- $data_weapons = load_data("Data/BT_Weapons.rxdata")
- $data_armors = load_data("Data/BT_Armors.rxdata")
- $data_enemies = load_data("Data/BT_Enemies.rxdata")
- $data_troops = load_data("Data/BT_Troops.rxdata")
- $data_states = load_data("Data/BT_States.rxdata")
- $data_animations = load_data("Data/BT_Animations.rxdata")
- $data_tilesets = load_data("Data/BT_Tilesets.rxdata")
- $data_common_events = load_data("Data/BT_CommonEvents.rxdata")
- $data_system = load_data("Data/BT_System.rxdata")
- # 重置测量游戏时间用的画面计数器
- Graphics.frame_count = 0
- # 生成各种游戏对像
- $game_temp = Game_Temp.new
- $game_system = Game_System.new
- $game_switches = Game_Switches.new
- $game_variables = Game_Variables.new
- $game_self_switches = Game_SelfSwitches.new
- $game_screen = Game_Screen.new
- $game_actors = Game_Actors.new
- $game_party = Game_Party.new
- $game_troop = Game_Troop.new
- $game_map = Game_Map.new
- $game_player = Game_Player.new
- # 设置战斗测试用同伴
- $game_party.setup_battle_test_members
- # 设置队伍 ID、可以逃走标志、战斗背景
- $game_temp.battle_troop_id = $data_system.test_troop_id
- $game_temp.battle_can_escape = true
- $game_map.battleback_name = $data_system.battleback_name
- # 演奏战斗开始 BGM
- $game_system.se_play($data_system.battle_start_se)
- # 演奏战斗 BGM
- $game_system.bgm_play($game_system.battle_bgm)
- # 切换到战斗画面
- $scene = Scene_Battle.new
- end
- end
复制代码 |
|