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

Project1

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

冲突问题

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
222
在线时间
82 小时
注册时间
2007-6-26
帖子
262
跳转到指定楼层
1
发表于 2007-6-29 20:13:25 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
脚本'  重定义:标题画面(鼠标支持)' 的 254 行 发生了 NoMethodError。
undefined method .bitmap'    for  nil:NilClass


请问怎么解决!
  1. #==============================================================================
  2. #■ Scene_Title
  3. #------------------------------------------------------------------------------
  4. #  处理标题画面的类。
  5. #==============================================================================

  6. class Scene_Title
  7.   WEATHER = 4    # 使用自定义效果(0:无,1:雨,2:暴风雨,3:雪,4:自定义)
  8.   MAXNUMBER = 18  # 天气图片数量
  9.   
  10.   WEATHER_FILE = "Graphics/Pictures/Title_starlong.png"
  11.   # 自定义图片路径,这个文件可以从黑暗圣剑DEMO获得,是流星雨
  12.   
  13.   BLEND_TYPE = 0 # 合成方式(0:普通,1:加法,2:减法)
  14.   WEATHER_X = 5 # X方向每回合减少象素
  15.   WEATHER_Y = 5 # Y方向每回合减少象素
  16.   WEATHER_OPACITY = 2 #每回合减低透明度
  17.   START_OPACITY = 200 #出现时的透明度
  18.   RAND_X = 1200 # 随机X范围
  19.   RAND_Y = 600 # 随机Y范围
  20.   HEIGHT = -600 # 出现时候的屏幕Y
  21.   WIDTH = 100 # 出现时候的屏幕X
  22.   #--------------------------------------------------------------------------
  23.   # ● 主处理
  24.   #--------------------------------------------------------------------------
  25.   
  26.   def main
  27.     if $BTEST
  28.       battle_test
  29.       return
  30.     end
  31.     #########################################################
  32.     $data_mapinfos      = load_data("Data/MapInfos.rxdata")
  33.     #########################################################
  34.     $data_actors = load_data("Data/Actors.rxdata")
  35.     $data_classes = load_data("Data/Classes.rxdata")
  36.     $data_skills = load_data("Data/Skills.rxdata")
  37.     $data_items = load_data("Data/Items.rxdata")
  38.     $data_weapons = load_data("Data/Weapons.rxdata")
  39.     $data_armors = load_data("Data/Armors.rxdata")
  40.     $data_enemies = load_data("Data/Enemies.rxdata")
  41.     $data_troops = load_data("Data/Troops.rxdata")
  42.     $data_states = load_data("Data/States.rxdata")
  43.     $data_animations = load_data("Data/Animations.rxdata")
  44.     $data_tilesets = load_data("Data/Tilesets.rxdata")
  45.     $data_common_events = load_data("Data/CommonEvents.rxdata")
  46.     $data_system = load_data("Data/System.rxdata")
  47.     $game_system = Game_System.new
  48.     @ox = 0
  49.     @oy = 0
  50.     color1 = Color.new(255,255,255, 255)
  51.     color2 = Color.new(255, 255, 255, 128)
  52.     @rain_bitmap = Bitmap.new(7, 56)
  53.     for i in 0..6
  54.       @rain_bitmap.fill_rect(6-i, i*8, 1, 8, color1)
  55.     end
  56.     @storm_bitmap = Bitmap.new(34, 64)
  57.     for i in 0..31
  58.       @storm_bitmap.fill_rect(33-i, i*2, 1, 2, color2)
  59.       @storm_bitmap.fill_rect(32-i, i*2, 1, 2, color1)
  60.       @storm_bitmap.fill_rect(31-i, i*2, 1, 2, color2)
  61.     end
  62.     @snow_bitmap = Bitmap.new(6, 6)
  63.     @snow_bitmap.fill_rect(0, 1, 6, 4, color2)
  64.     @snow_bitmap.fill_rect(1, 0, 4, 6, color2)
  65.     @snow_bitmap.fill_rect(1, 2, 4, 2, color1)
  66.     @snow_bitmap.fill_rect(2, 1, 2, 4, color1)
  67.     @sprites = []
  68.     for i in 1..40
  69.       sprite = Sprite.new
  70.       case WEATHER
  71.       when 1
  72.         sprite.bitmap = @rain_bitmap
  73.       when 2
  74.         sprite.bitmap = @storm_bitmap
  75.       when 3
  76.         sprite.bitmap = @snow_bitmap
  77.       when 4
  78.         sprite.bitmap = Bitmap.new(WEATHER_FILE)
  79.       end
  80.       sprite.z = 1000
  81.       sprite.x = -1000
  82.       sprite.y = -1000
  83.       sprite.visible = (i <= MAXNUMBER)
  84.       sprite.blend_type = BLEND_TYPE
  85.       sprite.opacity = START_OPACITY
  86.       @sprites.push(sprite)
  87.     end
  88.     #weather_update
  89.     menu_back_pic_new
  90.     # 生成标题图形
  91.     @sprite = [Sprite.new]
  92.     for i in 0..6
  93.       @sprite[i] = Sprite.new
  94.       @sprite[i].opacity = 0
  95.     end
  96.     @sprite[0].bitmap = RPG::Cache.title("menu_back_a")
  97.     @sprite[0].opacity = 0
  98.     @sprite[0].z = 9
  99.     @delay = 0
  100.     @back_no = 0
  101.     ############################################################
  102.     #开始游戏的图片
  103.     @sprite[1].bitmap = Bitmap.new("Graphics/Pictures/1.png")
  104.     @sprite[2].bitmap = Bitmap.new("Graphics/Pictures/2.png")
  105.     #继续游戏的图片
  106.     @sprite[3].bitmap = Bitmap.new("Graphics/Pictures/3.png")
  107.     @sprite[4].bitmap = Bitmap.new("Graphics/Pictures/4.png")
  108.     #结束游戏的图片
  109.     @sprite[5].bitmap = Bitmap.new("Graphics/Pictures/5.png")
  110.     @sprite[6].bitmap = Bitmap.new("Graphics/Pictures/6.png")
  111.     #图片位置
  112.     for i in 1..6
  113.       @sprite[i].z = 10
  114.       x = 55
  115.       y = (i+1)/2*35+296 - 108
  116.       case $menu_back_type
  117.       when 0
  118.         x=113
  119.         y=(i+1)/2*35+180 + 79
  120.       when 1
  121.         x=55
  122.         y=(i+1)/2*35+296 - 108
  123.       when 2
  124.         x=55
  125.         y=(i+1)/2*35+296 - 108
  126.       end
  127.       @sprite[i].x =x
  128.       @sprite[i].y =y
  129.     end
  130.     dx = 47
  131.     dy = 10
  132.     @new_port = Viewport.new(0, 0, 320, 480)
  133.     @continue_port = Viewport.new(0, 0, 320, 480)
  134.     @end_port = Viewport.new(0, 0, 320, 480)
  135.     @continue_animation = RPG::Sprite.new(@continue_port)
  136.     @end_animation = RPG::Sprite.new(@end_port)
  137.     @new_animation = RPG::Sprite.new(@new_port)
  138.     @new_animation.x = @sprite[1].x + dx
  139.     @new_animation.y = @sprite[1].y + dy
  140.     @continue_animation.x = @sprite[3].x + dx
  141.     @continue_animation.y = @sprite[3].y + dy
  142.     @end_animation.x = @sprite[5].x + dx
  143.     @end_animation.y = @sprite[5].y + dy
  144.     @new_animation.z = @menupic.z + 100
  145.     @continue_animation.z = @menupic.z + 100
  146.     @end_animation.z = @menupic.z + 100
  147.     @continue_enabled = false
  148.     for i in 0..14
  149.       if FileTest.exist?("Save/Save#{i}.rxdata")
  150.         @continue_enabled = true
  151.       end
  152.     end
  153.     if @continue_enabled
  154.       @command_index = 1
  155.     else
  156.       @command_index = 0
  157.       @sprite[4].bitmap = Bitmap.new("Graphics/Pictures/4.png")
  158.     end
  159.     #对上一次的按钮焦点记录
  160.     $bsylastcommand_index = @command_index
  161.     $game_system.bgm_play($data_system.title_bgm)
  162.     Audio.me_stop
  163.     Audio.bgs_stop
  164.     Graphics.transition
  165.     loop do
  166.       if $piantou == 1
  167.         case $menu_back_type
  168.         when 0
  169.           menu_update_title_a
  170.         when 1
  171.           menu_update_title_b
  172.         when 2
  173.           menu_update_title_c
  174.         end
  175.       end
  176.       Graphics.update
  177.       #淡出背景圖形
  178.       if @sprite[0].opacity <= 255
  179.         @sprite[0].opacity += 15
  180.       end
  181.       Input.update
  182.       update
  183.       if $scene != self
  184.         break
  185.       end
  186.     end
  187.     Graphics.freeze
  188.     # 釋放圖形
  189.     for i in 0..6
  190.       @sprite[i].bitmap.dispose
  191.       @sprite[i].dispose
  192.     end
  193.     for sprite in @sprites
  194.       sprite.dispose
  195.     end
  196.     @menupic.dispose
  197.     @new_animation.dispose
  198.     @continue_animation.dispose
  199.     @end_animation.dispose
  200.     @rain_bitmap.dispose
  201.     @storm_bitmap.dispose
  202.     @snow_bitmap.dispose
  203.   end
  204.   #--------------------------------------------------------------------------
  205.   # ● 刷新天气
  206.   #--------------------------------------------------------------------------
  207.   def weather_update
  208.     return if WEATHER == 0
  209.     for i in 1..MAXNUMBER
  210.       sprite = @sprites[i]
  211.       if sprite == nil
  212.         break
  213.       end
  214.       if WEATHER == 1
  215.         sprite.x -= 2
  216.         sprite.y += 16
  217.         sprite.opacity -= 8
  218.       end
  219.       if WEATHER == 2
  220.         sprite.x -= 8
  221.         sprite.y += 16
  222.         sprite.opacity -= 12
  223.       end
  224.       if WEATHER == 3
  225.         sprite.x -= 2
  226.         sprite.y += 8
  227.         sprite.opacity -= 8
  228.       end
  229.       if WEATHER == 4
  230.         sprite.x -= WEATHER_X
  231.         sprite.y += WEATHER_Y
  232.         sprite.opacity -= WEATHER_OPACITY
  233.       end
  234.       x = sprite.x - @ox
  235.       y = sprite.y - @oy
  236.       if sprite.opacity < 32 or x < -100 or x > 750 or y < -1000 or y > 500
  237.         sprite.x = rand(RAND_X) + WIDTH + @ox
  238.         sprite.y = rand(RAND_Y) + HEIGHT + @oy
  239.         sprite.opacity = START_OPACITY
  240.       end
  241.     end
  242.   end
  243.   def menu_back_pic_new
  244.     @menupic = Sprite.new
  245.     @menupic.bitmap = Bitmap.new(640,480)
  246.     @menupic.x = 0
  247.     @menupic.y = 0
  248.     @menupic.z = 8
  249.   end
  250.   def menu_update_title_a
  251.     if @delay == 2
  252.       if @back_no <= 46
  253.         @menupic.bitmap = $menupicback[@back_no].bitmap
  254.         @back_no += 1
  255.         @delay = 0
  256.       else
  257.         @back_no = 0
  258.         @menupic.bitmap = $menupicback[@back_no].bitmap
  259.         @back_no += 1
  260.       end
  261.     else
  262.       @delay += 1
  263.     end
  264.   end
  265.   def menu_update_title_b
  266.     if @delay == 2
  267.       if @back_no <= 69
  268.         @menupic.bitmap = $menupicback[@back_no].bitmap
  269.         @back_no += 1
  270.         @delay = 0
  271.       else
  272.         @back_no = 0
  273.         @menupic.bitmap = $menupicback[@back_no].bitmap
  274.         @back_no += 1
  275.       end
  276.     else
  277.       @delay += 1
  278.     end
  279.   end
  280.   def menu_update_title_c
  281.     if @delay == 2
  282.       if @back_no <= 49
  283.         @menupic.bitmap = $menupicback[@back_no].bitmap
  284.         @back_no += 1
  285.         @delay = 0
  286.       else
  287.         @back_no = 0
  288.         @menupic.bitmap = $menupicback[@back_no].bitmap
  289.         @back_no += 1
  290.       end
  291.     else
  292.       @delay += 1
  293.     end
  294.   end
  295.   def menu_update_b
  296.     if @delay == 1
  297.       $rectpic.y = 364 * ( $menupicn - ($i - 1 ) * 50 )
  298.       @menupic.bitmap.blt(0, 0, $menupicback[$i].bitmap, $rectpic)
  299.       if $menupicn == 50 or $menupicn == 100 or $menupicn == 150 or $menupicn == 200 or $menupicn == 250 or $menupicn == 300 or $menupicn == 350 or $menupicn == 400
  300.        $i = ( $menupicn /50 ) + 1
  301.       end
  302.       if $menupicn == 149
  303.         $menupicn = 0
  304.         $i = 1
  305.       else
  306.         $menupicn += 1
  307.       end
  308.       @delay = 0
  309.     elsif @delay == 0
  310.       @delay = 1
  311.     end
  312.   end
  313.   def update
  314.     @new_animation.update
  315.     @continue_animation.update
  316.     @end_animation.update
  317.     mouse_x, mouse_y = Mouse.get_mouse_pos
  318.     chaochaocommandchaochao
  319.     bsymousecommandmouse  
  320.     if Input.trigger?(Input::C)
  321.       case @command_index
  322.       when 0
  323.         command_new_game
  324.       when 1
  325.         command_continue
  326.       when 2
  327.         command_shutdown
  328.       end
  329.     end
  330.   end
  331.   
  332.   def chaochaocommandchaochao
  333.     if Input.trigger?(Input::UP)
  334.       @command_index -= 1
  335.       if @command_index < 0
  336.         @command_index = 2
  337.       end
  338.       $game_system.se_play($data_system.cursor_se)
  339.     end
  340.     if Input.trigger?(Input::DOWN)
  341.       @command_index += 1
  342.       if @command_index > 2
  343.         @command_index = 0
  344.       end
  345.       $game_system.se_play($data_system.cursor_se)
  346.     end
  347.     case @command_index
  348.     when 0
  349.       #################################################################
  350.       @new_animation.loop_animation($data_animations[121])
  351.       @continue_animation.loop_animation(nil)
  352.       @end_animation.loop_animation(nil)
  353.       #################################################################
  354.       if @sprite[1].opacity >= 0
  355.         @sprite[1].opacity -= 30
  356.       end
  357.       if @sprite[2].opacity <= 240
  358.         @sprite[2].opacity += 30
  359.       end
  360.       if @sprite[3].opacity <= 210
  361.         @sprite[3].opacity += 30
  362.       end
  363.       if @sprite[4].opacity >= 0
  364.         @sprite[4].opacity -= 30
  365.       end
  366.       if @sprite[5].opacity <= 210
  367.         @sprite[5].opacity += 30
  368.       end
  369.       if @sprite[6].opacity >= 0
  370.         @sprite[6].opacity -= 30
  371.       end
  372.     when 1
  373.       #################################################################
  374.       @new_animation.loop_animation(nil)
  375.       @continue_animation.loop_animation($data_animations[122])
  376.       @end_animation.loop_animation(nil)
  377.       #################################################################
  378.       if @sprite[1].opacity <= 210
  379.         @sprite[1].opacity += 30
  380.       end
  381.       if @sprite[2].opacity >= 0
  382.         @sprite[2].opacity -= 30
  383.       end
  384.       if @sprite[3].opacity >= 0
  385.         @sprite[3].opacity -= 30
  386.       end
  387.       if @sprite[4].opacity <= 240
  388.         @sprite[4].opacity += 30
  389.       end
  390.       if @sprite[5].opacity <= 210
  391.         @sprite[5].opacity += 30
  392.       end
  393.       if @sprite[6].opacity >= 0
  394.         @sprite[6].opacity -= 30
  395.       end
  396.     when 2
  397.       #################################################################
  398.       @new_animation.loop_animation(nil)
  399.       @continue_animation.loop_animation(nil)
  400.       @end_animation.loop_animation($data_animations[123])
  401.       #################################################################
  402.       if @sprite[1].opacity <= 210
  403.         @sprite[1].opacity += 30
  404.       end
  405.       if @sprite[2].opacity >= 0
  406.         @sprite[2].opacity -= 30
  407.       end
  408.       if @sprite[3].opacity <= 210
  409.         @sprite[3].opacity += 30
  410.       end
  411.       if @sprite[4].opacity >= 0
  412.         @sprite[4].opacity -= 30
  413.       end
  414.       if @sprite[5].opacity >= 0
  415.         @sprite[5].opacity -= 30
  416.       end
  417.       if @sprite[6].opacity <= 240
  418.         @sprite[6].opacity += 30
  419.       end
  420.     end
  421.   end
  422.   
  423.   #根据鼠标坐标判断按钮焦点(左击确定功能已由鼠标脚本完成)
  424.   def bsymousecommandmouse
  425.     mouse_x, mouse_y = Mouse.get_mouse_pos
  426.     case $menu_back_type
  427.     when 0
  428.       dy = 37
  429.       if mouse_y > 332 - dy and mouse_y < 362 - dy
  430.         @command_index = 0
  431.       end
  432.       if mouse_y > 369 - dy and mouse_y < 399 - dy
  433.         @command_index = 1
  434.       end
  435.       if mouse_y > 405 - dy and mouse_y < 435 - dy
  436.         @command_index = 2
  437.       end
  438.     when 1
  439.       dy = 108
  440.       if mouse_y > 332 - dy and mouse_y < 362 - dy
  441.         @command_index = 0
  442.       end
  443.       if mouse_y > 369 - dy and mouse_y < 399 - dy
  444.         @command_index = 1
  445.       end
  446.       if mouse_y > 405 - dy and mouse_y < 435 - dy
  447.         @command_index = 2
  448.       end
  449.     when 2
  450.       dy = 108
  451.       if mouse_y > 332 - dy and mouse_y < 362 - dy
  452.         @command_index = 0
  453.       end
  454.       if mouse_y > 369 - dy and mouse_y < 399 - dy
  455.         @command_index = 1
  456.       end
  457.       if mouse_y > 405 - dy and mouse_y < 435 - dy
  458.         @command_index = 2
  459.       end
  460.     end
  461.     #判断按钮焦点是否变化(变化则有响声,无变化则不响)
  462.     if @command_index < $bsylastcommand_index or @command_index > $bsylastcommand_index
  463.       $game_system.se_play($data_system.cursor_se)
  464.       $bsylastcommand_index = @command_index
  465.       case @command_index
  466.       when 0
  467.       #################################################################
  468.       @new_animation.loop_animation(nil)
  469.       @continue_animation.loop_animation($data_animations[121])
  470.       @end_animation.loop_animation(nil)
  471.       #################################################################

  472.         if @sprite[1].opacity >= 0
  473.           @sprite[1].opacity -= 30
  474.         end
  475.         if @sprite[2].opacity <= 240
  476.           @sprite[2].opacity += 30
  477.         end
  478.         if @sprite[3].opacity <= 210
  479.           @sprite[3].opacity += 30
  480.         end
  481.         if @sprite[4].opacity >= 0
  482.           @sprite[4].opacity -= 30
  483.         end
  484.         if @sprite[5].opacity <= 210
  485.           @sprite[5].opacity += 30
  486.         end
  487.         if @sprite[6].opacity >= 0
  488.           @sprite[6].opacity -= 30
  489.         end
  490.       when 1
  491.       #################################################################
  492.       @new_animation.loop_animation(nil)
  493.       @continue_animation.loop_animation($data_animations[122])
  494.       @end_animation.loop_animation(nil)
  495.       #################################################################

  496.         if @sprite[1].opacity <= 210
  497.           @sprite[1].opacity += 30
  498.         end
  499.         if @sprite[2].opacity >= 0
  500.           @sprite[2].opacity -= 30
  501.         end
  502.         if @sprite[3].opacity >= 0
  503.           @sprite[3].opacity -= 30
  504.         end
  505.         if @sprite[4].opacity <= 240
  506.           @sprite[4].opacity += 30
  507.         end
  508.         if @sprite[5].opacity <= 210
  509.           @sprite[5].opacity += 30
  510.         end
  511.         if @sprite[6].opacity >= 0
  512.           @sprite[6].opacity -= 30
  513.         end
  514.       when 2
  515.       #################################################################
  516.       @new_animation.loop_animation(nil)
  517.       @continue_animation.loop_animation(nil)
  518.       @end_animation.loop_animation($data_animations[123])
  519.       #################################################################

  520.         if @sprite[1].opacity <= 210
  521.           @sprite[1].opacity += 30
  522.         end
  523.         if @sprite[2].opacity >= 0
  524.           @sprite[2].opacity -= 30
  525.         end
  526.         if @sprite[3].opacity <= 210
  527.           @sprite[3].opacity += 30
  528.         end
  529.         if @sprite[4].opacity >= 0
  530.           @sprite[4].opacity -= 30
  531.         end
  532.         if @sprite[5].opacity >= 0
  533.           @sprite[5].opacity -= 30
  534.         end
  535.         if @sprite[6].opacity <= 240
  536.           @sprite[6].opacity += 30
  537.         end
  538.       end
  539.     end
  540.   end
  541.   
  542. end

  543. # ————————————————————————————————————
  544. # ————————————————————————————————————
