Project1
标题:
如何让图片闪烁起来
[打印本页]
作者:
布罗利
时间:
2014-5-11 21:30
标题:
如何让图片闪烁起来
本帖最后由 布罗利 于 2014-5-11 21:41 编辑
如题,就是让一张图片一闪一闪的,就是改不透明度,从255到0 反复循环,写在场景类的脚本里,可是我改了好多次都不行,到底应该怎么写呢?
@天地有正气
作者:
失踪君
时间:
2014-5-24 22:46
场景类是指Scene_Xxx吗……我翻了一下脚本,管理图片的类应该是Sprite_Picture才对。你想要改透明度的话,应当修改其中的update
#==============================================================================
# ■ Sprite_Picture
#------------------------------------------------------------------------------
# 显示图片用的活动块。Game_Picture 类的实例监视、
# 活动块状态的自动变化。
#==============================================================================
class Sprite_Picture < Sprite
#--------------------------------------------------------------------------
# ● 初始化对像
# viewport : 显示端口
# picture : 图片 (Game_Picture)
#--------------------------------------------------------------------------
def initialize(viewport, picture)
super(viewport)
@picture = picture
update
end
#--------------------------------------------------------------------------
# ● 释放
#--------------------------------------------------------------------------
def dispose
if self.bitmap != nil
self.bitmap.dispose
end
super
end
#--------------------------------------------------------------------------
# ● 更新画面
#--------------------------------------------------------------------------
def update
super
# 图片的文件名与当前的情况有差异的情况下
if @picture_name != @picture.name
# 将文件名记忆到实例变量
@picture_name = @picture.name
# 文件名不为空的情况下
if @picture_name != ""
# 获取图片图形
self.bitmap = RPG::Cache.picture(@picture_name)
end
end
if @picture_name == "QQ" #——这是需要改透明度的图片的名字
if self.opacity % 2 == 1
self.opacity -= 2
else
self.opacity += 2
end
else
self.opacity = @picture.opacity #——这是从77行移动过来的
end
# 文件名是空的情况下
if @picture_name == ""
# 将活动块设置为不可见
self.visible = false
return
end
# 将活动块设置为可见
self.visible = true
# 设置传送原点
if @picture.origin == 0
self.ox = 0
self.oy = 0
else
self.ox = self.bitmap.width / 2
self.oy = self.bitmap.height / 2
end
# 设置活动块的坐标
self.x = @picture.x
self.y = @picture.y
self.z = @picture.number
# 设置放大率、不透明度、合成方式
self.zoom_x = @picture.zoom_x / 100.0
self.zoom_y = @picture.zoom_y / 100.0
#self.opacity = @picture.opacity #——移动到51行
self.blend_type = @picture.blend_type
# 设置旋转角度、色调
self.angle = @picture.angle
self.tone = @picture.tone
end
end
复制代码
(上面有改动的都标记了 #—— )
这里写得比较简单,用了一个 if self.opacity % 2 == 1 就能判断opacity是+还是-。这是因为opacity只能设定在0~255。最初设定为255,-2后的opacity都是奇数。到了1时-2会被调整为0,所以就变成偶数……
当然如果要改变变化的速度的话,这个2就要改变,也要考虑能否满足我这个偷懒的写法了。
(说的比较啰嗦,看不懂就用下面那个方法吧)
比较正常的写法是,在initialize建立一个@xxx来记录true或false。是true就减小,false反之
作者:
天地有正气
时间:
2014-5-25 12:40
为防止脚本出错,首先@sprite
@sprite = RPG::Sprite.new
@sprite.bitmap = RPG::Cache.battler("001-Fighter01",0)
loop do
@sprite.update
@sprite.blink_on
Graphics.update
end
复制代码
应该是这种效果吧?
场景类里就是在Main里生成RPG::Sprite的实例并指定bitmap。
然后update方法里面写
@sprite.update
@sprite.blink_on
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1