Actionscript:类中的类

时间:2013-09-29 17:26:31

标签: actionscript-3 actionscript

我试图创建一个Flash游戏,但我的课程遇到了麻烦。我在主脚本上导入类。他们进口好了,我已经测试过了。但我不知道如何在另一个类中使用类

这是我到目前为止所得到的:

class Class.Player {
  public static var self:MovieClip;
  public static var bullet:Class.Bullet;

  function controls() {
    //Shoot
    if (Key.isDown(Key.SPACE)) {
      bullet = new Bullet(100, 100);
  }
}

它加载类并声明变量,但它声称"子弹"不是现有的方法。它是一个现有的方法,当我从主脚本调用它时它可以工作。

另外,我是否需要声明像public static var bullet:Class.Bullet;这样的类?这是对我有用的唯一方法,但想知道是否有更好的方式?

2 个答案:

答案 0 :(得分:1)

看起来你的课程命名有问题。您不必调用类Class.Name。只需使用名称。

在您的情况下,您可以拥有一个名为

的文件
Player.as

有了这个内容:

package {
    import flash.display.MovieClip;

    public class Player extends MovieClip {
        public private var bullet:Bullet;

        public function Player(){
            //constructor
        }

        function controls() {
            //Shoot
            if (Key.isDown(Key.SPACE)) {
                bullet = new Bullet(100, 100);
            }
        }
    }
}

然后是一个名为

的文件
Bullet.as

有了这个内容:

package {
    import flash.display.MovieClip;

    public class Bullet extends MovieClip {

        public function Bullet(x:Number, y:Number){
            //constructor
        }

    }
}

您可以在此处阅读有关创建和使用自定义类的更多信息:http://www.flashandmath.com/bridge/intro/class.html

答案 1 :(得分:0)

您将package information放在班级名称中。我不知道这对你来说是如何编译的(特别是考虑到Class是一个保留字。

您的文件应该更像:

package somePackage {//somePackage instead of the reserved word Class you were using

    import someOtherPackage.Bullet;

    public class Player extends MovieClip {
         public var bullet:Bullet;
         public function Player():void {
            super();
            //other constructor logic here
         }
    }

}