本帖最后由 RyanBern 于 2014-9-27 13:32 编辑
大致看了一下,LZ想要的效果类似于事件中的“显示图片”,不过是用脚本的方法。在游戏执行的某个时刻,调用方法'show_photo'来让照片显示出来。当然显示的时候会有什么淡入淡出效果。
然后就是写这个的思路,你可以建立一个Sprite的子类,然后重写里面的各种方法。不过你这加一个@photo的实例变量是什么意思啊?感觉完全没有必要。然后就是注意方法的调用,如果你定义为一个普通方法,那么一定要用一个该类的对象调用它而不能直接调用它。如果要直接调用,就要把show_photo方法定义到外面去。
废话少说,这个可以拿来参考:
class Show_Photo < Sprite def initialize(viewport = nil) super(viewport) @picture_name = "" end def show(picture_name) if @picture_name != picture_name @picture_name = picture_name if self.bitmap != nil self.bitmap.dispose end self.bitmap = RPG::Cache.picture(@picture_name) end self.opacity = 0 self.ox = self.bitmap.width / 2 self.oy = self.bitmap.height / 2 self.x = 272 self.y = 208 16.times do self.opacity += 16 Graphics.update end end def fade 16.times do self.opacity -= 16 Graphics.update end end end
class Show_Photo < Sprite
def initialize(viewport = nil)
super(viewport)
@picture_name = ""
end
def show(picture_name)
if @picture_name != picture_name
@picture_name = picture_name
if self.bitmap != nil
self.bitmap.dispose
end
self.bitmap = RPG::Cache.picture(@picture_name)
end
self.opacity = 0
self.ox = self.bitmap.width / 2
self.oy = self.bitmap.height / 2
self.x = 272
self.y = 208
16.times do
self.opacity += 16
Graphics.update
end
end
def fade
16.times do
self.opacity -= 16
Graphics.update
end
end
end
使用方法:可以利用事件脚本进行调用,要借助一个全局变量。
$photo = Show_Photo.new
# 淡入显示"1.png"
$photo.show("1.png")
如果显示结束了,可以利用$photo.fade达到淡出的作用 |