Project1

标题: 内容透明度的问题 [打印本页]

作者: 菜鸟飞呀飞    时间: 2010-7-30 15:57
提示: 作者被禁止或删除 内容自动屏蔽
作者: htx1219    时间: 2010-7-30 16:27
搭车问怎么更改窗口透明度……
天干宝典乙卷里有个半透明显示窗口的……搞了N多行脚本的说……
于是我只是想把比如商店的窗口改成半透明。。。。
作者: 菜鸟飞呀飞    时间: 2010-7-30 16:29
提示: 作者被禁止或删除 内容自动屏蔽
作者: 后知后觉    时间: 2010-7-30 16:31
自己在窗口对象里内置个sprite对象用来描绘你需要局部透明的内容
作者: htx1219    时间: 2010-7-30 16:37
回复 菜鸟飞呀飞 的帖子
谢谢啦~我在发现shop也是有scene的……(这个表述为何如此别扭……)
于是在半透明菜单里加上,就可以了……


   
作者: htx1219    时间: 2010-7-30 16:38
回复 菜鸟飞呀飞 的帖子
谢谢啦~我发现shop是有scene的……(好别扭的表述)
然后加到半透明菜单的脚本里就可以了……
希望LZ的问题能够得到回答哈!
作者: 菜鸟飞呀飞    时间: 2010-7-30 16:43
提示: 作者被禁止或删除 内容自动屏蔽
作者: 后知后觉    时间: 2010-7-30 21:22
本帖最后由 后知后觉 于 2010-7-30 21:30 编辑

回复 菜鸟飞呀飞 的帖子
  1. class Window_HzhjStatus < Window_Base
  2.   attr_reader :sprite
  3.   def initialize
  4.     # 因为改变了窗口的 x= 和 y= 所以sprite和sprite.bitmap要在super前生成
  5.     # 不然会发生错误
  6.     @sprite = Sprite.new
  7.     @sprite.bitmap = Bitmap.new(96, 64)
  8.     super(80, 288, 544, 160)
  9.     self.contents = Bitmap.new(width - 32, height - 32)
  10.     # 修正sprite和窗口的一些关系
  11.     @sprite.x = self.x + self.width - @sprite.bitmap.width - 16
  12.     @sprite.y = self.y + 16
  13.     @sprite.z = self.z + 1
  14.     @sprite.opacity = self.contents_opacity
  15.     @sprite.visible = self.visible
  16.     refresh
  17.   end
  18.   def refresh
  19.     self.contents.clear
  20.     @sprite.bitmap.clear
  21.     self.contents.draw_text(0, 32, width-32, 32, "66RPG", 1)
  22.     @sprite.bitmap.draw_text(16, 16, 64, 32, "66rpg", 1)
  23.   end
  24.   def x=(value)
  25.     super(value)
  26.     @sprite.x = self.x + self.width - @sprite.bitmap.width - 16
  27.   end
  28.   def y=(value)
  29.     super(value)
  30.     @sprite.y = self.y + 16
  31.   end
  32.   def z=(value)
  33.     super(value)
  34.     @sprite.z = self.z + 1
  35.   end
  36.   def visible=(value)
  37.     super(value)
  38.     @sprite.visible = self.visible
  39.   end
  40.   def dispose
  41.     @sprite.bitmap.dispose
  42.     @sprite.dispose
  43.     super
  44.   end
  45.   def update
  46.     @sprite.update
  47.     super
  48.   end
  49.   def contents_opacity=(value)
  50.     super(value)
  51.     @sprite.opacity = self.contents_opacity
  52.   end
  53.   # 获取sprite的不透明度
  54.   def sprite_opacity
  55.     return @sprite.opacity
  56.   end
  57.   # 更改sprite的不透明度
  58.   def sprite_opacity=(value)
  59.     @sprite.opacity = value
  60.   end
  61. end
复制代码
sprite的bitmap大小和与窗口的位置关系就自己改吧...
对这个类的实例对象调用 sprite_opacity = xxx
可以改变sprite的opacity




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1