Project1

标题: 变量作用域的问题 [打印本页]

作者: okasssss    时间: 2012-7-12 17:36
标题: 变量作用域的问题
本帖最后由 okasssss 于 2012-7-12 17:37 编辑


在天干宝典的面看到的脚本

  1. class Window_1 < Window_Base
  2. #BLOCK 1
  3. def initialize
  4. super(0, 0, 640,100)
  5. self.contents = Bitmap.new(width-32, height-32)
  6. self.contents.font.name = "黑体"
  7. self.contents.font.size = 20
  8. refresh
  9. end
  10. #BLOCK 2
  11. def refresh
  12. self.contents.clear
  13. self.contents.font.color = text_color(6)
  14. self.contents.draw_text(0, 0, 100, 32, "游戏时间:")
  15. #显示游戏时间 (从 Window_PlayTime中Copy来)
  16. @total_sec = Graphics.frame_count / Graphics.frame_rate
  17. hour = @total_sec / 60 / 60
  18. min = @total_sec / 60 % 60
  19. sec = @total_sec % 60
  20. text = sprintf("%02d:%02d:%02d", hour, min, sec)
  21. self.contents.font.color = normal_color
  22. self.contents.draw_text(100, 0, 120, 32, text)
  23. # 结束显示游戏时间的编码
  24. #BLOCK 3
  25. self.contents.font.color = text_color(6)
  26. self.contents.draw_text(250, 0, 50, 32, "金钱:")
  27. self.contents.font.color = text_color(0)
  28. self.contents.draw_text(305, 0, 100, 32, $game_party.gold.to_s)
  29. #BLOCK 4
  30. self.contents.font.color = text_color(6)
  31. self.contents.draw_text(400, 0, 100, 32, "地图 ID:")
  32. self.contents.font.color = text_color(0)
  33. self.contents.draw_text(480, 0, 100, 32, $game_map.map_id.to_s)
  34. end
  35. #BLOCK 5
  36. def update
  37. if Graphics.frame_count / Graphics.frame_rate != @total_sec
  38. refresh
  39. end
  40. end
复制代码
有问题的地方是弟16和37行,在定义refresh函数中,产生了一个@total_sec变量,在update函数中又用到了它,这个@total_sec变量的作用域不是refresh吗?为什么在update还能用?dsu_plus_rewardpost_czw
作者: f26401004    时间: 2012-7-12 18:11
變量時前面有"@"的指區域變量,區域變量是在一個類別內都可以呼叫的變量。
而全域變量的前面有"$",全域變量是不分類別都可以呼叫的變量。
作者: okasssss    时间: 2012-7-12 22:18
f26401004 发表于 2012-7-12 18:11
變量時前面有"@"的指區域變量,區域變量是在一個類別內都可以呼叫的變量。
而全域變量的前面有"$",全域變 ...

也就是说在一个类里面局部变量是可以通用的,而不是只在函数内用?

作者: 龙腾天下    时间: 2012-7-12 23:41
以“@”开头的变量就是实变量,属于特定的对象。实变量可以在其类或子类的方法中引用。引用尚未初始化的实变量其值为 nil。


来自F1




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