| 赞 | 41 |
| VIP | |
| 好人卡 | |
| 积分 | 103 |
| 经验 | |
| 最后登录 | 2026-4-17 |
| 在线时间 | 608 小时 |
- 梦石
- 3
- 星屑
- 7336
- 在线时间
- 608 小时
- 注册时间
- 2019-9-15
- 回帖
- 112

|
发表于 2020-7-3 21:19:54
|
显示全部楼层
本帖最后由 Cupidk爱呗茶 于 2020-7-8 16:20 编辑
看有阵子没人回复就自己稍微研究了一下 顺便根据LZ主楼中贴出的图片做出了一些整理 试试看能不能满足需要
脚本[pre lang="ruby"]# 全场景简易循环式动画
# by 小小小小茶司令(Cupid·Rays)
# 使用说明
# 插入脚本到脚本页后任意场景中调用blink_add方法即可呼出动画
# 如要自主添加动画需将文件放在Graphics\System
# 本系统也可直接调用精灵组blink_sprites[动画编号]修改参数以达到各种自定义效果
# 具体用法可在本范例地图上查看
# 例: blink_add(1, "眨眼", 0, 0, 6) 生成对应编号动画
# blink_dispose(编号) 清除对应编号的动画
# 参数说明:
# blink_add(动画编号,图像名称,x坐标,y坐标,动画图数量,总帧数,每帧时长,透明度)
#==============================================================================
# ■ Scene_Base
#------------------------------------------------------------------------------
# 游戏中所有 Scene 类(场景类)的父类
#==============================================================================
class Scene_Base
attr_reader :blink_sprites # 读取精灵组
#--------------------------------------------------------------------------
# ● 初始化对象
#--------------------------------------------------------------------------
alias :init20207 :initialize
def initialize
init20207
@blink_sprites = {}
@blink_set = {} # 0:闪烁值 1:图片帧数 2:图片每帧时长 3:图像名 4:总帧数
end
#--------------------------------------------------------------------------
# ● 更新画面
#--------------------------------------------------------------------------
alias :update_20707 :update
def update
update_20707
if blink_true?
@blink_sprites.each_key do |i|
blink_update(i) if @blink_sprites
end
end
end
#--------------------------------------------------------------------------
# ● 结束处理
#--------------------------------------------------------------------------
alias :termi_20707 :terminate
def terminate
termi_20707
@blink_sprites.each_key {|k| blink_dispose(k) } if blink_true?
end
#--------------------------------------------------------------------------
# ● 判断精灵是否存在
#--------------------------------------------------------------------------
def blink_true?
@blink_sprites.keys.any? {|k| @blink_sprites[k] }
end
#--------------------------------------------------------------------------
# ● 添加动画精灵
#--------------------------------------------------------------------------
def blink_add(index, bitmap, x, y, size, toatl = 60, inte = 10, opacity = 255)
sprite = Sprite.new
sprite.x = x ; sprite.y = y ; sprite.z = 100
sprite.opacity = opacity
blink_set(index, size, inte, bitmap, toatl)
@blink_sprites[index] = sprite
end
#--------------------------------------------------------------------------
# ● 设置动画精灵
#--------------------------------------------------------------------------
def blink_set(index, size, inte, bitmap, toatl)
@blink_set[index] = [0, size, inte, bitmap, toatl]
end
#--------------------------------------------------------------------------
# ● 动画精灵更新
#--------------------------------------------------------------------------
def blink_update(i)
flash = @blink_set[0] % @blink_set[4] / @blink_set[2]
bitmap = Cache.system(@blink_set[3])
width = bitmap.width / @blink_set[1]
rect = Rect.new(0, 0, width, bitmap.height)
rect = Rect.new(flash * width, 0, width, bitmap.height) if flash < @blink_set[1]
if @blink_sprites.src_rect != rect || @blink_sprites.bitmap != bitmap
@blink_sprites.bitmap = bitmap
@blink_sprites.src_rect.set(rect)
end
@blink_set[0] += 1
end
#--------------------------------------------------------------------------
# ● 释放动画精灵
#--------------------------------------------------------------------------
def blink_dispose(i)
if @blink_sprites
@blink_sprites.bitmap.dispose
@blink_sprites.dispose
@blink_sprites = nil
@blink_set = nil
end
end
end
#==============================================================================
# ■ Object
#------------------------------------------------------------------------------
# 游戏中所有类的父类
#==============================================================================
class Object
#--------------------------------------------------------------------------
# ● 快捷添加方法
#--------------------------------------------------------------------------
def blink_add(*args)
SceneManager.scene.blink_add(*args)
end
#--------------------------------------------------------------------------
# ● 快捷释放方法
#--------------------------------------------------------------------------
def blink_dispose(i)
SceneManager.scene.blink_dispose(i)
end
#--------------------------------------------------------------------------
# ● 获取当前场景精灵组
#--------------------------------------------------------------------------
def blink_sprites
SceneManager.scene.blink_sprites
end
end [/pre] |
评分
-
查看全部评分
|