1

フラッシュ ゲームを作成しようとしていますが、クラスに問題があります。メインスクリプトにクラスをインポートしています。それらは大丈夫です、私はそれをすべてテストしました。しかし、別のクラス内でクラスを使用する方法がわかりません

これは私がこれまでに持っているものです:

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 が予約語であることを考えると.

ファイルは次のようになります。

使用していた予約語 Class の代わりに somePackage {//somePackage をパッケージ化します。

    someOtherPackage.Bullet をインポートします。

    public class Player extends MovieClip {
         public var bullet:Bullet;
         public function Player():void {
            素晴らしい();
            //その他のコンストラクター ロジックはこちら
         }
    }

}
于 2013-09-29T21:39:16.593 に答える