![]() |
|
||||||||||
|
|||||
|
Регистрация: Jul 2007
Сообщений: 80
|
Делаю первую игру на ас3
(йа креветко, прошу простить за глупость моего измышления) Нужно обратиться к методу папы-мувиклипа, но что-то не получается... ![]() папа-клип: package {
import flash.display.MovieClip;
public class Menu extends MovieClip {
public function Menu() {
}
public function onPlay_menu():void {
trace("сына папу напрягает")
}
}
}
package {
import flash.display.MovieClip;
import flash.events.*;
public class Btn_play extends MovieClip {
public function Btn_play() {
addEventListener(MouseEvent.MOUSE_DOWN, onPressed);
}
private function onPressed(evt : Event):void {
parent.onPlay_menu(); //- вот оно!!!!!!!!!!!!!!!!
}
}
}
|
|
|||||
|
1) Menu(parent).onPlay_menu(); или parent["onPlay_menu"]();
2) выбираешь текст под маской и два раза жмешь ctrl+b 3) антиалайзинг только для внедряемых шрифтов
__________________
if (love is true) break my.heart; |
|
|||||
|
Регистрация: Jul 2007
Сообщений: 80
|
а без контрол+Б? по чему так только?
я вроде шрифт внедрял... или обьясните как ето сделать.. а чойто за конструкция такая КЛАСС(parent).метод() откуда взял такое исполнение, обьясните пожалуйста логику етого, тоесть понятно мы приводи к типу Маин, хотя как так? ведь етот класс не импортирован в нашем классе-сыне Последний раз редактировалось etc; 05.09.2008 в 00:03. |
|
|||||
|
1) Входящий параметр метода onPressed у вас не того типа. Там должно быть не Event, а кое что другое
Хелп в помощь2) parent.onPlay_menu(); С этой строкой компилятор будет ругаться. Можно заменить ее на parent["onPlay_menu"]() Либо в Publish Settings - > Settings убрать галку со Strict Mode |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
Вариант с кастом, приведенный во втором посте, в принципе, пойдёт. Только с оператором as, а не как написано. А вообще, ребенок не должен вызывать методы родителя, никаких «сына папу напрягает», необходимо написать новое событие и высылать его по окончании проигрывания. |
|
|||||
|
Регистрация: Jul 2007
Сообщений: 80
|
я прочитал все что только можно про диспатч(которым мне надо воспользоваться).. но пока мой ум ещё слаб... помогите, как правильно написать для моего кода диспатч?
что то не пойму как в одном классе можно поймать событие другого? вот класс события: class CustomDispatcher extends EventDispatcher {
public static var ACTION:String = "action";
public function doAction():void {
dispatchEvent(new Event(CustomDispatcher.ACTION));
}
}
пишу там: и как терь поймать это событие, если событие генерирует вложеный мувик, а поймать должен его контейнер мувик? |
|
|||||
|
Регистрация: Apr 2007
Сообщений: 1,369
|
__________________
john |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Ну например:
package {
import flash.display.MovieClip;
import flash.events.*;
public class Menu extends MovieClip {
public function Menu() {
super();
super.addEventListener(Event.COMPLETE, this.handler_complete);
}
private function handler_complete(event:Event):void {
trace("сына папу напрягает")
}
}
}
package {
import flash.display.MovieClip;
import flash.events.*;
public class PlayButton extends MovieClip {
public function PlayButton() {
super();
super.addEventListener(MouseEvent.MOUSE_DOWN, this.handler_mouseDown);
}
private function handler_mouseDown(event: Event):void {
super.dispatchEvent(new Event(Event.COMPLETE, true));
}
}
}
|
|
|||||
|
Регистрация: Jul 2007
Сообщений: 80
|
сработало... чудо, чудо... но над почитать что ето за супер() - пупер и как оно все так сработало...
а что ето за параметр второй в диспатче, для чего? super.dispatchEvent(new Event(Event.COMPLETE, true)); и как быть если бы все таки написал своё событие(CustomDispatcher), тот этот класс нужно было импортить куда: в Menu ? и в PlayButton ? и у меня в реальности может быть несколько вложеных клипов и каждый со временем передает вверх событие, поэтому нужно придумать разные эвенты, иначе самый верхний мувиклип сразу услышит самый нижний, а надо через определенное время средним клипом!!! Последний раз редактировалось tananuka; 05.09.2008 в 17:41. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
В оба класса.
А вообще, почитайте про событийную модель в ActionScript 3 при работе с DisplayObject-ами. Тогда и вопросов, что за true в конструкторе Event. super() — вызов конструктора супер-класса, он, конечно, в любом случае будет вызван, но опускать вызов — плохой тон. |
![]() |
![]() |
Часовой пояс GMT +4, время: 20:01. |
|
|
« Предыдущая тема | Следующая тема » |
|
|