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

Project1

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

[已经解决] 这个脚本是怎么实现标题显示动画?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2012-6-3
帖子
90
跳转到指定楼层
1
发表于 2012-9-15 18:52:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #==============================================================================
  2. # ■ Scene_Title
  3. #------------------------------------------------------------------------------
  4. #  处理标题画面的类。
  5. #==============================================================================

  6. class Scene_Title
  7.   #--------------------------------------------------------------------------
  8.   # ● 住处理
  9.   #--------------------------------------------------------------------------
  10.   def main
  11.     if $message_index == nil
  12.       $message_index = 0
  13.     end
  14.     # 战斗测试的情况下
  15.     if $BTEST
  16.       battle_test
  17.       return
  18.     end
  19.     # 载入数据库
  20.     #........................................................................
  21.     $data_mapinfos      = load_data("Data/MapInfos.rxdata")
  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.     #●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
  38.       #File.open("dll/data.sjxyq","rb") { |file|
  39.       ##........................................................................
  40.       #$data_mapinfos      = load_data("Map/MapInfos.map")
  41.       ##........................................................................
  42.       #$data_actors      = Marshal.load(file)
  43.       #$data_classes     = Marshal.load(file)
  44.       #$data_skills     = Marshal.load(file)
  45.       #$data_items       = Marshal.load(file)
  46.       #$data_weapons      = Marshal.load(file)
  47.       #$data_armors      = Marshal.load(file)
  48.       #$data_enemies      = Marshal.load(file)
  49.       #$data_troops        = Marshal.load(file)
  50.       #$data_states       = Marshal.load(file)
  51.       #$data_animations   = Marshal.load(file)
  52.       #$data_tilesets      = Marshal.load(file)
  53.       #$data_common_events = Marshal.load(file)
  54.       #$data_system        = Marshal.load(file)
  55.       #}
  56.     #●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
  57.     # 生成系统对像
  58.     $game_system = Game_System.new
  59.     #打包游戏数据
  60.     #●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
  61.     #File.open("Data/data.sjxyq", "wb") { |f|
  62.     #Marshal.dump($data_actors, f)
  63.     #Marshal.dump($data_classes, f)
  64.     #Marshal.dump($data_skills, f)
  65.     #Marshal.dump($data_items, f)
  66.     #Marshal.dump($data_weapons, f)
  67.     #Marshal.dump($data_armors, f)
  68.     #Marshal.dump($data_enemies , f)
  69.     #Marshal.dump($data_troops, f)
  70.     #Marshal.dump($data_states, f)
  71.     #Marshal.dump($data_animations, f)
  72.     #Marshal.dump($data_tilesets, f)
  73.     #Marshal.dump($data_common_events, f)
  74.     #Marshal.dump($data_system , f)
  75.     #}
  76.     #●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
  77.     # 生成标题图形 改成随机切换图形
  78.     @sprite = Sprite.new
  79.     #@sprite.bitmap = RPG::Cache.title($data_system.title_name)
  80.     @randpic = rand(3)
  81.     @sprite.bitmap = RPG::Cache.title("title#{@randpic}.jpg")
  82.     # 生成命令窗口
  83.     s1 = "新游戏"
  84.     s2 = "继续"
  85.     s3 = "退出"
  86.     #为了判定现在为标题画面
  87.     $title = 1
  88.     @command_window = Window_Command.new(192, [s1, s2, s3])
  89.     @command_window.back_opacity = 0
  90.     @command_window.opacity = 0
  91.     @command_window.contents_opacity = 0
  92.     @command_window.x = 320 - @command_window.width / 2
  93.     @command_window.y = 288
  94.     $sprite_new = Sprite.new(@command_window.viewport)
  95.     $sprite_load = Sprite.new
  96.     $sprite_end = Sprite.new
  97.     $sprite_new.bitmap = RPG::Cache.picture("1.png")
  98.     $sprite_new.x = @command_window.x + 20
  99.     $sprite_new.y = @command_window.y + 16 + 0
  100.     $sprite_load.bitmap = RPG::Cache.picture("3.png")
  101.     $sprite_load.x = @command_window.x + 20
  102.     $sprite_load.y = @command_window.y + 16 + 32
  103.     $sprite_end.bitmap = RPG::Cache.picture("5.png")
  104.     $sprite_end.x = @command_window.x + 20
  105.     $sprite_end.y = @command_window.y + 16 + 64
  106.     @loop_animation = RPG::Sprite.new(@command_window.viewport)
  107.     #角色动画
  108.     @loop_player_animation = RPG::Sprite.new
  109.     case @randpic
  110.       when 0
  111.         @loop_player_animation.loop_animation($data_animations[139])
  112.         @loop_player_animation.x = 225
  113.         @loop_player_animation.y = 220
  114.       when 1
  115.         @loop_player_animation.loop_animation($data_animations[140])
  116.         @loop_player_animation.x = 230
  117.         @loop_player_animation.y = 130
  118.       when 2
  119.         @loop_player_animation.loop_animation($data_animations[141])
  120.         @loop_player_animation.x = 105
  121.         @loop_player_animation.y = 185
  122.     end
  123.       
  124.     # 判定继续的有效性
  125.     # 存档文件一个也不存在的时候也调查
  126.     # 有効为 @continue_enabled 为 true、無効为 false
  127.     @continue_enabled = false
  128.     for i in 0..7
  129.       if FileTest.exist?("Save/Save#{i}.rxdata")
  130.         @continue_enabled = true
  131.       end
  132.     end
  133.     # 继续为有效的情况下、光标停止在继续上
  134.     # 无效的情况下、继续的文字显示为灰色
  135.     if @continue_enabled
  136.       @command_window.index = 1
  137.     else
  138.       @command_window.disable_item(1)
  139.     end
  140.     # 演奏标题 BGM
  141.     $game_system.bgm_play($data_system.title_bgm)
  142.     # 停止演奏 ME、BGS
  143.     Audio.me_stop
  144.     Audio.bgs_stop
  145.     # 执行过渡
  146.     Graphics.transition
  147.     # 主循环
  148.     loop do
  149.       # 刷新游戏画面
  150.       Graphics.update
  151.       # 刷新输入信息
  152.       Input.update
  153.       # 刷新画面
  154.       update
  155.       # 如果画面被切换就中断循环
  156.       if $scene != self
  157.         break
  158.       end
  159.     end
  160.     # 装备过渡
  161.     Graphics.freeze
  162.     # 释放命令窗口
  163.     @command_window.dispose
  164.     # 释放标题图形
  165.     @sprite.bitmap.dispose
  166.     @sprite.dispose
  167.    
  168.   end
  169.   #--------------------------------------------------------------------------
  170.   # ● 刷新画面
  171.   #--------------------------------------------------------------------------
  172.   def update
  173.     dx = 47
  174.     dy = 10
  175.     # 刷新命令窗口
  176.     @command_window.update
  177.     @loop_animation.update
  178.     #刷新角色图像
  179.     @loop_player_animation.update
  180.     case @command_window.index
  181.       when 0
  182.         $sprite_new.bitmap = RPG::Cache.picture("2.png")
  183.         $sprite_load.bitmap = RPG::Cache.picture("3.png")
  184.         $sprite_end.bitmap = RPG::Cache.picture("5.png")
  185.         @loop_animation.x = $sprite_new.x + dx
  186.         @loop_animation.y = $sprite_new.y + dy
  187.         @loop_animation.loop_animation($data_animations[1188])
  188.       when 1
  189.         $sprite_new.bitmap = RPG::Cache.picture("1.png")
  190.         $sprite_load.bitmap = RPG::Cache.picture("4.png")
  191.         $sprite_end.bitmap = RPG::Cache.picture("5.png")
  192.         @loop_animation.x = $sprite_load.x + dx
  193.         @loop_animation.y = $sprite_load.y + dy
  194.         @loop_animation.loop_animation($data_animations[1189])
  195.       when 2
  196.         $sprite_new.bitmap = RPG::Cache.picture("1.png")
  197.         $sprite_load.bitmap = RPG::Cache.picture("3.png")
  198.         $sprite_end.bitmap = RPG::Cache.picture("6.png")
  199.         @loop_animation.x = $sprite_end.x + dx
  200.         @loop_animation.y = $sprite_end.y + dy
  201.         @loop_animation.loop_animation($data_animations[1190])
  202.     end
  203.     # 按下 C 键的情况下
  204.     if Input.trigger?(Input::C)
  205.       # 命令窗口的光标位置的分支
  206.       case @command_window.index
  207.       when 0  # 新游戏
  208.         $title =0
  209.         command_new_game
  210.       when 1  # 继续
  211.         $title =0
  212.         command_continue
  213.       when 2  # 退出
  214.         command_shutdown
  215.       end
  216.     end
  217.   end
  218.   #--------------------------------------------------------------------------
  219.   # ● 命令 : 释放资源
  220.   #--------------------------------------------------------------------------
  221.   def dispose
  222.     #释放人物动画
  223.     unless @loop_player_animation.disposed?
  224.       @loop_player_animation.loop_animation(nil)
  225.       @loop_player_animation.dispose
  226.       @loop_player_animation = nil
  227.     end
  228.     #释放背景图形
  229.     unless @sprite.bitmap.disposed?
  230.       @sprite.bitmap.dispose
  231.       @sprite.dispose
  232.     end
  233.     #释放选项动画
  234.     unless @loop_animation.disposed?
  235.       @loop_animation.dispose
  236.       $sprite_new.bitmap.dispose
  237.       $sprite_new.dispose
  238.       $sprite_load.bitmap.dispose
  239.       $sprite_load.dispose
  240.       $sprite_end.bitmap.dispose
  241.       $sprite_end.dispose
  242.     end
  243.   end
  244.   #--------------------------------------------------------------------------
  245.   # ● 命令 : 新游戏
  246.   #--------------------------------------------------------------------------
  247.   def command_new_game
  248.     #释放图形
  249.     dispose
  250.     #停止当前演奏的SE
  251.     $game_system.se_stop
  252.     # 演奏确定 SE
  253.     $game_system.se_play($data_system.decision_se)
  254.     # 停止 BGM
  255.     Audio.bgm_stop
  256.     # 重置测量游戏时间用的画面计数器
  257.     Graphics.frame_count = 0
  258.     # 生成各种游戏对像
  259.     $game_temp          = Game_Temp.new
  260.     $game_system        = Game_System.new
  261.     $game_switches      = Game_Switches.new
  262.     $game_variables     = Game_Variables.new
  263.     $game_self_switches = Game_SelfSwitches.new
  264.     $game_screen        = Game_Screen.new
  265.     $game_actors        = Game_Actors.new
  266.     $game_party         = Game_Party.new
  267.     $game_troop         = Game_Troop.new
  268.     $game_map           = Game_Map.new
  269.     $game_player        = Game_Player.new
  270.     # 设置初期同伴位置
  271.     $game_party.setup_starting_members
  272.     # 设置初期位置的地图
  273.     $game_map.setup($data_system.start_map_id)
  274.     # 主角向初期位置移动
  275.     $game_player.moveto($data_system.start_x, $data_system.start_y)
  276.     # 刷新主角
  277.     $game_player.refresh
  278.     # 执行地图设置的 BGM 与 BGS 的自动切换
  279.     $game_map.autoplay
  280.     # 刷新地图 (执行并行事件)
  281.     $game_map.update
  282.     #初期金钱+1000
  283.     $game_party.gain_gold(10000)
  284.     # 切换地图画面
  285.     $scene = Scene_Map.new
  286.   end
  287.   #--------------------------------------------------------------------------
  288.   # ● 命令 : 继续
  289.   #--------------------------------------------------------------------------
  290.   def command_continue
  291.     #停止当前演奏的SE
  292.     $game_system.se_stop
  293.     # 继续无效的情况下
  294.     unless @continue_enabled
  295.       # 演奏无效 SE
  296.       $game_system.se_play($data_system.buzzer_se)
  297.       $title = 1
  298.       return
  299.     end
  300.     dispose
  301.     # 演奏确定 SE
  302.     $game_system.se_play($data_system.decision_se)
  303.     # 切换到读档画面
  304.     $scene = Scene_Load.new
  305.   end
  306.   #--------------------------------------------------------------------------
  307.   # ● 命令 : 退出
  308.   #--------------------------------------------------------------------------
  309.   def command_shutdown
  310.     #停止当前演奏的SE
  311.     $game_system.se_stop
  312.     # 演奏确定 SE
  313.     $game_system.se_play($data_system.decision_se)
  314.     # BGM、BGS、ME 的淡入淡出
  315.     Audio.bgm_fade(800)
  316.     Audio.bgs_fade(800)
  317.     Audio.me_fade(800)
  318.     Dir.chdir("Temp")
  319.    for f in Dir["*"]
  320.      if FileTest.directory?(f)
  321.      else
  322.        File.delete(f)
  323.      end
  324.    end
  325.     # 退出
  326.     $scene = nil
  327.    
  328.   end
  329.   #--------------------------------------------------------------------------
  330.   # ● 战斗测试
  331.   #--------------------------------------------------------------------------
  332.   def battle_test
  333.     # 载入数据库 (战斗测试用)
  334.     $data_actors        = load_data("Data/BT_Actors.rxdata")
  335.     $data_classes       = load_data("Data/BT_Classes.rxdata")
  336.     $data_skills        = load_data("Data/BT_Skills.rxdata")
  337.     $data_items         = load_data("Data/BT_Items.rxdata")
  338.     $data_weapons       = load_data("Data/BT_Weapons.rxdata")
  339.     $data_armors        = load_data("Data/BT_Armors.rxdata")
  340.     $data_enemies       = load_data("Data/BT_Enemies.rxdata")
  341.     $data_troops        = load_data("Data/BT_Troops.rxdata")
  342.     $data_states        = load_data("Data/BT_States.rxdata")
  343.     $data_animations    = load_data("Data/BT_Animations.rxdata")
  344.     $data_tilesets      = load_data("Data/BT_Tilesets.rxdata")
  345.     $data_common_events = load_data("Data/BT_CommonEvents.rxdata")
  346.     $data_system        = load_data("Data/BT_System.rxdata")
  347.     # 重置测量游戏时间用的画面计数器
  348.     Graphics.frame_count = 0
  349.     # 生成各种游戏对像
  350.     $game_temp          = Game_Temp.new
  351.     $game_system        = Game_System.new
  352.     $game_switches      = Game_Switches.new
  353.     $game_variables     = Game_Variables.new
  354.     $game_self_switches = Game_SelfSwitches.new
  355.     $game_screen        = Game_Screen.new
  356.     $game_actors        = Game_Actors.new
  357.     $game_party         = Game_Party.new
  358.     $game_troop         = Game_Troop.new
  359.     $game_map           = Game_Map.new
  360.     $game_player        = Game_Player.new
  361.     # 设置战斗测试用同伴
  362.     $game_party.setup_battle_test_members
  363.     # 设置队伍 ID、可以逃走标志、战斗背景
  364.     $game_temp.battle_troop_id = $data_system.test_troop_id
  365.     $game_temp.battle_can_escape = true
  366.     $game_map.battleback_name = $data_system.battleback_name
  367.     # 演奏战斗开始 BGM
  368.     $game_system.se_play($data_system.battle_start_se)
  369.     # 演奏战斗 BGM
  370.     $game_system.bgm_play($game_system.battle_bgm)
  371.     # 切换到战斗画面
  372.     $scene = Scene_Battle.new
  373.   end
  374. end
复制代码

评分

参与人数 1星屑 +90 收起 理由
kangxi0109 + 90 学到东西所以加感谢分

查看全部评分

Lv4.逐梦者

梦石
8
星屑
2819
在线时间
1614 小时
注册时间
2010-10-22
帖子
1059

极短25获奖

2
发表于 2012-9-15 19:17:05 | 只看该作者
学到东西了...
实现动画的脚本是
  1. #角色动画
复制代码
下面的一段,通过建立一个新的精灵来播放动画...
【2022.06.03】原本以为已经不可能再找回来的东西重新找回来了,原本一直念念不忘的坑终于再一次拿起铲子了。一别竟近10年,你好,我的世界我的梦。
【不可阻挡】异元-地劫黎明
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-5 11:07

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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