赞 | 274 |
VIP | 0 |
好人卡 | 3 |
积分 | 496 |
经验 | 40966 |
最后登录 | 2024-9-22 |
在线时间 | 1920 小时 |
Lv5.捕梦者
- 梦石
- 10
- 星屑
- 39592
- 在线时间
- 1920 小时
- 注册时间
- 2010-11-14
- 帖子
- 3320
|
7楼
楼主 |
发表于 2019-3-17 12:41:07
|
只看该作者
本帖最后由 KB.Driver 于 2019-3-17 12:50 编辑
好了,这样一来分界线就被遮住了。
然而,一道黑线在中线也不是特别美观,如果是往两边渐变的黑色,视觉效果可能更好。
我们找到F1文档中的gradient_fill_rect方法,它与fill_rect类似,只不过需要我们设置两种颜色以便产生渐变。
我们设置渐变的颜色分别为纯黑Color.new(0,0,0)与透明Color.new,修改之前的代码。
...
# 盖住中间的交界线
color = Color.new(0,0,0) # 纯黑
color1 = Color.new # 透明色
gradient_width = 20 # 渐变的单边宽度
rect = Rect.new(blt_rect.width - gradient_width, 0, gradient_width, blt_rect.height) # 左半边渐变的矩形
back_bitmap.gradient_fill_rect(rect, color1, color) # 左半边渐变是由透明到纯黑
rect.x += gradient_width # 调整起始x坐标,变为右半边渐变的矩形
back_bitmap.gradient_fill_rect(rect, color, color1) # 右半边渐变是由纯黑到透明
back_bitmap.fill_rect(blt_rect.width - 1, 0, 3, blt_rect.height, color)
back_sprite.bitmap = back_bitmap
# 女英雄精灵
...
运行结果:
咦,不应该是渐变吗?为什么是纯黑的呢?
大家还记得上一课我们一开始显示男神的时候吗,游戏的背景本来就是全黑的.
因此当我们给背景涂上哪怕是透明度很低的黑色,它与背景的黑色一结合就成了纯黑。
这时候,我们就需要增加一个新的精灵来承载这段渐变了,否则背景本身就会被破坏掉。
修改代码:
# 复制位图
back_bitmap.blt(0, 0, back_bitmap2, blt_rect)
# 盖住中间的交界线
#color = Color.new(0,0,0) # 纯黑
#color1 = Color.new # 透明
#gradient_width = 20 # 渐变的单边宽度
#rect = Rect.new(blt_rect.width - gradient_width, 0, gradient_width, blt_rect.height) # 左半边渐变的矩形
#back_bitmap.gradient_fill_rect(rect, color1, color) # 左半边渐变是由透明到纯黑
#rect.x += gradient_width # 调整起始x坐标,变为右半边渐变的矩形
#back_bitmap.gradient_fill_rect(rect, color, color1) # 右半边渐变是由纯黑到透明
# back_bitmap.fill_rect(blt_rect.width - 1, 0, 3, blt_rect.height, color)
back_sprite.bitmap = back_bitmap
# 黑色渐变精灵
gradient_sprite = Sprite.new
# 盖住中间的交界线
color = Color.new(0,0,0) # 纯黑
color1 = Color.new # 透明
gradient_width = 20 # 渐变的单边宽度
gradient_bitmap = Bitmap.new(gradient_width * 2, blt_rect.height)
rect = gradient_bitmap.rect
rect.width /= 2
gradient_bitmap.gradient_fill_rect(rect, color1, color) # 左半边渐变是由透明到纯黑
rect.x += rect.width
gradient_bitmap.gradient_fill_rect(rect, color, color1) # 右半边渐变是由纯黑到透明
gradient_sprite.bitmap = gradient_bitmap
gradient_sprite.x = blt_rect.width - gradient_width
# 女英雄精灵
...
|
|