Project1
标题:
雪流星脚本教程第六弹:Window脚本教程三
[打印本页]
作者:
雪流星
时间:
2009-2-13 10:49
标题:
雪流星脚本教程第六弹:Window脚本教程三
小幽的VX实用脚本查询手册:
VX实用脚本查询手册
说明档:
点此下载
在上次的教程中,我们在Window里面显示图标跟图片
现在开始在Window里面让图片动起来,也就是制作动画。
上一课:http://rpg.blue/viewthread.php?tid=110663
把这个制作好的动画素材放进 Graphics/System 里面
我们来自己制作暂停标记的动画。
继续上次的工程。
把上次 refresh 内容清空
就是剩下
def refresh
end
复制代码
然後加上 update
def update
super
end
复制代码
第一句的 super 是要调用父类的同名方法,避免覆盖掉原来的内容。
(其实是覆盖掉,但是又调用父类里面的「备份」内容)
接下来在 initialize 里面加上
@pause_bitmap = Cache.system("window_pause")
在上一次的教程里,我们说过,这是用来载入并保存 Graphics/System 文件夹的图片
好,然後在 update 里面的 super 下面加上
fcx = ((Graphics.frame_count%32)/8)*16
rect = Rect.new(fcx, 0, 16, 16)
self.contents.clear_rect(0, 0, 16, 16)
self.contents.blt(0, 0, @pause_bitmap, rect)
复制代码
解释:
fcx = ((Graphics.frame_count%32)/8)*16
呵呵,这个公式是不是看起来很奇怪呢?
其实 (Graphics.frame_count%32)/8
这段是让我们的动画 每8桢 换一个图像
也就是0~7的时候显示第一个图像、7~15的时候显示第二个图像...依此类推
这样它的速度才不会太快
*16 就是计算每一桢的 X 座标
rect = Rect.new(fcx, 0, 16, 16)
就是根据上一句算出来的X座标来读取图片
self.contents.clear_rect(0, 0, 16, 16)
参数是 X座标、Y座标、宽、高,也可以是一个 rect 对象
跟 self.contents.clear 一样,是「擦子」的作用
不过这个只限定於由4个参数所形成的 rect 来清除
最後用self.contents.blt(0, 0, @pause_bitmap, rect)显示
测试........成功!
不过这个方法有一个问题,那就是如果动画图片下面有文字(或其他图片)
调用 self.contents.clear_rect 的时候,下面的文字/图片也会被清掉
所以再来讲解一个用精灵显示动画的方法,顺便讲解精灵(Sprite)是什麽。
在 initialize 里面添加
@pause_sprite = Sprite.new
@pause_sprite.bitmap = Cache.system("window_pause")
@pause_sprite.x = x + 16
@pause_sprite.y = y + 16
@pause_sprite.z = self.z + 1
@pause_sprite.src_rect = Rect.new(0, 0, 16, 16)
复制代码
解释:
@pause_sprite = Sprite.new
生成一个新的精灵(sprite)对象,可以用一个 viewport 对象作为参数(非必要)。
精灵就是用来在画面上显示图片的,RM中所有的图片都是用精灵显示出来的。
@pause_sprite.bitmap = Cache.system("window_pause")
载入图片,保存精灵的bitmap属性中
@pause_sprite.x = x + 16
@pause_sprite.y = y + 16
@pause_sprite.z = self.z + 1
设定 X、Y、Z座标,不用多说了吧= =
@pause_sprite.src_rect = Rect.new(0, 0, 16, 16)
这个跟
self.contents.blt(0, 0, @pause_bitmap, rect)
里面的 rect 是一样的作用,限制图片显示的区域
再来在 update 里面加上
fcx = ((Graphics.frame_count%32)/8)*16
@pause_sprite.src_rect = Rect.new(fcx, 0, 16, 16)
复制代码
第一句跟前面的一样
第二句是更新精灵的 src_rect
测试........成功!
作者:
孟凡生
时间:
2009-2-13 12:47
提示:
作者被禁止或删除 内容自动屏蔽
作者:
wantengliang
时间:
2009-2-19 00:22
提示:
作者被禁止或删除 内容自动屏蔽
作者:
精灵使者
时间:
2009-2-19 04:15
相信是雪流星不经意之间的笔误(?),已经修正
作者:
wantengliang
时间:
2009-2-19 05:35
提示:
作者被禁止或删除 内容自动屏蔽
作者:
雪流星
时间:
2009-2-19 20:01
多谢精灵帮忙修正笔误{/gg}
第二个问题:
会出现两个箭头是因为 Scene_Map 里面的 Window_Message 本身也带着一个隐藏的 Window_Gold
就是在对话中用 \g 会出现的那个
把你现在新写的这个改名成 Window_Gold2 重新调用就不会出现了
作者:
wantengliang
时间:
2009-2-19 20:56
提示:
作者被禁止或删除 内容自动屏蔽
作者:
wd_love
时间:
2009-7-16 16:19
吼吼,新鸟来学习,还有后续么?!
作者:
a827594998
时间:
2010-9-8 21:21
后续呀,楼主
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1