复制代码

Lv1.梦旅人

梦石
0
星屑
222
在线时间
82 小时
注册时间
2007-6-26
帖子
262
2
 楼主| 发表于 2007-6-29 20:13:25 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
脚本'  重定义:标题画面(鼠标支持)' 的 254 行 发生了 NoMethodError。
undefined method .bitmap'    for  nil:NilClass


请问怎么解决!
  1. #==============================================================================
  2. #■ Scene_Title
  3. #------------------------------------------------------------------------------
  4. #  处理标题画面的类。
  5. #==============================================================================

  6. class Scene_Title
  7.   WEATHER = 4    # 使用自定义效果(0:无,1:雨,2:暴风雨,3:雪,4:自定义)
  8.   MAXNUMBER = 18  # 天气图片数量
  9.   
  10.   WEATHER_FILE = "Graphics/Pictures/Title_starlong.png"
  11.   # 自定义图片路径,这个文件可以从黑暗圣剑DEMO获得,是流星雨
  12.   
  13.   BLEND_TYPE = 0 # 合成方式(0:普通,1:加法,2:减法)
  14.   WEATHER_X = 5 # X方向每回合减少象素
  15.   WEATHER_Y = 5 # Y方向每回合减少象素
  16.   WEATHER_OPACITY = 2 #每回合减低透明度
  17.   START_OPACITY = 200 #出现时的透明度
  18.   RAND_X = 1200 # 随机X范围
  19.   RAND_Y = 600 # 随机Y范围
  20.   HEIGHT = -600 # 出现时候的屏幕Y
  21.   WIDTH = 100 # 出现时候的屏幕X
  22.   #--------------------------------------------------------------------------
  23.   # ● 主处理
  24.   #--------------------------------------------------------------------------
  25.   
  26.   def main
  27.     if $BTEST
  28.       battle_test
  29.       return
  30.     end
  31.     #########################################################
  32.     $data_mapinfos      = load_data("Data/MapInfos.rxdata")
  33.     #########################################################
  34.     $data_actors = load_data("Data/Actors.rxdata")
  35.     $data_classes = load_data("Data/Classes.rxdata")
  36.     $data_skills = load_data("Data/Skills.rxdata")
  37.     $data_items = load_data("Data/Items.rxdata")
  38.     $data_weapons = load_data("Data/Weapons.rxdata")
  39.     $data_armors = load_data("Data/Armors.rxdata")
  40.     $data_enemies = load_data("Data/Enemies.rxdata")
  41.     $data_troops = load_data("Data/Troops.rxdata")
  42.     $data_states = load_data("Data/States.rxdata")
  43.     $data_animations = load_data("Data/Animations.rxdata")
  44.     $data_tilesets = load_data("Data/Tilesets.rxdata")
  45.     $data_common_events = load_data("Data/CommonEvents.rxdata")
  46.     $data_system = load_data("Data/System.rxdata")
  47.     $game_system = Game_System.new
  48.     @ox = 0
  49.     @oy = 0
  50.     color1 = Color.new(255,255,255, 255)
  51.     color2 = Color.new(255, 255, 255, 128)
  52.     @rain_bitmap = Bitmap.new(7, 56)
  53.     for i in 0..6
  54.       @rain_bitmap.fill_rect(6-i, i*8, 1, 8, color1)
  55.     end
  56.     @storm_bitmap = Bitmap.new(34, 64)
  57.     for i in 0..31
  58.       @storm_bitmap.fill_rect(33-i, i*2, 1, 2, color2)
  59.       @storm_bitmap.fill_rect(32-i, i*2, 1, 2, color1)
  60.       @storm_bitmap.fill_rect(31-i, i*2, 1, 2, color2)
  61.     end
  62.     @snow_bitmap = Bitmap.new(6, 6)
  63.     @snow_bitmap.fill_rect(0, 1, 6, 4, color2)
  64.     @snow_bitmap.fill_rect(1, 0, 4, 6, color2)
  65.     @snow_bitmap.fill_rect(1, 2, 4, 2, color1)
  66.     @snow_bitmap.fill_rect(2, 1, 2, 4, color1)
  67.     @sprites = []
  68.     for i in 1..40
  69.       sprite = Sprite.new
  70.       case WEATHER
  71.       when 1
  72.         sprite.bitmap = @rain_bitmap
  73.       when 2
  74.         sprite.bitmap = @storm_bitmap
  75.       when 3
  76.         sprite.bitmap = @snow_bitmap
  77.       when 4
  78.         sprite.bitmap = Bitmap.new(WEATHER_FILE)
  79.       end
  80.       sprite.z = 1000
  81.       sprite.x = -1000
  82.       sprite.y = -1000
  83.       sprite.visible = (i <= MAXNUMBER)
  84.       sprite.blend_type = BLEND_TYPE
  85.       sprite.opacity = START_OPACITY
  86.       @sprites.push(sprite)
  87.     end
  88.     #weather_update
  89.     menu_back_pic_new
  90.     # 生成标题图形
  91.     @sprite = [Sprite.new]
  92.     for i in 0..6
  93.       @sprite[i] = Sprite.new
  94.       @sprite[i].opacity = 0
  95.     end
  96.     @sprite[0].bitmap = RPG::Cache.title("menu_back_a")
  97.     @sprite[0].opacity = 0
  98.     @sprite[0].z = 9
  99.     @delay = 0
  100.     @back_no = 0
  101.     ############################################################
  102.     #开始游戏的图片
  103.     @sprite[1].bitmap = Bitmap.new("Graphics/Pictures/1.png")
  104.     @sprite[2].bitmap = Bitmap.new("Graphics/Pictures/2.png")
  105.     #继续游戏的图片
  106.     @sprite[3].bitmap = Bitmap.new("Graphics/Pictures/3.png")
  107.     @sprite[4].bitmap = Bitmap.new("Graphics/Pictures/4.png")
  108.     #结束游戏的图片
  109.     @sprite[5].bitmap = Bitmap.new("Graphics/Pictures/5.png")
  110.     @sprite[6].bitmap = Bitmap.new("Graphics/Pictures/6.png")
  111.     #图片位置
  112.     for i in 1..6
  113.       @sprite[i].z = 10
  114.       x = 55
  115.       y = (i+1)/2*35+296 - 108
  116.       case $menu_back_type
  117.       when 0
  118.         x=113
  119.         y=(i+1)/2*35+180 + 79
  120.       when 1
  121.         x=55
  122.         y=(i+1)/2*35+296 - 108
  123.       when 2
  124.         x=55
  125.         y=(i+1)/2*35+296 - 108
  126.       end
  127.       @sprite[i].x =x
  128.       @sprite[i].y =y
  129.     end
  130.     dx = 47
  131.     dy = 10
  132.     @new_port = Viewport.new(0, 0, 320, 480)
  133.     @continue_port = Viewport.new(0, 0, 320, 480)
  134.     @end_port = Viewport.new(0, 0, 320, 480)
  135.     @continue_animation = RPG::Sprite.new(@continue_port)
  136.     @end_animation = RPG::Sprite.new(@end_port)
  137.     @new_animation = RPG::Sprite.new(@new_port)
  138.     @new_animation.x = @sprite[1].x + dx
  139.     @new_animation.y = @sprite[1].y + dy
  140.     @continue_animation.x = @sprite[3].x + dx
  141.     @continue_animation.y = @sprite[3].y + dy
  142.     @end_animation.x = @sprite[5].x + dx
  143.     @end_animation.y = @sprite[5].y + dy
  144.     @new_animation.z = @menupic.z + 100
  145.     @continue_animation.z = @menupic.z + 100
  146.     @end_animation.z = @menupic.z + 100
  147.     @continue_enabled = false
  148.     for i in 0..14
  149.       if FileTest.exist?("Save/Save#{i}.rxdata")
  150.         @continue_enabled = true
  151.       end
  152.     end
  153.     if @continue_enabled
  154.       @command_index = 1
  155.     else
  156.       @command_index = 0
  157.       @sprite[4].bitmap = Bitmap.new("Graphics/Pictures/4.png")
  158.     end
  159.     #对上一次的按钮焦点记录
  160.     $bsylastcommand_index = @command_index
  161.     $game_system.bgm_play($data_system.title_bgm)
  162.     Audio.me_stop
  163.     Audio.bgs_stop
  164.     Graphics.transition
  165.     loop do
  166.       if $piantou == 1
  167.         case $menu_back_type
  168.         when 0
  169.           menu_update_title_a
  170.         when 1
  171.           menu_update_title_b
  172.         when 2
  173.           menu_update_title_c
  174.         end
  175.       end
  176.       Graphics.update
  177.       #淡出背景圖形
  178.       if @sprite[0].opacity <= 255
  179.         @sprite[0].opacity += 15
  180.       end
  181.       Input.update
  182.       update
  183.       if $scene != self
  184.         break
  185.       end
  186.     end
  187.     Graphics.freeze
  188.     # 釋放圖形
  189.     for i in 0..6
  190.       @sprite[i].bitmap.dispose
  191.       @sprite[i].dispose
  192.     end
  193.     for sprite in @sprites
  194.       sprite.dispose
  195.     end
  196.     @menupic.dispose
  197.     @new_animation.dispose
  198.     @continue_animation.dispose
  199.     @end_animation.dispose
  200.     @rain_bitmap.dispose
  201.     @storm_bitmap.dispose
  202.     @snow_bitmap.dispose
  203.   end
  204.   #--------------------------------------------------------------------------
  205.   # ● 刷新天气
  206.   #--------------------------------------------------------------------------
  207.   def weather_update
  208.     return if WEATHER == 0
  209.     for i in 1..MAXNUMBER
  210.       sprite = @sprites[i]
  211.       if sprite == nil
  212.         break
  213.       end
  214.       if WEATHER == 1
  215.         sprite.x -= 2
  216.         sprite.y += 16
  217.         sprite.opacity -= 8
  218.       end
  219.       if WEATHER == 2
  220.         sprite.x -= 8
  221.         sprite.y += 16
  222.         sprite.opacity -= 12
  223.       end
  224.       if WEATHER == 3
  225.         sprite.x -= 2
  226.         sprite.y += 8
  227.         sprite.opacity -= 8
  228.       end
  229.       if WEATHER == 4
  230.         sprite.x -= WEATHER_X
  231.         sprite.y += WEATHER_Y
  232.         sprite.opacity -= WEATHER_OPACITY
  233.       end
  234.       x = sprite.x - @ox
  235.       y = sprite.y - @oy
  236.       if sprite.opacity < 32 or x < -100 or x > 750 or y < -1000 or y > 500
  237.         sprite.x = rand(RAND_X) + WIDTH + @ox
  238.         sprite.y = rand(RAND_Y) + HEIGHT + @oy
  239.         sprite.opacity = START_OPACITY
  240.       end
  241.     end
  242.   end
  243.   def menu_back_pic_new
  244.     @menupic = Sprite.new
  245.     @menupic.bitmap = Bitmap.new(640,480)
  246.     @menupic.x = 0
  247.     @menupic.y = 0
  248.     @menupic.z = 8
  249.   end
  250.   def menu_update_title_a
  251.     if @delay == 2
  252.       if @back_no <= 46
  253.         @menupic.bitmap = $menupicback[@back_no].bitmap
  254.         @back_no += 1
  255.         @delay = 0
  256.       else
  257.         @back_no = 0
  258.         @menupic.bitmap = $menupicback[@back_no].bitmap
  259.         @back_no += 1
  260.       end
  261.     else
  262.       @delay += 1
  263.     end
  264.   end
  265.   def menu_update_title_b
  266.     if @delay == 2
  267.       if @back_no <= 69
  268.         @menupic.bitmap = $menupicback[@back_no].bitmap
  269.         @back_no += 1
  270.         @delay = 0
  271.       else
  272.         @back_no = 0
  273.         @menupic.bitmap = $menupicback[@back_no].bitmap
  274.         @back_no += 1
  275.       end
  276.     else
  277.       @delay += 1
  278.     end
  279.   end
  280.   def menu_update_title_c
  281.     if @delay == 2
  282.       if @back_no <= 49
  283.         @menupic.bitmap = $menupicback[@back_no].bitmap
  284.         @back_no += 1
  285.         @delay = 0
  286.       else
  287.         @back_no = 0
  288.         @menupic.bitmap = $menupicback[@back_no].bitmap
  289.         @back_no += 1
  290.       end
  291.     else
  292.       @delay += 1
  293.     end
  294.   end
  295.   def menu_update_b
  296.     if @delay == 1
  297.       $rectpic.y = 364 * ( $menupicn - ($i - 1 ) * 50 )
  298.       @menupic.bitmap.blt(0, 0, $menupicback[$i].bitmap, $rectpic)
  299.       if $menupicn == 50 or $menupicn == 100 or $menupicn == 150 or $menupicn == 200 or $menupicn == 250 or $menupicn == 300 or $menupicn == 350 or $menupicn == 400
  300.        $i = ( $menupicn /50 ) + 1
  301.       end
  302.       if $menupicn == 149
  303.         $menupicn = 0
  304.         $i = 1
  305.       else
  306.         $menupicn += 1
  307.       end
  308.       @delay = 0
  309.     elsif @delay == 0
  310.       @delay = 1
  311.     end
  312.   end
  313.   def update
  314.     @new_animation.update
  315.     @continue_animation.update
  316.     @end_animation.update
  317.     mouse_x, mouse_y = Mouse.get_mouse_pos
  318.     chaochaocommandchaochao
  319.     bsymousecommandmouse  
  320.     if Input.trigger?(Input::C)
  321.       case @command_index
  322.       when 0
  323.         command_new_game
  324.       when 1
  325.         command_continue
  326.       when 2
  327.         command_shutdown
  328.       end
  329.     end
  330.   end
  331.   
  332.   def chaochaocommandchaochao
  333.     if Input.trigger?(Input::UP)
  334.       @command_index -= 1
  335.       if @command_index < 0
  336.         @command_index = 2
  337.       end
  338.       $game_system.se_play($data_system.cursor_se)
  339.     end
  340.     if Input.trigger?(Input::DOWN)
  341.       @command_index += 1
  342.       if @command_index > 2
  343.         @command_index = 0
  344.       end
  345.       $game_system.se_play($data_system.cursor_se)
  346.     end
  347.     case @command_index
  348.     when 0
  349.       #################################################################
  350.       @new_animation.loop_animation($data_animations[121])
  351.       @continue_animation.loop_animation(nil)
  352.       @end_animation.loop_animation(nil)
  353.       #################################################################
  354.       if @sprite[1].opacity >= 0
  355.         @sprite[1].opacity -= 30
  356.       end
  357.       if @sprite[2].opacity <= 240
  358.         @sprite[2].opacity += 30
  359.       end
  360.       if @sprite[3].opacity <= 210
  361.         @sprite[3].opacity += 30
  362.       end
  363.       if @sprite[4].opacity >= 0
  364.         @sprite[4].opacity -= 30
  365.       end
  366.       if @sprite[5].opacity <= 210
  367.         @sprite[5].opacity += 30
  368.       end
  369.       if @sprite[6].opacity >= 0
  370.         @sprite[6].opacity -= 30
  371.       end
  372.     when 1
  373.       #################################################################
  374.       @new_animation.loop_animation(nil)
  375.       @continue_animation.loop_animation($data_animations[122])
  376.       @end_animation.loop_animation(nil)
  377.       #################################################################
  378.       if @sprite[1].opacity <= 210
  379.         @sprite[1].opacity += 30
  380.       end
  381.       if @sprite[2].opacity >= 0
  382.         @sprite[2].opacity -= 30
  383.       end
  384.       if @sprite[3].opacity >= 0
  385.         @sprite[3].opacity -= 30
  386.       end
  387.       if @sprite[4].opacity <= 240
  388.         @sprite[4].opacity += 30
  389.       end
  390.       if @sprite[5].opacity <= 210
  391.         @sprite[5].opacity += 30
  392.       end
  393.       if @sprite[6].opacity >= 0
  394.         @sprite[6].opacity -= 30
  395.       end
  396.     when 2
  397.       #################################################################
  398.       @new_animation.loop_animation(nil)
  399.       @continue_animation.loop_animation(nil)
  400.       @end_animation.loop_animation($data_animations[123])
  401.       #################################################################
  402.       if @sprite[1].opacity <= 210
  403.         @sprite[1].opacity += 30
  404.       end
  405.       if @sprite[2].opacity >= 0
  406.         @sprite[2].opacity -= 30
  407.       end
  408.       if @sprite[3].opacity <= 210
  409.         @sprite[3].opacity += 30
  410.       end
  411.       if @sprite[4].opacity >= 0
  412.         @sprite[4].opacity -= 30
  413.       end
  414.       if @sprite[5].opacity >= 0
  415.         @sprite[5].opacity -= 30
  416.       end
  417.       if @sprite[6].opacity <= 240
  418.         @sprite[6].opacity += 30
  419.       end
  420.     end
  421.   end
  422.   
  423.   #根据鼠标坐标判断按钮焦点(左击确定功能已由鼠标脚本完成)
  424.   def bsymousecommandmouse
  425.     mouse_x, mouse_y = Mouse.get_mouse_pos
  426.     case $menu_back_type
  427.     when 0
  428.       dy = 37
  429.       if mouse_y > 332 - dy and mouse_y < 362 - dy
  430.         @command_index = 0
  431.       end
  432.       if mouse_y > 369 - dy and mouse_y < 399 - dy
  433.         @command_index = 1
  434.       end
  435.       if mouse_y > 405 - dy and mouse_y < 435 - dy
  436.         @command_index = 2
  437.       end
  438.     when 1
  439.       dy = 108
  440.       if mouse_y > 332 - dy and mouse_y < 362 - dy
  441.         @command_index = 0
  442.       end
  443.       if mouse_y > 369 - dy and mouse_y < 399 - dy
  444.         @command_index = 1
  445.       end
  446.       if mouse_y > 405 - dy and mouse_y < 435 - dy
  447.         @command_index = 2
  448.       end
  449.     when 2
  450.       dy = 108
  451.       if mouse_y > 332 - dy and mouse_y < 362 - dy
  452.         @command_index = 0
  453.       end
  454.       if mouse_y > 369 - dy and mouse_y < 399 - dy
  455.         @command_index = 1
  456.       end
  457.       if mouse_y > 405 - dy and mouse_y < 435 - dy
  458.         @command_index = 2
  459.       end
  460.     end
  461.     #判断按钮焦点是否变化(变化则有响声,无变化则不响)
  462.     if @command_index < $bsylastcommand_index or @command_index > $bsylastcommand_index
  463.       $game_system.se_play($data_system.cursor_se)
  464.       $bsylastcommand_index = @command_index
  465.       case @command_index
  466.       when 0
  467.       #################################################################
  468.       @new_animation.loop_animation(nil)
  469.       @continue_animation.loop_animation($data_animations[121])
  470.       @end_animation.loop_animation(nil)
  471.       #################################################################

  472.         if @sprite[1].opacity >= 0
  473.           @sprite[1].opacity -= 30
  474.         end
  475.         if @sprite[2].opacity <= 240
  476.           @sprite[2].opacity += 30
  477.         end
  478.         if @sprite[3].opacity <= 210
  479.           @sprite[3].opacity += 30
  480.         end
  481.         if @sprite[4].opacity >= 0
  482.           @sprite[4].opacity -= 30
  483.         end
  484.         if @sprite[5].opacity <= 210
  485.           @sprite[5].opacity += 30
  486.         end
  487.         if @sprite[6].opacity >= 0
  488.           @sprite[6].opacity -= 30
  489.         end
  490.       when 1
  491.       #################################################################
  492.       @new_animation.loop_animation(nil)
  493.       @continue_animation.loop_animation($data_animations[122])
  494.       @end_animation.loop_animation(nil)
  495.       #################################################################

  496.         if @sprite[1].opacity <= 210
  497.           @sprite[1].opacity += 30
  498.         end
  499.         if @sprite[2].opacity >= 0
  500.           @sprite[2].opacity -= 30
  501.         end
  502.         if @sprite[3].opacity >= 0
  503.           @sprite[3].opacity -= 30
  504.         end
  505.         if @sprite[4].opacity <= 240
  506.           @sprite[4].opacity += 30
  507.         end
  508.         if @sprite[5].opacity <= 210
  509.           @sprite[5].opacity += 30
  510.         end
  511.         if @sprite[6].opacity >= 0
  512.           @sprite[6].opacity -= 30
  513.         end
  514.       when 2
  515.       #################################################################
  516.       @new_animation.loop_animation(nil)
  517.       @continue_animation.loop_animation(nil)
  518.       @end_animation.loop_animation($data_animations[123])
  519.       #################################################################

  520.         if @sprite[1].opacity <= 210
  521.           @sprite[1].opacity += 30
  522.         end
  523.         if @sprite[2].opacity >= 0
  524.           @sprite[2].opacity -= 30
  525.         end
  526.         if @sprite[3].opacity <= 210
  527.           @sprite[3].opacity += 30
  528.         end
  529.         if @sprite[4].opacity >= 0
  530.           @sprite[4].opacity -= 30
  531.         end
  532.         if @sprite[5].opacity >= 0
  533.           @sprite[5].opacity -= 30
  534.         end
  535.         if @sprite[6].opacity <= 240
  536.           @sprite[6].opacity += 30
  537.         end
  538.       end
  539.     end
  540.   end
  541.   
  542. end

  543. # ————————————————————————————————————
  544. # ————————————————————————————————————
复制代码
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2025-9-21 13:15

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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