设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
楼主: 八云紫
打印 上一主题 下一主题

[RMVX发布] 新手教程--从0开始学RGSS2(2013-09-21 修复索引地址)

  [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
462 小时
注册时间
2007-7-30
帖子
643
1
发表于 2011-1-10 21:56:28 | 显示全部楼层
回复 八云紫 的帖子

Bitmap都还没解说@@
做个七彩霓虹灯的特效吧 (用Tone)
RGE这万年大坑 啥时填起来@@

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
462 小时
注册时间
2007-7-30
帖子
643
2
发表于 2011-1-10 23:41:39 | 显示全部楼层
本帖最后由 david50407 于 2011-1-10 23:52 编辑

Bitmap 位图

  这次换我来给各位解说了 恩。
  位图,简单来说就是图像,在画面上显示位图,必须使用精灵(Sprite 精灵类)之类的对象。
  当然我们的图像是要能够有多种变化的,所以Bitmap类提供了两种生成的方式:
  1. # 由文件载入并生成
  2. b = Bitmap.new(filename)
  3. # 生成新的位图
  4. b2 = Bitmap.new(width, height)
复制代码
喔,对了,生成位图之后是会保留在内存的,如果不需要的话要记得释放唷~
  1. # 释放位图
  2. b.dispose
  3. # 侦测已释放位图与否 当位图已释放则返回 true
  4. b.disposed?
复制代码


  说位图 MS 不大容易明白,把他想成是绘图板吧,所谓绘图板就是画画的地方,一个美好的园地(你扯过头了 喂!)
  做为一个绘图板,就要具备绘图的功能(这不是废话吗?)。在这里,RGSS2 已经准备好了一些绘图的方法了:
1)绘制矩形 fill_rect
  1. # 绘制矩形 将区域 (x, y, width, height) 填满指定颜色 color(Color 色彩类)
  2. b.fill_rect(x, y, width, height, color)
  3. # fill_rect 能吃 rect (Rect 矩形类) 的唷~
  4. b.fill_rect(rect, color)
复制代码
2)绘制渐层矩形 gradient_fill_rect
  1. # 绘制渐层 将区域 (x, y, width, height) 填满从颜色 color1(Color 色彩类)至 color2(Color 色彩类)的渐层色彩
  2. b.gradient_fill_rect(x, y, width, height, color1, color2)
  3. # 能加上 vertical 来设置是否为纵向渐层 (true 为纵向)
  4. b.gradient_fill_rect(x, y, width, height, color1, color2, vertical)
  5. # 当然也吃 rect (Rect 矩形类) 噜~
  6. b.gradient_fill_rect(rect, color1, color2)
  7. b.gradient_fill_rect(rect, color1, color2, vertical)
复制代码
3)绘制文字来了~~ draw_text (此处理需要花费时间,因此不建议每画格重绘一次文字。)
  1. # 绘制文字 在位图区域 (x, y, width, height) 或矩形 rect  (Rect 矩形类) 中描绘字符串 str 。
  2. b.draw_text(x, y, width, height, str)
  3. # 能加上 align (0:靠左对齐,1:居中对齐,2:靠右对齐) 来指定对齐方式
  4. b.draw_text(x, y, width, height, str, align)
  5. # 惯例... 吃 rect (Rect 矩形类)
  6. draw_text(rect, str)
  7. draw_text(rect, str, align)
复制代码
text_size 则能获取绘制文字时所需的矩形大小(不包含斜体倾斜的文字部分)
  1. # text_size 获取绘制文字 str (String 字符串) 所需矩形
  2. rect = b.text_size(str)
  3. # 合起来用就是
  4. b.draw_text(b.text_size(str), str)
  5. # 是不是方便多了呢?
复制代码
4)啊咧 涂错了怎办? clear 和 clear_rect 来帮你解决这个问题
  1. # clear 清除整个位图
  2. b.clear

  3. # clear_rect 清除位图区域 (x, y, width, height) 或矩形rect (Rect 矩形类)
  4. b.clear_rect(x, y, width, height)
  5. b.claer_rect(rect)
复制代码


  接下来是一些进阶应用:
1)绘制像素点 set_pixel
  1. # 绘制像素点 设定指定像素点 (x, y) 的色彩 color(Color 色彩类)。
  2. b.set_pixel(x, y, color)
复制代码
2)有繪製當然有獲取像素點的顏色 get_pixel
  1. # 获取指定像素点 (x, y) 的色彩(Color 色彩类)。
  2. b.get_pixel(x, y)
复制代码
3)不知道各位写报告的时候是不是也像我一样善用"拷贝 黏贴"呢?
  拷贝位图 blt
  1. # 拷贝位图 拷贝位图 src_bitmap 的矩形 src_rect 部分到指定的座标 (x, y)
  2. b.blt(x, y, src_bitmap, src_rect)
  3. # 能指定 opacity 透明度 (范围 0~255)
  4. b.blt(x, y, src_bitmap, src_rect, opacity)
复制代码
变形的拷贝 stretch_blt
  1. # 变形的拷贝 拷贝位图 src_bitmap 的矩形 src_rect 部分到指定的矩形中 dest_rect (可能导致变形)
  2. b.stretch_blt(dest_rect, src_bitmap, src_rect)
  3. b.stretch_blt(dest_rect, src_bitmap, src_rect, opacity)
复制代码
4)模糊 blur
  1. # 模糊 对位图执行模糊效果 此处理需要花费时间
  2. b.blur
复制代码
放射型模糊 radial_blur
  1. # 放射型模糊
  2. # angle 指定 0~360 的角度,角度愈大,效果愈圆润
  3. # division 指定 2~100 的分界数,分界数愈大,效果愈平滑 此处理需要花费大量时间
  4. b.radial_blur(angle, division)
复制代码
5)色相变换 hue_change 此处理需要花费时间,另外色彩转换的误差,反复转换可能会导致色彩损失。
  1. # 色相变换 在 360 度内变换位图的色相。
  2. b.hue_change(hue)
复制代码


  再来又是些基本的东西了...
  1. b.width #获取位图宽度
  2. b.height #获取位图高度
  3. b.rect # 获取位图矩形(Rect 矩形类)
  4. b.font # 指定或取得draw_text方法描绘字符串时所使用的字体。(Font 字型类)。
复制代码
虽然 Bitmap 看起来很复杂,却又是整个游戏中不可或缺的元素之一啊。
但是只要精熟这恼人的东西之后,就天不怕地不怕了唷~
(PS: 刚刚被 DZ 脑残到... 重新写 呜呜呜~~)

评分

参与人数 2星屑 +1610 收起 理由
一箭烂YiJL + 10 不过对于新手会难。
八云紫 + 1600 感觉 D酱 的精彩解说~~~ > <

查看全部评分

RGE这万年大坑 啥时填起来@@

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-13 18:36

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表