ndiezel
24.04.2013, 01:39
Всем привет.
Неплохо знаю AS2, решил вот перейти наконец-то на AS3.
Способом перехода выбрал игрушку. Делаю её сейчас и утыкаюсь в непонимание того, как в AS3 всё устроено. Очень сильно отличается от AS2.
В общем, вопрос, скорее всего, банальный и глупый и сто раз обсуждался... Но в любом случае буду благодарен тем, кто поможет :)
Есть главный файл .fla
В нём кода вообще нет. Используется как библиотека мувиков. Класс у него, соответственно Main
В нём, уже идёт вывод главного меню:
var mm_mov:MmenuMov = new MmenuMov();
addChild(mm_mov);
MmenuMov - класс мувика, который содержит бекграунд меню. И добавляет на этот бекграунд уже кнопки.
Вот его код:
package
{
import flash.display.MovieClip;
import flash.events.Event;
import flash.display.Sprite;
import flash.events.MouseEvent;
public class MmenuMov extends MovieClip
{
public function MmenuMov()
{
var b_tutorial:Sprite = new mm_bg_planet(1);
addChild(b_tutorial);
b_tutorial.addEventListener(MouseEvent.CLICK,run_tutorial);
}
}
}
run_tutorial - функция, которая при нажатии на кнопку меню убирает с экрана мувик менюшки и открывает уровень туторила.
mm_bg_planet - класс спрайта, в котором находятся кнопки.
В нём прописывается расположение кнопок, их ширина, длина и т.д. В общем - к вопросу не относится.
Вопрос же в том, как правильно реализовать, чтоб при нажатии на кнопку - убирался с экрана мувиклип mm_mov?
Как одно из правил "правильного программирования" что ребёнок убивать родителя не должен - я уже принял (хоть так и не понял: почему?)
Но мне тогда в принципе не понятно как нужно писать код, чтоб ни родителя не убивать, ни "самого себя"?
Потому что если я, допустим, в MmenuMov пропишу функцию run_tutorial - то это будет самоубийство.
А если в Main, то тоже не правильно, да и я без понятия как туда засунуть EventListener для кнопки.
Как-то в AS3 мне вообще не понятно как передавать данные из одной функции в другую. В AS2 было просто - пишешь переменную за функцией - всё, она общая. А тут и указываешь: public, а всё равно - хрен к ней из другого класса обратишься.
Да даже переменные из одной функции в другую одного класса передать как-то не очень получается.
В общем - растолкуйте, люди добрые.
Буду очень благодарен.
Неплохо знаю AS2, решил вот перейти наконец-то на AS3.
Способом перехода выбрал игрушку. Делаю её сейчас и утыкаюсь в непонимание того, как в AS3 всё устроено. Очень сильно отличается от AS2.
В общем, вопрос, скорее всего, банальный и глупый и сто раз обсуждался... Но в любом случае буду благодарен тем, кто поможет :)
Есть главный файл .fla
В нём кода вообще нет. Используется как библиотека мувиков. Класс у него, соответственно Main
В нём, уже идёт вывод главного меню:
var mm_mov:MmenuMov = new MmenuMov();
addChild(mm_mov);
MmenuMov - класс мувика, который содержит бекграунд меню. И добавляет на этот бекграунд уже кнопки.
Вот его код:
package
{
import flash.display.MovieClip;
import flash.events.Event;
import flash.display.Sprite;
import flash.events.MouseEvent;
public class MmenuMov extends MovieClip
{
public function MmenuMov()
{
var b_tutorial:Sprite = new mm_bg_planet(1);
addChild(b_tutorial);
b_tutorial.addEventListener(MouseEvent.CLICK,run_tutorial);
}
}
}
run_tutorial - функция, которая при нажатии на кнопку меню убирает с экрана мувик менюшки и открывает уровень туторила.
mm_bg_planet - класс спрайта, в котором находятся кнопки.
В нём прописывается расположение кнопок, их ширина, длина и т.д. В общем - к вопросу не относится.
Вопрос же в том, как правильно реализовать, чтоб при нажатии на кнопку - убирался с экрана мувиклип mm_mov?
Как одно из правил "правильного программирования" что ребёнок убивать родителя не должен - я уже принял (хоть так и не понял: почему?)
Но мне тогда в принципе не понятно как нужно писать код, чтоб ни родителя не убивать, ни "самого себя"?
Потому что если я, допустим, в MmenuMov пропишу функцию run_tutorial - то это будет самоубийство.
А если в Main, то тоже не правильно, да и я без понятия как туда засунуть EventListener для кнопки.
Как-то в AS3 мне вообще не понятно как передавать данные из одной функции в другую. В AS2 было просто - пишешь переменную за функцией - всё, она общая. А тут и указываешь: public, а всё равно - хрен к ней из другого класса обратишься.
Да даже переменные из одной функции в другую одного класса передать как-то не очень получается.
В общем - растолкуйте, люди добрые.
Буду очень благодарен.