设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1898|回复: 2
打印 上一主题 下一主题

[已经解决] 菜鸟问题:关于动态标题背景图的脚本问题。

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
19 小时
注册时间
2012-2-3
帖子
12
跳转到指定楼层
1
发表于 2012-2-7 22:37:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想弄一个动态的标题背景,用了一下脚本,没有效果。这个脚本是流星划过画面的~~应该有人知道吧~~
脚本如下,不知道有什么问题。
  1. #==============================================================================
  2. # ◎ Scene_Star
  3. #------------------------------------------------------------------------------
  4. # ◎ 流星流过刷出图片
  5. #------------------------------------------------------------------------------
  6. # 制作者:绿梨子红苹果
  7. # 个人主页:vbgm.9126.com
  8. # E-Mail:[email protected]
  9. # QQ:42378361
  10. #==============================================================================

  11. class Scene_Star
  12.   #--------------------------------------------------------------------------
  13.   # ● 住处理
  14.   #--------------------------------------------------------------------------
  15.   def main
  16.    
  17.     # 战斗测试的情况下
  18.     if $BTEST
  19.       battle_test
  20.       return
  21.     end
  22.     # 载入数据库
  23.     $data_actors        = load_data("Data/Actors.rxdata")
  24.     $data_classes       = load_data("Data/Classes.rxdata")
  25.     $data_skills        = load_data("Data/Skills.rxdata")
  26.     $data_items         = load_data("Data/Items.rxdata")
  27.     $data_weapons       = load_data("Data/Weapons.rxdata")
  28.     $data_armors        = load_data("Data/Armors.rxdata")
  29.     $data_enemies       = load_data("Data/Enemies.rxdata")
  30.     $data_troops        = load_data("Data/Troops.rxdata")
  31.     $data_states        = load_data("Data/States.rxdata")
  32.     $data_animations    = load_data("Data/Animations.rxdata")
  33.     $data_tilesets      = load_data("Data/Tilesets.rxdata")
  34.     $data_common_events = load_data("Data/CommonEvents.rxdata")
  35.     $data_system        = load_data("Data/System.rxdata")
  36.     # 生成系统对像
  37.     $game_system = Game_System.new
  38.    
  39.     # 生成显示 标题 图片用的Sprite
  40.     @SurTitle = Sprite.new
  41.     @SurTitle.bitmap = Bitmap.new("Graphics/Titles/" + $data_system.title_name)
  42.     # 生成 VB Game Maker 背景图形Sprite
  43.     @SurVBGM = Sprite.new
  44.     @SurVBGM.bitmap = Bitmap.new("Graphics/Titles/vbgm.png")
  45.     # 实现擦除的关键,将待擦除的背景混合方式改为减法
  46.     @SurVBGM.blend_type =2
  47.     # 载入 流星 位图
  48.     @SurStar = Bitmap.new("Graphics/Titles/star.png")
  49.     # 生成星星Sprite,星星同时最多出现8个
  50.     @star=[nil,nil,nil,nil,nil,nil,nil,nil]
  51.     for i in 0..7
  52.       @star[i] = Sprite.new
  53.       @star[i].bitmap = Bitmap.new(32,32)
  54.       @star[i].x=-32 # 这两步设定初始值
  55.       @star[i].y=-32 # 防止星星错误的出现在屏幕中央
  56.       @star[i].blend_type =1 # 星星混合方式为加法
  57.       @star[i].visible =false # 一开始不显示星星
  58.       @star[i].bitmap.blt(0,0,@SurStar,Rect.new(0,32,32,32))
  59.     end
  60.    
  61.     # 星星出现的顺序,当然不嫌麻烦的话,这里应该做成随机的
  62.     @star_turn=
  63.     [
  64.     20,31,36,24,18,40,27,38,34,47,
  65.     13,19,11,5,46,14,16,2,37,44,
  66.     39,6,12,25,8,17,35,1,10,42,
  67.     21,15,4,22,9,43,26,29,45,23,
  68.     33,3,32,41,30,7,28,0
  69.     ]
  70.     # 记录星星出现的数量
  71.     @star_num=0
  72.     # 记录星星状态的矩形
  73.     # 注:这个矩形是记录应该显示星星的哪个状态的,实在不懂的话不必追究
  74.     @star_rect=[nil,nil,nil,nil,nil,nil,nil,nil]
  75.    
  76.     # 执行过渡
  77.     Graphics.transition
  78.    
  79.     # 定义计数器,这里计数器是控制星星转动的
  80.     @i=0
  81.     # 主循环
  82.     loop do
  83.       # 刷新游戏画面
  84.       Graphics.update
  85.       # 刷新输入信息
  86.       Input.update
  87.       # 刷新画面
  88.       update
  89.       # 如果画面被切换就中断循环
  90.       if $scene != self
  91.         break
  92.       end
  93.       # 计数器自增
  94.       @i+=1
  95.     end
  96.    
  97.     # 准备过渡
  98.     Graphics.freeze
  99.    
  100.     # 释放图形
  101.     @SurTitle.bitmap.dispose
  102.     @SurTitle.dispose
  103.     @SurVBGM.bitmap.dispose
  104.     @SurVBGM.dispose
  105.     for i in 0..7
  106.       @star[i].bitmap.dispose
  107.       @star[i].dispose
  108.     end
  109.   end
  110.   #--------------------------------------------------------------------------
  111.   # ● 刷新画面
  112.   #--------------------------------------------------------------------------
  113.   def update
  114.     # 在星星数量小于8时是随机让星星出现的
  115.     if @star_num < 8
  116.       # 随机出现星星,1/10概率
  117.       if rand(10)==1
  118.         # 取得应该出现的星星的序号
  119.         t=@star_turn[@star_num]
  120.         # 计算星星的开始坐标
  121.         if t<28
  122.           @star[@star_num].x=t * 24
  123.           @star[@star_num].y=-32
  124.         else
  125.           @star[@star_num].x=640
  126.           @star[@star_num].y=(t-28)*24
  127.         end
  128.         # 初始化星星的状态矩形,绘制它的起始图片以及设定它可见
  129.         @star_rect[@star_num]=Rect.new(0,0,32,32)
  130.         @star[@star_num].visible = true
  131.         # 已出现的星星数目自增1
  132.         @star_num+=1
  133.       end
  134.     end
  135.     # 这段用于擦除背景
  136.     for i in 0..7
  137.       # 当星星的可视状态为真时
  138.       if @star[i].visible == true
  139.         # 将星星流过的位置背景图片擦成黑色,减法运算的时候就是透明的了
  140.         @SurVBGM.bitmap.blt(@star[i].x,@star[i].y,@SurStar,@star_rect[i])
  141.         # 将矩形位置移动到下一行,就是准备显示真实的黄色星星了
  142.         @star_rect[i].y=32
  143.       end
  144.     end
  145.     # 这一步显示金色的流星
  146.     for i in 0..7
  147.       # 当星星的可视状态为真时
  148.       if @star[i].visible==true
  149.         # 这里是每3帧将星星的状态转移到下一步
  150.         if @i%3==0
  151.           @star[i].bitmap.blt(0,0,@SurStar,@star_rect[i])
  152.           @star_rect[i].x+=32
  153.           @star_rect[i].x%=160
  154.         end
  155.         # 星星的坐标移动,让星星从右上至左下流动
  156.         @star[i].x-=2
  157.         @star[i].y+=2
  158.         # 改变矩形,为了下一次的擦除背景做准备
  159.         @star_rect[i].y=0
  160.         # 这里是当星星流出屏幕后进行的处理
  161.         if @star[i].x<=-32 or @star[i].y>=480
  162.           # 当星星没有擦除屏幕完成时,47才表示48颗星星擦除完毕了
  163.           if @star_num < 47 then
  164.             # 这里进行的操作就和前面的添加星星的操作一样了,省略注释
  165.             t=@star_turn[@star_num]
  166.             if t<28
  167.               @star[i].x=t * 24
  168.               @star[i].y=-32
  169.             else
  170.               @star[i].x=640
  171.               @star[i].y=(t-28)*24
  172.             end
  173.             @star_rect[i]=Rect.new(0,0,32,32)
  174.             @star_num+=1
  175.           # 这里是当所有星星出现完后
  176.           else
  177.             # 将此流出屏幕的星星可视状态设为否
  178.             @star[i].visible=false
  179.           end
  180.         end
  181.       end
  182.     end
  183.     # 按下 C 键的情况下,进入标题画面
  184.     if Input.trigger?(Input::C)
  185.       $scene = Scene_Title.new
  186.     end
  187.   end
  188.   #--------------------------------------------------------------------------
  189.   # ● 战斗测试
  190.   #--------------------------------------------------------------------------
  191.   def battle_test
  192.     # 载入数据库 (战斗测试用)
  193.     $data_actors        = load_data("Data/BT_Actors.rxdata")
  194.     $data_classes       = load_data("Data/BT_Classes.rxdata")
  195.     $data_skills        = load_data("Data/BT_Skills.rxdata")
  196.     $data_items         = load_data("Data/BT_Items.rxdata")
  197.     $data_weapons       = load_data("Data/BT_Weapons.rxdata")
  198.     $data_armors        = load_data("Data/BT_Armors.rxdata")
  199.     $data_enemies       = load_data("Data/BT_Enemies.rxdata")
  200.     $data_troops        = load_data("Data/BT_Troops.rxdata")
  201.     $data_states        = load_data("Data/BT_States.rxdata")
  202.     $data_animations    = load_data("Data/BT_Animations.rxdata")
  203.     $data_tilesets      = load_data("Data/BT_Tilesets.rxdata")
  204.     $data_common_events = load_data("Data/BT_CommonEvents.rxdata")
  205.     $data_system        = load_data("Data/BT_System.rxdata")
  206.     # 重置测量游戏时间用的画面计数器
  207.     Graphics.frame_count = 0
  208.     # 生成各种游戏对像
  209.     $game_temp          = Game_Temp.new
  210.     $game_system        = Game_System.new
  211.     $game_switches      = Game_Switches.new
  212.     $game_variables     = Game_Variables.new
  213.     $game_self_switches = Game_SelfSwitches.new
  214.     $game_screen        = Game_Screen.new
  215.     $game_actors        = Game_Actors.new
  216.     $game_party         = Game_Party.new
  217.     $game_troop         = Game_Troop.new
  218.     $game_map           = Game_Map.new
  219.     $game_player        = Game_Player.new
  220.     # 设置战斗测试用同伴
  221.     $game_party.setup_battle_test_members
  222.     # 设置队伍 ID、可以逃走标志、战斗背景
  223.     $game_temp.battle_troop_id = $data_system.test_troop_id
  224.     $game_temp.battle_can_escape = true
  225.     $game_map.battleback_name = $data_system.battleback_name
  226.     # 演奏战斗开始 BGM
  227.     $game_system.se_play($data_system.battle_start_se)
  228.     # 演奏战斗 BGM
  229.     $game_system.bgm_play($game_system.battle_bgm)
  230.     # 切换到战斗画面
  231.     $scene = Scene_Battle.new
  232.   end
  233. end
复制代码

Lv1.梦旅人

梦石
0
星屑
50
在线时间
57 小时
注册时间
2009-7-9
帖子
124
2
发表于 2012-2-8 21:07:42 | 只看该作者
mian 脚本
$scene = Scene_Title.new
改成
$scene = Scene_Star.new
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
19 小时
注册时间
2012-2-3
帖子
12
3
 楼主| 发表于 2012-2-9 21:18:21 | 只看该作者
awyb3110 发表于 2012-2-8 21:07
mian 脚本
$scene = Scene_Title.new
改成

解决了!!非常感谢!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-1 08:22

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表