2011-01-12 3 views
0

Я полный noob, чтобы вспыхнуть и знаю, что я просто пропустил что-то очевидное здесь.AS3 кнопки в movieclip

Я разработал свои экраны в качестве мувиклипа и имеет кнопки в каждом из мувиклипов, которые связывают экраны меню. Все работает отлично, используя временные рамки и фрагменты кода.

Теперь я пытаюсь сделать это в коде, у меня возникают некоторые проблемы:

package 
{ 
    import flash.display.MovieClip; 
    import flash.events.Event; 
    import flash.events.MouseEvent; 

    public class Main extends MovieClip { 

     public function Main() { 
      // define variable main as the movieclip main 
      var main = new Main_menu(); 
      var instructions = new instructions(); 
      //add the movieclip to the stage 
      addChild(main); 
      // Tell the button to run function on_play..... 
      Instructions_btn.addEventListener(MouseEvent.CLICK, on_play_button_clicked); 
     } 

     // what the button does 
     public function on_play_button_clicked(event:MouseEvent) { 
      addChild(instructions); 
     } 
    } 
} 

я могу получить муви клип Main для отображения и так ив добавил кнопки в мувиклип внутри вспышки они отображаются хорошо, и курсор меняется на значок пальца :-)

Что я не могу сработать, так это то, как получить кнопку с именем класса: instructions_btn, чтобы добавить экран: инструкции, когда я нажимаю на него.

Мертвый легко, возможно, но я вытаскиваю волосы!

+0

Откуда берутся Instructions_btn? – Ben

+0

его имя кнопки – paul

ответ

0

Вы используете одноименное имя для инструкций переменной экземпляра и для инструкций класса. Это, очевидно, не может работать. Придерживайтесь именования: Первая буква имени класса должна быть в верхнем регистре, что и имя экземпляра в нижнем регистре:

var instructions:Instructions = new Instructions(); 
addChild (instructions); 

Кроме того, вы объявляете инструкции в качестве локальной переменной внутри конструктора Main, но попробовать чтобы добавить его на сцену в обработчике событий - когда он больше не доступен. Если вы хотите, чтобы ваша переменная существовала вне области действия метода, объявите ее как член:

public class Main extends MovieClip { 
    private var instructions:Instructions; 

    public function Main() { 
     instructions = new Instructions(); 
     // ... 
    } 

    private function onPlayButtonClicked (ev:Event) : void { 
     addChild (instructions); 
    } 
} 
+0

Tnaks за ответ .. я все еще не могу заставить его работать, хотя .. ошибка: – paul

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