赞 | 0 |
VIP | 2 |
好人卡 | 0 |
积分 | 2 |
经验 | 6516 |
最后登录 | 2025-7-28 |
在线时间 | 82 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 222
- 在线时间
- 82 小时
- 注册时间
- 2007-6-26
- 帖子
- 262
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
脚本' 重定义:标题画面(鼠标支持)' 的 254 行 发生了 NoMethodError。
undefined method .bitmap' for nil:NilClass
请问怎么解决!- #==============================================================================
- #■ Scene_Title
- #------------------------------------------------------------------------------
- # 处理标题画面的类。
- #==============================================================================
- class Scene_Title
- WEATHER = 4 # 使用自定义效果(0:无,1:雨,2:暴风雨,3:雪,4:自定义)
- MAXNUMBER = 18 # 天气图片数量
-
- WEATHER_FILE = "Graphics/Pictures/Title_starlong.png"
- # 自定义图片路径,这个文件可以从黑暗圣剑DEMO获得,是流星雨
-
- BLEND_TYPE = 0 # 合成方式(0:普通,1:加法,2:减法)
- WEATHER_X = 5 # X方向每回合减少象素
- WEATHER_Y = 5 # Y方向每回合减少象素
- WEATHER_OPACITY = 2 #每回合减低透明度
- START_OPACITY = 200 #出现时的透明度
- RAND_X = 1200 # 随机X范围
- RAND_Y = 600 # 随机Y范围
- HEIGHT = -600 # 出现时候的屏幕Y
- WIDTH = 100 # 出现时候的屏幕X
- #--------------------------------------------------------------------------
- # ● 主处理
- #--------------------------------------------------------------------------
-
- def main
- if $BTEST
- battle_test
- return
- end
- #########################################################
- $data_mapinfos = load_data("Data/MapInfos.rxdata")
- #########################################################
- $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
- @ox = 0
- @oy = 0
- color1 = Color.new(255,255,255, 255)
- color2 = Color.new(255, 255, 255, 128)
- @rain_bitmap = Bitmap.new(7, 56)
- for i in 0..6
- @rain_bitmap.fill_rect(6-i, i*8, 1, 8, color1)
- end
- @storm_bitmap = Bitmap.new(34, 64)
- for i in 0..31
- @storm_bitmap.fill_rect(33-i, i*2, 1, 2, color2)
- @storm_bitmap.fill_rect(32-i, i*2, 1, 2, color1)
- @storm_bitmap.fill_rect(31-i, i*2, 1, 2, color2)
- end
- @snow_bitmap = Bitmap.new(6, 6)
- @snow_bitmap.fill_rect(0, 1, 6, 4, color2)
- @snow_bitmap.fill_rect(1, 0, 4, 6, color2)
- @snow_bitmap.fill_rect(1, 2, 4, 2, color1)
- @snow_bitmap.fill_rect(2, 1, 2, 4, color1)
- @sprites = []
- for i in 1..40
- sprite = Sprite.new
- case WEATHER
- when 1
- sprite.bitmap = @rain_bitmap
- when 2
- sprite.bitmap = @storm_bitmap
- when 3
- sprite.bitmap = @snow_bitmap
- when 4
- sprite.bitmap = Bitmap.new(WEATHER_FILE)
- end
- sprite.z = 1000
- sprite.x = -1000
- sprite.y = -1000
- sprite.visible = (i <= MAXNUMBER)
- sprite.blend_type = BLEND_TYPE
- sprite.opacity = START_OPACITY
- @sprites.push(sprite)
- end
- #weather_update
- menu_back_pic_new
- # 生成标题图形
- @sprite = [Sprite.new]
- for i in 0..6
- @sprite[i] = Sprite.new
- @sprite[i].opacity = 0
- end
- @sprite[0].bitmap = RPG::Cache.title("menu_back_a")
- @sprite[0].opacity = 0
- @sprite[0].z = 9
- @delay = 0
- @back_no = 0
- ############################################################
- #开始游戏的图片
- @sprite[1].bitmap = Bitmap.new("Graphics/Pictures/1.png")
- @sprite[2].bitmap = Bitmap.new("Graphics/Pictures/2.png")
- #继续游戏的图片
- @sprite[3].bitmap = Bitmap.new("Graphics/Pictures/3.png")
- @sprite[4].bitmap = Bitmap.new("Graphics/Pictures/4.png")
- #结束游戏的图片
- @sprite[5].bitmap = Bitmap.new("Graphics/Pictures/5.png")
- @sprite[6].bitmap = Bitmap.new("Graphics/Pictures/6.png")
- #图片位置
- for i in 1..6
- @sprite[i].z = 10
- x = 55
- y = (i+1)/2*35+296 - 108
- case $menu_back_type
- when 0
- x=113
- y=(i+1)/2*35+180 + 79
- when 1
- x=55
- y=(i+1)/2*35+296 - 108
- when 2
- x=55
- y=(i+1)/2*35+296 - 108
- end
- @sprite[i].x =x
- @sprite[i].y =y
- end
- dx = 47
- dy = 10
- @new_port = Viewport.new(0, 0, 320, 480)
- @continue_port = Viewport.new(0, 0, 320, 480)
- @end_port = Viewport.new(0, 0, 320, 480)
- @continue_animation = RPG::Sprite.new(@continue_port)
- @end_animation = RPG::Sprite.new(@end_port)
- @new_animation = RPG::Sprite.new(@new_port)
- @new_animation.x = @sprite[1].x + dx
- @new_animation.y = @sprite[1].y + dy
- @continue_animation.x = @sprite[3].x + dx
- @continue_animation.y = @sprite[3].y + dy
- @end_animation.x = @sprite[5].x + dx
- @end_animation.y = @sprite[5].y + dy
- @new_animation.z = @menupic.z + 100
- @continue_animation.z = @menupic.z + 100
- @end_animation.z = @menupic.z + 100
- @continue_enabled = false
- for i in 0..14
- if FileTest.exist?("Save/Save#{i}.rxdata")
- @continue_enabled = true
- end
- end
- if @continue_enabled
- @command_index = 1
- else
- @command_index = 0
- @sprite[4].bitmap = Bitmap.new("Graphics/Pictures/4.png")
- end
- #对上一次的按钮焦点记录
- $bsylastcommand_index = @command_index
- $game_system.bgm_play($data_system.title_bgm)
- Audio.me_stop
- Audio.bgs_stop
- Graphics.transition
- loop do
- if $piantou == 1
- case $menu_back_type
- when 0
- menu_update_title_a
- when 1
- menu_update_title_b
- when 2
- menu_update_title_c
- end
- end
- Graphics.update
- #淡出背景圖形
- if @sprite[0].opacity <= 255
- @sprite[0].opacity += 15
- end
- Input.update
- update
- if $scene != self
- break
- end
- end
- Graphics.freeze
- # 釋放圖形
- for i in 0..6
- @sprite[i].bitmap.dispose
- @sprite[i].dispose
- end
- for sprite in @sprites
- sprite.dispose
- end
- @menupic.dispose
- @new_animation.dispose
- @continue_animation.dispose
- @end_animation.dispose
- @rain_bitmap.dispose
- @storm_bitmap.dispose
- @snow_bitmap.dispose
- end
- #--------------------------------------------------------------------------
- # ● 刷新天气
- #--------------------------------------------------------------------------
- def weather_update
- return if WEATHER == 0
- for i in 1..MAXNUMBER
- sprite = @sprites[i]
- if sprite == nil
- break
- end
- if WEATHER == 1
- sprite.x -= 2
- sprite.y += 16
- sprite.opacity -= 8
- end
- if WEATHER == 2
- sprite.x -= 8
- sprite.y += 16
- sprite.opacity -= 12
- end
- if WEATHER == 3
- sprite.x -= 2
- sprite.y += 8
- sprite.opacity -= 8
- end
- if WEATHER == 4
- sprite.x -= WEATHER_X
- sprite.y += WEATHER_Y
- sprite.opacity -= WEATHER_OPACITY
- end
- x = sprite.x - @ox
- y = sprite.y - @oy
- if sprite.opacity < 32 or x < -100 or x > 750 or y < -1000 or y > 500
- sprite.x = rand(RAND_X) + WIDTH + @ox
- sprite.y = rand(RAND_Y) + HEIGHT + @oy
- sprite.opacity = START_OPACITY
- end
- end
- end
- def menu_back_pic_new
- @menupic = Sprite.new
- @menupic.bitmap = Bitmap.new(640,480)
- @menupic.x = 0
- @menupic.y = 0
- @menupic.z = 8
- end
- def menu_update_title_a
- if @delay == 2
- if @back_no <= 46
- @menupic.bitmap = $menupicback[@back_no].bitmap
- @back_no += 1
- @delay = 0
- else
- @back_no = 0
- @menupic.bitmap = $menupicback[@back_no].bitmap
- @back_no += 1
- end
- else
- @delay += 1
- end
- end
- def menu_update_title_b
- if @delay == 2
- if @back_no <= 69
- @menupic.bitmap = $menupicback[@back_no].bitmap
- @back_no += 1
- @delay = 0
- else
- @back_no = 0
- @menupic.bitmap = $menupicback[@back_no].bitmap
- @back_no += 1
- end
- else
- @delay += 1
- end
- end
- def menu_update_title_c
- if @delay == 2
- if @back_no <= 49
- @menupic.bitmap = $menupicback[@back_no].bitmap
- @back_no += 1
- @delay = 0
- else
- @back_no = 0
- @menupic.bitmap = $menupicback[@back_no].bitmap
- @back_no += 1
- end
- else
- @delay += 1
- end
- end
- def menu_update_b
- if @delay == 1
- $rectpic.y = 364 * ( $menupicn - ($i - 1 ) * 50 )
- @menupic.bitmap.blt(0, 0, $menupicback[$i].bitmap, $rectpic)
- if $menupicn == 50 or $menupicn == 100 or $menupicn == 150 or $menupicn == 200 or $menupicn == 250 or $menupicn == 300 or $menupicn == 350 or $menupicn == 400
- $i = ( $menupicn /50 ) + 1
- end
- if $menupicn == 149
- $menupicn = 0
- $i = 1
- else
- $menupicn += 1
- end
- @delay = 0
- elsif @delay == 0
- @delay = 1
- end
- end
- def update
- @new_animation.update
- @continue_animation.update
- @end_animation.update
- mouse_x, mouse_y = Mouse.get_mouse_pos
- chaochaocommandchaochao
- bsymousecommandmouse
- if Input.trigger?(Input::C)
- case @command_index
- when 0
- command_new_game
- when 1
- command_continue
- when 2
- command_shutdown
- end
- end
- end
-
- def chaochaocommandchaochao
- if Input.trigger?(Input::UP)
- @command_index -= 1
- if @command_index < 0
- @command_index = 2
- end
- $game_system.se_play($data_system.cursor_se)
- end
- if Input.trigger?(Input::DOWN)
- @command_index += 1
- if @command_index > 2
- @command_index = 0
- end
- $game_system.se_play($data_system.cursor_se)
- end
- case @command_index
- when 0
- #################################################################
- @new_animation.loop_animation($data_animations[121])
- @continue_animation.loop_animation(nil)
- @end_animation.loop_animation(nil)
- #################################################################
- if @sprite[1].opacity >= 0
- @sprite[1].opacity -= 30
- end
- if @sprite[2].opacity <= 240
- @sprite[2].opacity += 30
- end
- if @sprite[3].opacity <= 210
- @sprite[3].opacity += 30
- end
- if @sprite[4].opacity >= 0
- @sprite[4].opacity -= 30
- end
- if @sprite[5].opacity <= 210
- @sprite[5].opacity += 30
- end
- if @sprite[6].opacity >= 0
- @sprite[6].opacity -= 30
- end
- when 1
- #################################################################
- @new_animation.loop_animation(nil)
- @continue_animation.loop_animation($data_animations[122])
- @end_animation.loop_animation(nil)
- #################################################################
- if @sprite[1].opacity <= 210
- @sprite[1].opacity += 30
- end
- if @sprite[2].opacity >= 0
- @sprite[2].opacity -= 30
- end
- if @sprite[3].opacity >= 0
- @sprite[3].opacity -= 30
- end
- if @sprite[4].opacity <= 240
- @sprite[4].opacity += 30
- end
- if @sprite[5].opacity <= 210
- @sprite[5].opacity += 30
- end
- if @sprite[6].opacity >= 0
- @sprite[6].opacity -= 30
- end
- when 2
- #################################################################
- @new_animation.loop_animation(nil)
- @continue_animation.loop_animation(nil)
- @end_animation.loop_animation($data_animations[123])
- #################################################################
- if @sprite[1].opacity <= 210
- @sprite[1].opacity += 30
- end
- if @sprite[2].opacity >= 0
- @sprite[2].opacity -= 30
- end
- if @sprite[3].opacity <= 210
- @sprite[3].opacity += 30
- end
- if @sprite[4].opacity >= 0
- @sprite[4].opacity -= 30
- end
- if @sprite[5].opacity >= 0
- @sprite[5].opacity -= 30
- end
- if @sprite[6].opacity <= 240
- @sprite[6].opacity += 30
- end
- end
- end
-
- #根据鼠标坐标判断按钮焦点(左击确定功能已由鼠标脚本完成)
- def bsymousecommandmouse
- mouse_x, mouse_y = Mouse.get_mouse_pos
- case $menu_back_type
- when 0
- dy = 37
- if mouse_y > 332 - dy and mouse_y < 362 - dy
- @command_index = 0
- end
- if mouse_y > 369 - dy and mouse_y < 399 - dy
- @command_index = 1
- end
- if mouse_y > 405 - dy and mouse_y < 435 - dy
- @command_index = 2
- end
- when 1
- dy = 108
- if mouse_y > 332 - dy and mouse_y < 362 - dy
- @command_index = 0
- end
- if mouse_y > 369 - dy and mouse_y < 399 - dy
- @command_index = 1
- end
- if mouse_y > 405 - dy and mouse_y < 435 - dy
- @command_index = 2
- end
- when 2
- dy = 108
- if mouse_y > 332 - dy and mouse_y < 362 - dy
- @command_index = 0
- end
- if mouse_y > 369 - dy and mouse_y < 399 - dy
- @command_index = 1
- end
- if mouse_y > 405 - dy and mouse_y < 435 - dy
- @command_index = 2
- end
- end
- #判断按钮焦点是否变化(变化则有响声,无变化则不响)
- if @command_index < $bsylastcommand_index or @command_index > $bsylastcommand_index
- $game_system.se_play($data_system.cursor_se)
- $bsylastcommand_index = @command_index
- case @command_index
- when 0
- #################################################################
- @new_animation.loop_animation(nil)
- @continue_animation.loop_animation($data_animations[121])
- @end_animation.loop_animation(nil)
- #################################################################
- if @sprite[1].opacity >= 0
- @sprite[1].opacity -= 30
- end
- if @sprite[2].opacity <= 240
- @sprite[2].opacity += 30
- end
- if @sprite[3].opacity <= 210
- @sprite[3].opacity += 30
- end
- if @sprite[4].opacity >= 0
- @sprite[4].opacity -= 30
- end
- if @sprite[5].opacity <= 210
- @sprite[5].opacity += 30
- end
- if @sprite[6].opacity >= 0
- @sprite[6].opacity -= 30
- end
- when 1
- #################################################################
- @new_animation.loop_animation(nil)
- @continue_animation.loop_animation($data_animations[122])
- @end_animation.loop_animation(nil)
- #################################################################
- if @sprite[1].opacity <= 210
- @sprite[1].opacity += 30
- end
- if @sprite[2].opacity >= 0
- @sprite[2].opacity -= 30
- end
- if @sprite[3].opacity >= 0
- @sprite[3].opacity -= 30
- end
- if @sprite[4].opacity <= 240
- @sprite[4].opacity += 30
- end
- if @sprite[5].opacity <= 210
- @sprite[5].opacity += 30
- end
- if @sprite[6].opacity >= 0
- @sprite[6].opacity -= 30
- end
- when 2
- #################################################################
- @new_animation.loop_animation(nil)
- @continue_animation.loop_animation(nil)
- @end_animation.loop_animation($data_animations[123])
- #################################################################
- if @sprite[1].opacity <= 210
- @sprite[1].opacity += 30
- end
- if @sprite[2].opacity >= 0
- @sprite[2].opacity -= 30
- end
- if @sprite[3].opacity <= 210
- @sprite[3].opacity += 30
- end
- if @sprite[4].opacity >= 0
- @sprite[4].opacity -= 30
- end
- if @sprite[5].opacity >= 0
- @sprite[5].opacity -= 30
- end
- if @sprite[6].opacity <= 240
- @sprite[6].opacity += 30
- end
- end
- end
- end
-
- end
- # ————————————————————————————————————
- # ————————————————————————————————————
复制代码 |
|