RMVA序列帧动画查看工具 发表于 2016-06-08 | 分类于 RPG Maker | | 方便查看一整张大图型序列帧动画的工具 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105=begin序列帧动画查看器,方便查看每帧宽高相等的序列帧动画 -- by 烁灵使用:* 将大图放在Graphics/Pictures里* 在game.ini中增加以下设置[Ani_View]ROW=8COL=8SPEED=1FILENAME=anim其中:ROW : 行数COL : 列数SPEED : 播放速度(帧间隔,越大越慢)FILENAME : 图片名=endmodule Sl_Settings module Ani_View SPD = 1 FLN = "anim" GetPrivateProfileString = Win32API.new('kernel32', 'GetPrivateProfileString', 'ppppip', 'i') def get_info(key, default_value) buffer = [].pack('x256') section = 'Ani_View' filename = './Game.ini' get_option = Proc.new do |key, default_value| l = GetPrivateProfileString.call(section, key, default_value, buffer, buffer.size, filename) buffer[0, l] end return get_option.call(key, default_value) end def row get_info('ROW', '1').to_i end def col get_info('COL', '1').to_i end def spd get_info('SPEED', '1').to_i end def filename get_info('FILENAME', 'anim') end endendmodule SceneManager class << self include Sl_Settings::Ani_View def run args = $BTEST ? [] : [row, col, spd, filename] @scene = first_scene_class.new(*args) @scene.main while @scene end def first_scene_class $BTEST ? Scene_Battle : Scene_Ani end endendclass Scene_Ani < Scene_Base def initialize(row, col, speed = Sl_Settings::Ani_View::SPD, filename = Sl_Settings::Ani_View::FLN) super() @row = row @col = col @filename = filename @speed = speed @frame = 0 @frame_cnt = 0 @sprite = Sprite.new @sprite.bitmap = Cache.picture(@filename) w = @sprite.bitmap.width / @col h = @sprite.bitmap.height / @row @sprite.x = (Graphics.width - w) / 2 @sprite.y = (Graphics.width - h) / 2 end def update super update_ani if @frame_cnt % @speed == 0 @frame_cnt += 1 if Input.trigger?(:C) || Input.trigger?(:B) SceneManager.exit end end def update_ani x = @frame % @col y = @frame / @col w = @sprite.bitmap.width / @col h = @sprite.bitmap.height / @row rect = Rect.new(x * w, y * h, w, h) @sprite.src_rect = rect @frame += 1 @frame %= @row * @col end def terminate super @sprite.dispose endend 预览: 范例点我 范例中使用的图片作者为elnineo,来自OpenGameArt.org