# 良幸脚本-伪loading随机加载界面脚本
# 这是一个可以正常使用的Fortune脚本。
# 效果是利用SceneManager.call(Scene_GoodFortune)对话框脚本指令就可以做到从Graphics/goodfortune名下的文件夹中的png图片中(新加入的图片需要用数字编号命名并且在random bitmap类下加入相应的random读取程序)随机一张图片显示
# 套用它需要在事件对话框的“脚本”选项输入SceneManager.call(Scene_GoodFortune)
# 请在路径Graphics下创建文件夹goodfortune,并将图片重命名为1~(你需要的显示张数),同时修改 # 随机获取一张图像模块的bitmaps=,使得你命名的图片路径始终处于这个定义中(用多少写多少),不然会notfound
# 定义区 - 可以在这里根据需要修改相应参数
# 定义常量
FADE_IN_DURATION = 40 # 淡入持续时间(帧数)
FADE_OUT_DURATION = 40 # 淡出持续时间(帧数)
FADE_IN_FPS = 30 # 淡入过程每秒帧数
FADE_OUT_FPS = 30 # 淡出过程每秒帧数
DISPLAY_DURATION = 110 # 图像显示持续时间(帧数)
class Scene_GoodFortune < Scene_Base
def start
super
@viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
create_sprite # 创建精灵
@fade_in_counter = FADE_IN_DURATION * FADE_IN_FPS / 60 # 计算淡入计数器
@display_counter = DISPLAY_DURATION # 计算显示计数器
@fade_out_counter = FADE_OUT_DURATION * FADE_OUT_FPS / 60 # 计算淡出计数器
@fade_in_opacity_rate = 255.0 / (@fade_in_counter + 1) # 计算每帧淡入透明度变化率
@fade_out_opacity_rate = 255.0 / (@fade_out_counter + 1) # 计算每帧淡出透明度变化率
@sprite.opacity = 0 # 初始透明度为0
@viewport.color.set(0, 0, 0, 0)
@phase = :fade_in # 当前阶段为淡入阶段
end
def update
super
case @phase
when :fade_in
update_fade_in
when :display
update_display
when :fade_out
update_fade_out
end
end
# 淡入效果更新
def update_fade_in
@sprite.opacity += @fade_in_opacity_rate.ceil # 调整透明度
@fade_in_counter -= 1
if @fade_in_counter <= 0
@phase = :display # 进入图像显示阶段
end
end
# 图像显示更新
def update_display
@display_counter -= 1
if @display_counter <= 0
@phase = :fade_out # 进入淡出阶段
end
end
# 淡出效果更新
def update_fade_out
@sprite.opacity -= @fade_out_opacity_rate.ceil # 调整透明度
@fade_out_counter -= 1
if @fade_out_counter <= 0
dispose_sprite # 释放精灵资源
SceneManager.return
end
end
# 创建精灵和位图对象
def create_sprite
@sprite = Sprite.new(@viewport)
@bitmap = random_bitmap # 随机图像
@sprite.bitmap = @bitmap
center_sprite(@sprite) # 将精灵居中
end
# 释放精灵和位图对象
def dispose_sprite
@bitmap.dispose
@sprite.dispose
@viewport.dispose
end
# 随机获取一张图像
def random_bitmap
bitmaps = [Bitmap.new("Graphics/goodfortune/1"),
Bitmap.new("Graphics/goodfortune/2"),]
return bitmaps[rand(bitmaps.size)]
end
# 将精灵设置在视口正中间
def center_sprite(sprite)
sprite.x = (Graphics.width - sprite.width) / 2
sprite.y = (Graphics.height - sprite.height) / 2
end
end