设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1500|回复: 3
打印 上一主题 下一主题

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

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
32 小时
注册时间
2010-7-7
帖子
18
跳转到指定楼层
1
发表于 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还能用?

Lv1.梦旅人

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


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

使用道具 举报

Lv1.梦旅人

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

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

点评

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

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
217
在线时间
828 小时
注册时间
2010-6-22
帖子
120

开拓者

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

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-26 18:31

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表