1

我正在尝试创建一个 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);
  }
}

它加载类并声明变量,但它声称“Bullet”不是现有方法。这是一个现有的方法,当我从主脚本调用它时它就起作用了。

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

4

2 回答 2

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

于 2013-09-29T17:54:57.710 回答
0

您将包裹信息放在类名称中。我不知道这是如何为你编译的(特别是考虑到 Class 是一个保留字。

您的文件应该看起来更像:

package somePackage {//somePackage 而不是你使用的保留字 Class

    导入一些OtherPackage.Bullet;

    公共类播放器扩展电影剪辑{
         公共变量子弹:子弹;
         公共函数播放器():无效{
            极好的();
            //这里的其他构造函数逻辑
         }
    }

}
于 2013-09-29T21:39:16.593 回答