| 
 
| 赞 | 0 |  
| VIP | 8 |  
| 好人卡 | 27 |  
| 积分 | 65 |  
| 经验 | 41413 |  
| 最后登录 | 2012-10-21 |  
| 在线时间 | 833 小时 |  
 Lv4.逐梦者 弓箭手?剑兰 
	梦石0 星屑6539 在线时间833 小时注册时间2010-11-17帖子1140 | 
| 
本帖最后由 一箭烂YiJL 于 2011-4-25 17:20 编辑
x
加入我们,或者,欢迎回来。您需要 登录 才可以下载或查看,没有帐号?注册会员  
 若想从头学习的同学点此:
 第一课、新手教程——基础(YiJL脚本请从此课开始)
 
 课序号:6
 作者:一箭烂YiJL
 出版社:VX教程出版社
 售价:完全免费
 VX教程出版社的其它教程
 
 
 上一课:
 新手教程——细说数组与哈希
 
 
 序:
 这一课是提供两种用于Window和Scene参考的图案显示方法。
 先著名,这课是理论与实战并存的课。
 
 
 正式开始:
 无语。
 
 
 A.理论部分:
 
 Scene:
 先说明一下,bitmap位图类必须依靠Sprite精灵类显示。复制代码
@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坐标
注意:
 Z坐标超过零时会覆盖地图。
 超过或等于100时会覆盖一般的window。
 所谓的z坐标就是面上和面下的覆盖坐标,立坐标。
 记得要在terminate这函数里要有:@Bitmap.dispose
 @Bitmap.dispose是消除当前创立的图片。
 
 
 Window:
 window则简单得多:
 self.contents是window类已经建立的一个可显示bitmap。复制代码
# 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    图案    上面创建的矩形类
矩形类是用于割出图片的矩形一部分,
 所谓的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里创建一个函数:
 然后在refresh这函数里加进:复制代码
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
在这一课里我顺便要说一说参数。复制代码
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这函数里加进:
 不过有听过第一课的同学就会知道场景里会有update和diapose两个重点,复制代码
@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
而因为Scene在离开时需要消除物件,同样的,@NewBitmap也需要消除,
 我们要在terminate这函数里插入,terminate这函数是在场景结束时所做的动作,
 在terminate里插进:
 至于不用update是因为图案没有需要用到update的地方。复制代码
@NewBitmap.dispose  # 正式名字是释放
最后完成了。
 
 总结,我们学习了:
 1.两种参考式的Window与Scene显示图案的方法。
 2.bitmap类要靠Sprite类显示。
 3.大概的了解参数应用。
 
 
 
 好了,这节课上完了,谢谢大家。
 
 下一课:
 新手教程——简单测试法x2
 | 
 评分
查看全部评分
 |