2014-01-02 4 views
0

Я добавил прослушиватель событий в классе для объекта, который не находится в кадре 1, и он не работает. Есть ли способ заставить его работать?Слушатель событий в классе

Мой код:

package Home 
{ 

    import flash.display.SimpleButton; 
    import flash.events.MouseEvent; 


    public class Home extends SimpleButton 
    { 
     public var Home_mc:SimpleButton; 

     public function Home() 
     { 

      Home_mc.addEventListener(MouseEvent.CLICK, home_1); 
     } 

     function home_1(event:MouseEvent):void 
     { 
      //gotoAndStop('Home',"Home-sc"); 
      trace("CLICKED"); 
     } 
    } 
} 
+0

Это выглядит сумасшедшим, это ваш код на временной шкале или отдельный файл класса? 'package Home' вы уверены, что это тоже правильный пакет (обычно это не очень хорошая идея, чтобы пакет имел то же имя, что и класс, может запутаться). Является ли 'Home_mc' ресурсом библиотеки с именем класса экспорта' Home'? –

+0

As @R. Вандер Линден заявил, что вы не сделали экземпляр 'Home_mc':' Home_mc = new SimpleButton(); 'это то, что вы планировали делать? –

+0

Мой код находится в отдельном файле класса. Я новичок в AS3 извиняюсь за беспокойство. Я хочу знать, если 'var Home_mc: Simplebutton = new SimpleButton();' или Введите имя экземпляра, нажав на объект. Оба они одинаковы? – Chetan

ответ

0
public var Home_mc:SimpleButton; 

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

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

this.addEventListener(MouseEvent.CLICK, home_1); 

Edit для полноты:

можно связать класс as3 для символа кнопки

package 
{ 
    import flash.events.MouseEvent; 

    public class Home extends SimpleButton 
    { 
     public function Home() 
     { 
      // Add the event to instances of this class 
      this.addEventListener(MouseEvent.CLICK, home_1); 
     } 

     function home_1(event:MouseEvent):void 
     { 
      //gotoAndStop('Home',"Home-sc"); 
      trace("CLICKED"); 
     } 
    } 

} 

Затем вы можете сделать экземпляр класса из другого места и использовать AddChild на некотором DisplayObject ,

package 
{ 
    import flash.display.MovieClip; 
    public class start extends MovieClip 
    { 
     public function start() 
     { 
      var home:Home = new Home(); 
      this.addChild(home); 
     } 
    } 
} 

Мой код находится в отдельном файле класса. Я новичок в AS3 извиняюсь за беспокойство. Я хочу знать, если> 'var Home_mc: Simplebutton = new SimpleButton();' или Ввод имени экземпляра, щелкнув> на объекте. Оба они одно и то же?

Да, это в основном то же самое.

Теперь у меня появилось имя экземпляра «Home_mc» для кнопки «Домой». Загрузили файл класса в> it. Сейчас он работает нормально. Но когда я использую gotoAndStop() он дает мне ошибку, «Вызов к> возможно не определен метод gotoAndStop()»

Из того, что вы, кажется, пытаются добиться, я бы не использовать класс SimpleButton но продлить подвижный класс. Между ними существуют некоторые различия. Может быть, этот урок поможет вам немного: http://www.youtube.com/watch?v=Z0VhiqQVMpY

+0

»this.addEventListener (MouseEvent.CLICK, home_1); или "addEventListener (MouseEvent.CLICK, home_1);" они такие же, не так ли? Я связался с кнопкой «Домой», я использовал функцию отслеживания, она работает нормально. , но когда я использую gotoAndStop, он дает мне ошибку «Позвоните, возможно, с неопределенным методом». – Chetan

+0

первый вопрос: что должно работать. Подумайте, что это старая привычка писать «это». infront методов, которые являются базовыми. –

+0

Второй вопрос: gotoAndStop() - это метод movieclip. В вашем примере вы расширяетесь из класса simplebutton. Если вы хотите работать с разными кадрами и не нуждаетесь в свойствах, специфичных для класса SimpleButton, вместо этого вы можете наследовать от Movieclip. Если вы связали его с символом кнопки, вам нужно изменить этот символ на мувиклип. –

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