赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 1 |
经验 | 38864 |
最后登录 | 2013-9-8 |
在线时间 | 238 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 238 小时
- 注册时间
- 2006-10-2
- 帖子
- 417
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
在写脚本的时候,有时会涉及到“左对齐”,“右对齐”或者“居中”的概念。这些东西看起来不起眼,实现起来还是需要思考一下的。
先用图来分析一下“左对齐”,“右对齐”和“居中”。
(我自己的概念。和RM在draw_text等内部的方法可能不一样。没有试验过。)
[左对齐]
[右对齐]
[居中]
在逐个描绘的时候,
左对齐的情况是最简单的,只要从原点不停地增加x坐标便能办到。
右对齐的情况下,从原点依次x坐标减去宽度,便能办到。
居中的情况比较复杂。分奇数和偶数两种情况。我是如下处理的:
在奇数个描绘对象时,先取出最中间一个对象,从原点处开始描绘。再将此对象之前的对象,从原点扩展一个宽度的距离后,全部用右对齐的方式描绘;之后的对象,从原点扩展一个宽度的距离后,全部以左对齐的方式描绘。
在偶数个描绘对象时,直接将对象分成前后两部分。前一部分,从原点缩进半个宽度的距离后,全部以右对齐的方式描绘;后一部分,从原点缩进半个宽度的距离后,全部以左对齐的方式描绘。
自用脚本一个。从神思的脚本http://rpg.blue/web/htm/news629.htm改来的脚本。不能直接使用(需配合素材)。但作对本文理解的一个参考,还是可以的。
- class Bitmap
-
- def draw_picnumber(x, y, nu,pic = RPG::Cache.picture("数字0"),k = 0)
- w = pic.width
- h = pic.height
- re = Rect.new(0,0,w,h)
- nu=nu.to_s
- ar = nu.split(//)
- for i in 0...ar.size
- ar[i] = ar[i].to_i
- end
- case k
- when 0
- x = x #左对齐
- for sz in ar
- shuzi = sz
- self.blt(x,y,pict = RPG::Cache.picture("数字"+shuzi.to_s),re)
- x+= w
- end
-
- when 2
- x += w*(1 - ar.size) #右对齐
- for sz in ar
- shuzi = sz
- self.blt(x,y,pict = RPG::Cache.picture("数字"+shuzi.to_s),re)
- x+= w
- end
-
- when 1 #居中
- pf = ar.size
- nn = (-1)**pf
- ar1 =[]
- ar2 =[]
- if nn == 1 #偶数
- mi = ar.size/2 #2
- for i in 0..(mi - 1) #0,1
- ar1.push(ar[i])
- end
- for i in mi..(ar.size-1) #2,3
- ar2.push(ar[i])
- end
- #开始描绘
- x1 = x -(w/2) #left
- x1 -= w*(ar1.size)
- for sz1 in ar1
- shuzi = sz1
- self.blt(x1,y,pict = RPG::Cache.picture("数字"+shuzi.to_s),re)
- x1+= w
- end
-
- x2 = x -(w/2)#right
- for sz2 in ar2
- shuzi = sz2
- self.blt(x2,y,pict = RPG::Cache.picture("数字"+shuzi.to_s),re)
- x2+= w
- end
-
- else #奇数
- mi = (ar.size-1)/2 #2
- for i in 0..(mi - 1) #0,1
- ar1.push(ar[i])
- end
- for i in (mi+1)..(ar.size-1) #3,4
- ar2.push(ar[i])
- end
- #开始描绘
- shuzi = ar[mi]
- self.blt(x,y,pict = RPG::Cache.picture("数字"+shuzi.to_s),re)
-
- x1 = x #left
- x1 -= w*(ar1.size)
- for sz1 in ar1
- shuzi = sz1
- self.blt(x1,y,pict = RPG::Cache.picture("数字"+shuzi.to_s),re)
- x1+= w
- end
-
- x2 = x +w #right
- for sz2 in ar2
- shuzi = sz2
- self.blt(x2,y,pict = RPG::Cache.picture("数字"+shuzi.to_s),re)
- x2+= w
- end
- end
- end
- end
- end
复制代码 |
|