查看: 1684|回复: 3

[已经解决] 变量作用域的问题

[复制链接]
梦石
0
星屑
50
在线时间
32 小时
注册时间
2010-7-7
回帖
13
发表于 2012-7-12 17:36:01 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 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还能用?
梦石
0
星屑
242
在线时间
830 小时
注册时间
2010-6-22
回帖
109

开拓者

发表于 2012-7-12 18:11:20 | 显示全部楼层
變量時前面有"@"的指區域變量,區域變量是在一個類別內都可以呼叫的變量。
而全域變量的前面有"$",全域變量是不分類別都可以呼叫的變量。
回复

使用道具 举报

梦石
0
星屑
50
在线时间
32 小时
注册时间
2010-7-7
回帖
13
 楼主| 发表于 2012-7-12 22:18:16 | 显示全部楼层
f26401004 发表于 2012-7-12 18:11
變量時前面有"@"的指區域變量,區域變量是在一個類別內都可以呼叫的變量。
而全域變量的前面有"$",全域變 ...

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

点评

就是這個意思  发表于 2012-7-13 12:58
回复

使用道具 举报

梦石
0
星屑
55
在线时间
295 小时
注册时间
2008-5-24
回帖
469
发表于 2012-7-12 23:41:25 | 显示全部楼层
以“@”开头的变量就是实变量,属于特定的对象。实变量可以在其类或子类的方法中引用。引用尚未初始化的实变量其值为 nil。


来自F1
前方
迷茫
后方
已不在
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部