PDA

Просмотр полной версии : Мувик добавляет на сцену другой мувик


nitratus
22.01.2012, 00:20
Вбил в поиске "мувик", посмотрел 3 страницы результатов, нужного не нашел.
Как сделать чтобы мувик добавлял на основную сцену другой мувик?
Это класс гарб1, он должен добавлять на сцену гарб2.
package {

import flash.display.MovieClip;

public class garb1 extends MovieClip {
public function garb1 () {

this.graphics.beginFill(0);
this.graphics.drawRect(10, 20, 13, 14);

parent.addChild(new garb2());
}
}
}

В стейдже в первом кадре пишу: addChild (new garb1()); выдает ошибку Не удается вызвать свойство или метод со ссылкой на объект "null".
at garb1()
at _fla::MainTimeline/frame1()

Сам по себе гарб2 добавляется без проблем, и если в гарбе 1-ом убрать строчку, где он пытается добавить гарб 2, то гарб1 добавляется (рисуется черный квадратик)

Stitch512
22.01.2012, 00:26
parent.addChild(new garb2());
в конструкторе parent еще нет, он появится после addChild (new garb1());.
Это действие нужно делать по событию ADDED_TO_STAGE. А вообще, нехорошая конструкция, так делать некошерно.

nitratus
22.01.2012, 00:37
Спасибо, никогда бы не догадался!
А почему нехорошая? Как тогда делают?

СлаваRa
22.01.2012, 00:39
Вы бы лучше описали задачу\проблему, и вот тогда, может быть, Вам бы помогли прийти к верной реализации.

А почему нехорошая? Как тогда делают?
А почему у вас дети добавляют родителям детей?

Stitch512
22.01.2012, 00:48
addChild (new garb1());
addChild (new garb2());
Ну, хотя бы, почему вот так не зделать в кадре.
И соответственно parent.addChild(new garb2()); убрать из конструктора

nitratus
22.01.2012, 00:57
если у меня много штук габр1, и нужно добавлять габр 2 когда с габр1 что-то происходит, то удобнее отследить это событие изнутри габр1. Если добавлять габр2 из основного кода, то нужно будет постоянно обходить все габр1. А вдруг у меня появится ещё несколько штук габр1? Тогда нужно сделать обход похитрее.
Не говоря уже о том, что изнутри габр1 удобнее задать параметры для габр2

СлаваRa
22.01.2012, 01:05
а отправить событие из вашего "габр1" и по событию добавить "габр2" никак?

Stitch512
22.01.2012, 01:40
а почему тогда "габр2" не зделать чайлдом "габр1"

nitratus
22.01.2012, 02:05
Stitch512,
по тому что "гарб1" может удалится.

СлаваRa,
гарбов первых много, и в зависимости от параметров "родительского" гарба1 надо чтоб у гарба2 были какие-то соответствующие параметры. Я не знаю как вместе с событием передать все эти параметры, и по-моему в этом случае это чуть ли не извращение по сравнению с созданием гарба2 изнутри гарба1.

СлаваRa
22.01.2012, 15:03
и нужно добавлять габр2 когда с габр1 что-то происходит
и в зависимости от параметров "родительского" гарба1

если верна вторая цитата, то габр1 никак не влияет на "появление" габр2, за всех отвечает родительский класс

nitratus
22.01.2012, 19:17
Так что, мне нельзя добавить пару строчек для управления параметрами гарб2, или как?