|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Nov 2010
Сообщений: 9
|
Запутался с классами, не работает dispatchEvent
Привет все. Извините за длинное вступление. Просто постараюсь описать всю глубину пробелмы
Есть клас Game которому передается ссылка на stage public class Game extends Sprite { public var stageLink:Stage; public var gameLink:Game; public var main_menu_screen:MainMenu; public var level_select_screen:LevelSelect; public var game_screen:The_Game; public function Game(_stage:Stage):void { stageLink = _stage; gameLink = this; stageLink.addChild(gameLink); .... public function play_the_game(level) { game_screen = new The_Game(this,level); addChild(game_screen); } public function The_Game(passed_class:Game, level:int) { main_class = passed_class; main_stage = main_class.stageLink; //... тут добавляется на main_stage наш MovieClip level_map = new LevelMap(); level_map.gotoAndStop(level); addChild(level_map); //добавляю листенер level_map.addEventListener(floating_score.MY_EVENT2, showPopandos); //далее добавляем очки var new_floating_score:floating_score = new floating_score(this); ...... public class floating_score extends MovieClip { public var dir:Number = Math.random()*6.2831853; public var main_class1:The_Game; public var money:int; public static const MY_EVENT2:String = "MyEvent2"; public function floating_score(passed_class:The_Game) { main_class1 = passed_class; main_class1.dispatchEvent(new Event(MY_EVENT2)); ..... Но ничего такого не происходит. Помогите пожалуйста разобраться. Добавлено через 5 минут Изменил привязку листенера на такую Теперб функция showPopandos вызывается, но вот такой кусочек кода не срабатывает, пишет Ошибка типа Coercion: невозможно преобразовать The_Game@b6200b1 в floating_score Последний раз редактировалось gcolor; 09.11.2010 в 17:04. |
|
|||||
Регистрация: Nov 2010
Сообщений: 9
|
Но по идее e.target относится к классу floating_score.
|
|
|||||
Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
|
Напишите классы, а не куски, иерархия у вас какая то непонятная.
|
|
|||||
Регистрация: Nov 2010
Сообщений: 9
|
Сделал так как Вы написали - функция сработала, но опять
Ошибка типа Coercion: невозможно преобразовать The_Game@b6200b1 в floating_score |
|
|||||
То, что возвращает floating_score, должно быть типа floating_score
Добавлено через 1 минуту Написал и понял, что у вас там каша еще бОльшая, чем казалось. Назовите функции и классы по-разному. И вообще почитайте про правила именования
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! |
|
|||||
Регистрация: Nov 2010
Сообщений: 9
|
Класс floating_score не мой, взял его из статьи в блоге Emanuele Feronato.
Вот полный код класса package { import flash.display.MovieClip; import flash.display.Sprite; import flash.events.*; import flash.text.*; public class floating_score extends MovieClip { public var dir:Number = Math.random()*6.2831853; public var main_class1:The_Game; public var money:int; public static const MY_EVENT2:String = "MyEvent2"; public function floating_score(passed_class:The_Game) { money = Math.random() * 20; sctext.text = String(money); main_class1 = passed_class; main_class1.dispatchEvent(new Event(MY_EVENT2,true)); addEventListener(Event.ENTER_FRAME, on_enter_frame); } public function on_enter_frame(e:Event) { x += 1*Math.cos(dir); y += 1*Math.sin(dir); alpha -=0.01; if (alpha<=0) { removeEventListener(Event.ENTER_FRAME, on_enter_frame); main_class1.removescore(this); } } } } |
|
|||||
Регистрация: Nov 2010
Сообщений: 9
|
http://www.emanueleferonato.com/
Добавлено через 5 минут Вопрос решен. Тема закрыта. Всем большое спасибо. |
|
|||||
стервочка (я мужик)
|
это надо в мемориз. 5 балов вам за оригинальность и извращённость.
|
Часовой пояс GMT +4, время: 22:57. |
|
« Предыдущая тема | Следующая тема » |
|
|