Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   вопрос по статическим методам и слушателям событий (http://www.flasher.ru/forum/showthread.php?t=211202)

tattori 12.07.2015 00:22

вопрос по статическим методам и слушателям событий
 
есть такая статическая функция в классе
Код AS1/AS2:

public static function addMovie()
                {
                Zona.addEventListener(MouseEvent.MOUSE_DOWN, downL);       
                }

обращение несуществующего свойства Zona, выдает такую ошибку, заметил что слушатели выдают ошибки если они в статических функциях, в чем тут дело объясните никак не разберусь

Zebestov 12.07.2015 03:20

Слушатель можно повесить лишь на экземпляр(!) наследника EventDispatcher. Значит на класс нельзя повесить слушатель никогда. Если таки очень надо вот так абстрагироваться, заводи синглтон (там есть пример реализации на AS3).

tattori 12.07.2015 13:39

не понял, почему на простую функцию вешаешь слушатель и работает нормально , а на статической не хочет?

undefined 12.07.2015 13:55

Возможно объект Zona еще не создан к моменту вызова статического метода.Собственно об этом и говорит RTE.
Да и почитайте про as3 naming conventions.Имена объектов принято писать с маленькой буквы, классов - с большой

udaaff 12.07.2015 13:59

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

Zebestov 12.07.2015 14:57

Цитата:

Сообщение от tattori (Сообщение 1184801)
не понял, почему на простую функцию вешаешь слушатель и работает нормально

На функцию? Это еще как?!

tattori 12.07.2015 15:04

Цитата:

Возможно объект Zona еще не создан к моменту вызова статического метода.Собственно об этом и говорит RTE.
он создан
Цитата:

Да и почитайте про as3 naming conventions.Имена объектов принято писать с маленькой буквы, классов - с большой
я пробовал менять название

Zebestov 12.07.2015 15:07

Тю! Так Zona — это объект?!
Ок. А объект этот — он экземпляр какого класса? Если этот класс свой, то от чего он наследуется?

tattori 12.07.2015 15:21

Цитата:

Тю! Так Zona — это объект?!
Ок. А объект этот — он экземпляр какого класса? Если этот класс свой, то от чего он наследуется?
вот класс объекта
Код AS3:

package  {
 
        import flash.display.MovieClip;
        import flash.events.MouseEvent;
 
        public class Level extends MovieClip
        {
 
 
                public function Level()
                {
 
                }// Конструктор
 
                private function downL(event:MouseEvent):void
                {
                        gotoAndStop(2);
                }
 
                public static function addMovie()
                {
                        Zona.addEventListener(MouseEvent.MOUSE_DOWN, downL);
                }
 
        }
}

внутри мувиклипа есть другой мувиклим с именем экземпляра Zona, и при нажатии Zona надо что бы был переход на следующий кадр, но так как на сцене много экземпляров Level то хотел вызвать один метод и что бы слушатели были у всех

Zebestov 12.07.2015 15:23

Я спрашивал про Zona — где оно определяется, где оно создается?


Часовой пояс GMT +4, время: 19:40.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.