赞 | 0 |
VIP | 8 |
好人卡 | 27 |
积分 | 55 |
经验 | 41413 |
最后登录 | 2012-10-21 |
在线时间 | 833 小时 |
Lv4.逐梦者 弓箭手?剑兰
- 梦石
- 0
- 星屑
- 5524
- 在线时间
- 833 小时
- 注册时间
- 2010-11-17
- 帖子
- 1140
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 一箭烂YiJL 于 2011-4-25 17:20 编辑
若想从头学习的同学点此:
第一课、新手教程——基础(YiJL脚本请从此课开始)
课序号:6
作者:一箭烂YiJL
出版社:VX教程出版社
售价:完全免费
VX教程出版社的其它教程
上一课:
新手教程——细说数组与哈希
序:
这一课是提供两种用于Window和Scene参考的图案显示方法。
先著名,这课是理论与实战并存的课。
正式开始:
无语。
A.理论部分:
Scene:
- @Bitmap = Sprite.new # 先让ModelBitmap成为精灵类
- @Bitmap.bitmap = Bitmap.new("Graphics/Pictures/a.png") # 在这个精灵类加建bitmap,后边的是路径
- @Bitmap.x = 1 # X坐标
- @Bitmap.y = 1 # Y坐标
- @Bitmap.z = 99 # Z坐标
复制代码 先说明一下,bitmap位图类必须依靠Sprite精灵类显示。
注意:
Z坐标超过零时会覆盖地图。
超过或等于100时会覆盖一般的window。
所谓的z坐标就是面上和面下的覆盖坐标,立坐标。
记得要在terminate这函数里要有:@Bitmap.dispose
@Bitmap.dispose是消除当前创立的图片。
Window:
window则简单得多:
- # Rect是矩形类 X Y 宽 高
- rect = Rect.new(0, 0, 999, 999)
- bitmap = Cache.load_bitmap("Graphics/Pictures/", "图片名称")
- self.contents.blt(272, 156, bitmap, rect)
- # X Y 图案 上面创建的矩形类
复制代码 self.contents是window类已经建立的一个可显示bitmap。
矩形类是用于割出图片的矩形一部分,
所谓的XY是定点割切,详细资料看雪流星前辈的教程:
点此进入
总之XY为零,宽和高必须大于你图片的宽度和高度
Scene和Window的方法是不能混淆的。
B.实战:
相信也有些人会想在状态里除了大头像外还有半身图。
不多说了,请看下图:
上图有多重特效,主要说半身图。
做到出现半身图这种效果可以从window或者Scene下手脚,
不过window出来的效果会被window的框盖住,
场景效果则会盖过整个window。
window:Window_Status scene:Scene_Status
一、Window:
首先显示半身是要判定现在显示着的角色编号。
你会看到Window_Status的initialize有一个参数actor。
actor这个参数不是角色的编号,(应该是整个角色的资料)。
而我们需要判断的是actor.id,actor.id只是actor的其中一个变数。
总之在Window_Status里创建一个函数:
- def draw_actor_body(actor, x, y)
- rect = Rect.new(0, 0, 999, 999)
- if actor.id == 1
- bitmap = Cache.load_bitmap("Graphics/Pictures/", "半身图1")
- self.contents.blt(x, y, bitmap, rect)
- elsif actor.id == 2 # 如此类推
- bitmap = Cache.load_bitmap("Graphics/Pictures/", "半身图2")
- self.contents.blt(x, y, bitmap, rect)
- else # 为了防止人物没有半身图发生错误
- bitmap = Cache.load_bitmap("Graphics/Pictures/", "空白图的名称")
- self.contents.blt(x, y, bitmap, rect)
- end
- end
复制代码 然后在refresh这函数里加进:
- draw_actor_body(@actor, 272, 156)
- #draw_actor_body是调用"draw_actor_body"那个函数的句子,而上面则已经创建了这个函数。
复制代码 在这一课里我顺便要说一说参数。
参数是函数或类后边"()"括号里的数字,里面的数字可以是变量或数字(组)
调用时的例子:draw_actor_body(@actor, 272, 156)
接收的方法:def draw_actor_body(actor, x, y)
参数的接收是位置对位置,而这种方法的用途是:
让当前函数得到这些参数,成为本函数里可用的变量。(中心句)
接收后的参数会改变变量名字,就是从@actor, 272, 156变成actor, x, y这几个变量。
在函数里以新的名字应用。
看不明白上面的话请看下面的解说:
- model_function(50)
- def model_function(value)
- p value # => 50
- end
- # 最终得出窗口数目50
复制代码 再看看这一个:
- @vx = 35
- model_function(@vx)
- def model_function(abc)
- p abc # => 35
- end
- # 最终得出窗口数目35
复制代码 看完上面的两个例范明白了吗?
(不明白再看几次!)
window的最后,这样加进图片就能显示出来了。
二、Scene:
不说那么多,因为是用@status_window = Window_Status.new(@actor)
这方法让Window接收,那Scene的@actor就像等于Window的actor(这就是参数的原理。)
Scene Window
@actor = actor
@actor.id = actor.id
同样原理的方法,不过在start这函数里加进:
- @NewBitmap = Sprite.new
- if @actor.id == 1
- @NewBitmap.bitmap = Bitmap.new("Graphics/Pictures/半身图1.png")
- elsifs # 如此类推
- @NewBitmap.bitmap = Bitmap.new("Graphics/Pictures/半身图2.png")
- else
- @NewBitmap.bitmap = Bitmap.new("Graphics/Pictures/空白图.png")
- end
- @NewBitmap.x = 272
- @NewBitmap.y = 156
- @NewBitmap.z = 100
复制代码 不过有听过第一课的同学就会知道场景里会有update和diapose两个重点,
而因为Scene在离开时需要消除物件,同样的,@NewBitmap也需要消除,
我们要在terminate这函数里插入,terminate这函数是在场景结束时所做的动作,
在terminate里插进:
- @NewBitmap.dispose # 正式名字是释放
复制代码 至于不用update是因为图案没有需要用到update的地方。
最后完成了。
总结,我们学习了:
1.两种参考式的Window与Scene显示图案的方法。
2.bitmap类要靠Sprite类显示。
3.大概的了解参数应用。
好了,这节课上完了,谢谢大家。
下一课:
新手教程——简单测试法x2 |
评分
-
查看全部评分
|