【问题标题】:AS3: Access class public var from inside fla fileAS3:从 fla 文件中访问类 public var
【发布时间】:2011-10-24 10:00:32
【问题描述】:

好的,首先,我到处搜索,但似乎每个答案都过于复杂或根本不起作用,我确信应该有一种更简单的方法来实现我的需要。

所以,直到今天,我一直在时间线内进行编码。但现在我意识到为什么我应该在单独的类文件中编码。但是,为了简单起见,我仍然想在时间线中包含代码的 sn-ps。

所以在我的 Ship 类中,我有这行代码:

    public var speed:int = 2 + Math.ceil(Math.random() * 4)

在我的时间线中,我有代码:

import Ship;
trace(Ship.speed)

我无法让轨迹显示速度。类文件可以完美地自行执行,但是当我尝试访问它的速度变量时(如上面的时间线所示),我得到了这个:

场景 1,“动作”层,第 1 帧,第 2 行 1119:通过静态类型 Class 的引用访问可能未定义的属性速度。

这是一个简单的问题,对此深表歉意,但谁能给我一个简单的方法来跟踪 Ship.as 类文件的速度?

提前致谢!

【问题讨论】:

    标签: flash actionscript-3 class


    【解决方案1】:

    您需要创建一个 Ship 实例,如下所示:

    import Ship;
    var ship:Ship = new Ship();
    trace(ship.speed);
    

    您可以将 speed 声明为 静态变量 以在不需要实例的情况下访问它(但我认为这里意义不大):

    public static var speed:int = 2;//or whatever
    

    要了解有关 AS3 中的静态变量和方法的更多信息,请查看此回复:Actionscript 3: Can someone explain to me the concept of static variables and methods?

    【讨论】:

    • 感谢快速编辑伙伴。静态变量的东西起作用了。我承认我还没有阅读您的链接,并且在我完成这个项目之前可能不会这样做。当我使用你的第一个代码时,我遇到了一些类型错误,但现在一切都很好。感谢您的快速回复:)
    • 这似乎是您的 Ship 类中的错误,在您的构造函数(Ship() 函数)的代码中。确保您正在使用的所有对象都已初始化。如果您需要帮助,请向我展示一些代码,但我的建议是尽量保持简单:注释掉除速度变量之外的所有内容,并确保您能够从时间轴访问它。然后,在构造函数中逐行取消注释,直到找到给您带来麻烦的原因。
    • 我应该在我的构造函数中初始化我的变量吗?我只是将它们放在船类中(公共类船扩展精灵等),但在我的构造器类之前,在它们自己的小标题下。
    • 听起来不错。我建议您尝试非静态定义。如果你再次开始收到 1009 错误,你就知道该去哪里问了 ;)
    【解决方案2】:

    在你的Ship 类中:

    public function get speed():int{
        return 2 + Math.ceil(Math.random() * 4);
    }
    

    在时间线上:

    import Ship;
    var ship:Ship = new Ship();
    trace(ship.speed);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-01
      • 2011-02-25
      相关资源
      最近更新 更多