本帖最后由 灯笼菜刀王 于 2023-8-10 20:33 编辑
用我十几年和甲方斗智斗勇的经验和半年来断断续续在论坛破译你的问题得到的 我自认为你想要的东西是 根据数组在地图上显示一排头像
现场写给你, 把它塞到main前
- class Spr_map_head < RPG::Spriet
- def initialize(ary,x,y,宽=640,间隔=0)
- super()
- self.bitmap = Bitmap.new(640,480)
- self.z = 180
- refresh(ary,x,y,横,间隔)
- end
- def refresh(ary,x,y,宽=640,间隔=0)
- self.bitmap.clear
- a,b = x,y
- for i in ary.flatten
- bit = RPG::Cache.picture("头像#{i}") ;w,h = bit.width,bit.height
- (b += h + 间隔 ; a = x) if a + w + 间隔 >= 宽
- self.bitmap.blt(a,b,bit,Rect.new(0,0,w,h))
- a += w + 间隔
- end
- end
- end
- class Interpreter
- def 显示头像(ary,x,y,宽=640,间隔=0)
- if @head_spr.nil?
- @head_spr = Spr_map_head.new(ary,x,y,宽,间隔)
- else
- @head_spr.refresh(ary,x,y,宽,间隔)
- end
- end
- def 关闭头像
- return if @head_spr.nil?
- @head_spr.dispose ;@head_spr.bitmap.dispose ; @head_spr = nil
- end
- end
复制代码
要调用就事件脚本里写 显示头像(你翻来覆去折腾的数组, x,y, 宽度, 间隔) x,y是第一个头像显示的位置, 后面的头像会根据这个位置自己从左到右排列过去, 宽度是要显示的总宽度,排列超过设置的宽度会自己换到第二行, 间隔就是头像之间要间隔几像素, 可以负数
要关闭头像就事件脚本里写 关闭头像
要刷新头像就重复调用 显示头像(你翻来覆去折腾的数组, x,y, 宽度, 间隔) 即可 |