【问题标题】:global variables in AS3AS3 中的全局变量
【发布时间】:2010-12-11 01:44:20
【问题描述】:

好的,我希望能够从 Flash 文件或由该 Flash 文件加载的 Flash 文件中的任何位置访问某些变量。我该怎么做?我不知道什么是类,我不想学习什么是类,我不想导入任何东西,我只想能够从任何地方初始化和访问某些变量。

谢谢:)

【问题讨论】:

  • 正如古老的格言所说:“知识就是力量”。
  • 他们也说“无知是幸福”。真相可能在中间的某个地方。另外,由于我是在 Stackoverflow 上提问而不是阅读参考书,这可能意味着我现在需要一个快速的解决方案,而不是在两周内全面了解该主题。

标签: flash actionscript-3


【解决方案1】:

嗯,没有像 as2 中那样的 _global 了——而且由于您不想使用类,所以不能使用静态变量(如果您有兴趣,我可以解释这些)。所以你只能在根目录上使用变量。例如,您可以像这样在主时间轴上定义一个变量:

var myGlobal:Number = 100;

如果你想在其他地方访问它......也就是说,在其他movieClips的时间线上你需要说:

MovieClip(root).myGlobal;

如果您以前从未见过,这可能看起来很荒谬。基本上,我们将根投射到一个movieClip 以使我们能够访问它的动态属性。幸运的是,您可以设置它,这样您就不必一直编写 MovieClip(root):

// do this on any movieClip where you want to access globals
var global:MovieClip = MovieClip(root);

trace(global.myGlobal);

所以最后只需要多写一行代码就可以将功能恢复到它在 AS2 中的方式。

编辑

  1. 转到主时间线并将其添加到您的操作中:var myGlobal:Number = 100;
  2. 制作一个新的movieClip,确保它在舞台上
  3. 进入新的movieClip并将其添加到您的动作中:

    var global:MovieClip = MovieClip(root); 跟踪(global.myGlobal);

  4. 测试您的电影

【讨论】:

  • 对不起,我完全不明白。我要回到 AS2,在那里我可以做任何事情
  • 嘿。如果您告诉我您不明白的内容,我可以尝试解释。我将添加一个可能会清除问题的编辑。
  • 嗯,我不明白什么是“在任何影片剪辑上执行此操作”,如果我必须在一百个影片剪辑上执行任何操作怎么办?基本上页面上的每个按钮和每个项目都是一个movieClip,它们中的大多数都需要访问某些全局变量(如使用的语言、用户偏好等),所以我只是懒得在AS2中弄乱它就可以了.
  • 好的,几乎是一样的。您可以通过在任何您想要的地方使用 MovieClip(root).language 来使用完全相同的技术,您不需要在特定位置初始化语言变量......它的输入要多一点,但它会做与 _level0 相同的事情大部分。我建议将 MovieClip(root) 存储在一个变量中,以便更容易键入,但您不必这样做。大约需要一个月的时间来适应 as3 及其烦人的月份。但是一旦你得到它,它就值得了。
  • 好书。 Hello World 在第一章,所以你比那个投掷者 Colin Moock 早了 200 页。 :)
猜你喜欢
  • 2010-12-23
  • 2014-03-21
  • 2011-07-19
  • 1970-01-01
  • 1970-01-01
  • 2019-04-04
  • 2013-10-06
  • 2012-06-09
  • 1970-01-01
相关资源
最近更新 更多