Project1

标题: 关于脚本的小问题 [打印本页]

作者: Zigzag    时间: 2012-1-25 16:24
标题: 关于脚本的小问题
脚本如下,为什么当在事件中输入$Sprite_Pause = 1 时,显示的图片没有透明?

  1.   def initialize
  2.     super
  3.     self.bitmap = RPG::Cache.windowskin("图片.png")  
  4.         self.x = 530
  5.         self.y = 380
  6. #self.y = 285  详细坐标在刷新里随对话框的位置变动
  7.     self.z = 19999 #z坐标
  8.     @count = 0
  9.     @wait_count = 0

  10.     update
  11.   end
  12.         case $Sprite_Pause
  13.       when 0
  14.         self.opacity = 0
  15.       when 1
  16.         self.opacity = 0
  17.       end
复制代码
dsu_plus_rewardpost_czw
作者: 认真的学    时间: 2012-1-25 16:38
是否忘记update
作者: Zigzag    时间: 2012-1-25 16:39
认真的学 发表于 2012-1-25 16:38
是否忘记update

这个只是选段而已,后面有UPDATE
  1.   def update
  2.     super
  3.     if @wait_count > 0
  4.       @wait_count -= 1
  5.     else
  6.       @count = (@count + 1)%10
  7. #这道公式的道理是 x = 每一帧的宽 * @count
  8.       x = 60*@count
  9. #规定图片规格(x坐标,y坐标,每一帧的宽,每一帧【也就是图片】的高)
  10.       self.src_rect.set(x, 0, 60, 60)
  11. #每一帧等待的帧数
  12.       @wait_count = 5
  13.        end
  14.       end
  15.      end
复制代码

作者: 认真的学    时间: 2012-1-25 16:41
本帖最后由 认真的学 于 2012-1-25 16:42 编辑

那么,
  1. case $Sprite_Pause
  2.       when 0
  3.         self.opacity = 0
  4.       when 1
  5.         self.opacity = 0
  6.       end
复制代码
写在哪个方法里?
或者在self.opacity = 0后加个update试一下
作者: 忧雪の伤    时间: 2012-1-25 16:48
本帖最后由 忧雪の伤 于 2012-1-25 16:49 编辑

case 部分请写在 update 方法中。
你这样的写法只会在初始化的时候执行一次。
作者: Zigzag    时间: 2012-1-25 16:49
认真的学 发表于 2012-1-25 16:41
那么,写在哪个方法里?
或者在self.opacity = 0后加个update试一下
  1. class Sprite_Pause < Sprite
  2.   def initialize
  3.     super
  4.     self.bitmap = RPG::Cache.windowskin("暂停标记.png")  
  5.         self.x = 530
  6.         self.y = 380
  7. #self.y = 285  详细坐标在刷新里随对话框的位置变动
  8.     self.z = 19999 #z坐标
  9.     @count = 0
  10.     @wait_count = 0
  11.     update
  12.   end
  13.         case $Sprite_Pause
  14.       when 0
  15.         self.opacity = 0
  16.         update
  17.       when 1
  18.         self.opacity = 0
  19.         update
  20.       end
  21. #刷新
  22.   def update
  23.     super
  24.     if @wait_count > 0
  25.       @wait_count -= 1
  26.     else
  27.       @count = (@count + 1)%10
  28. #这道公式的道理是 x = 每一帧的宽 * @count
  29.       x = 60*@count
  30. #规定图片规格(x坐标,y坐标,每一帧的宽,每一帧【也就是图片】的高)
  31.       self.src_rect.set(x, 0, 60, 60)
  32. #每一帧等待的帧数
  33.       @wait_count = 5
  34.        end
  35.       end
  36.      end
复制代码
加了还是不行啊= =
作者: 认真的学    时间: 2012-1-25 16:52
知道原因了= =因为问题脚本没有写在方法中,所以没有被执行。
可以新建一个方法将问题脚本放入该方法中后时时调用。或者将该段脚本放在update中
作者: 忧雪の伤    时间: 2012-1-25 16:53
本帖最后由 忧雪の伤 于 2012-1-25 16:55 编辑

eg:
  1. class Sprite_Base < ::Sprite
  2.   def update
  3.     super
  4.     self.opacity = $sprite_base_opacity
  5.   end
  6. end
  7. sprite = Sprite_Base.new
  8. p sprite.opacity
  9. $sprite_base_opacity = 0
  10. sprite.update
  11. p sprite.opacity
复制代码





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