2013-09-29 3 views
1

Я пытаюсь создать флеш-игру, но у меня проблемы с моими классами. Я импортирую классы в основной скрипт. они импортированы хорошо, я протестировал все это. но я не знаю, как использовать классы внутри другого классаActionscript: Классы внутри классов

это то, что я получил до сих пор:

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;? это единственный способ, который работает для меня, но задавался вопросом, есть ли лучший способ?

+0

Из кода вы пишете, класс пуля Безразлично» t, он называется Class.Bullet, поэтому он дает вам эту ошибку. Почему вы вызываете свои классы Class.Player, Class.Bullet? – Jan

ответ

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

0

Вы наложив свое package information во имя класса. Я понятия не имею, как это даже компиляцию для вас (особенно учитывая, что класс является зарезервированным словом

Ваших файлы должны выглядеть как:.

 
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 
     } 
    } 

}
Смежные вопросы