Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Разработка проекта без Flash IDE (http://www.flasher.ru/forum/showthread.php?t=139940)

Anry_coolboy 15.05.2010 14:14

Разработка проекта без Flash IDE
 
Многие разабатывают проекты без использования Flash IDE, подключают SWC.
Таким способом на мой взгляд меняется сам подход к разработки.

Я еще пишу использую Flash IDE для компиляции, т.е. создал объект кинул его на stage в том месте где мне надо, прилинковал к ему класс, внутри него могу создать еще объект, прилинковать другой класс к нему, дать ему имя, и обращаться к нему из верхнего класса. Но мне не нравится постоянно бегать между FlashDevoper-ом и Flash IDE.

Я начал делать через SWC, и тут у меня сразу возникли проблемы.

Допустим я создал контейнер в котором находится N объектов, которые расположены по нужным координатам. Прицепил к этому контейнеру линк, к примеру Sky_back, и потом создал класс Sky который расширяется от Sky_back (Sky extends Sky_back)
Потом создаю этот объект и добавляю его на сцену.

Код AS3:

var  mcSky:Sky = new Sky();
addChild(mcSky);

Допустим внутри объетка mcSky находятся еще другие объекты, к примеру планеты, которые я тоже уже положил на сцену.

Я создаю базовый класс Planet и хочу что б все другие планеты расширялись от этого класса. К примеру класс Land extends Planet. И тут вопрос, как прицепить графику которая лежит в контейнере mcSky к классу Land.

И так что б в классе Sky я мог создать переменную mcLend с типом Land (var mcLend:Lend)

КорДум 15.05.2010 14:51

Лучше делать не так. Все объекты делаем клипами без вложенности. В главном классе создаем объект класса Sky. В его классе создаем объекты класса Land с публичными ссылками (если хотим обращаться к планетам из других мест). Удобная структура, на мой взгляд.
С другой стороны, если нужно сохранить вложенность, то обращение к объектам класса Land будет осуществляться вот так:
Код AS3:

mcSky.getChildByName("planet1");


Anry_coolboy 15.05.2010 15:03

Ну в таком случае мне надо сначала по создавать все объекты что будут на сцене, потом всем сделать addChild и расставлять по нужным координатам. Не очень удобно.

Так же, как связать планету с классом, если класс уже расширяется от другого.
Т.е. Sky extends Sky_back - тут все ясно, тут я линкую графику из swc к своему классу, но если Land extends Planet, то куда ж прилепить графику из swc файла?

Или же в flash ide надо прописывать полный путь к классу?

КорДум 15.05.2010 15:25

Что-то мне немного не понятна ваша ситуация. Созданный программно объект же наследует графику класса, от которого он расширяется.
Почему неудобно? По-моему очень даже удобно - все на коде, все видно, можно быстро подправить и перекомпилить. Только сначала расставляют по координатам, а потом помещают в отображение. Я не знаю, лучше ли так, но по логике объект сначала помещается в (0, 0), а потом перемещается в нужную точку. И это может быть заметно при тормозах.

Anry_coolboy 15.05.2010 15:36

Он наследует если мы в Flash IDE прописали полный путь к классу в linkage, я так понял при использовании swc, мы не прописываем полный путь, а просто даем любой линк, допусти Planet_img, а потом уже в своем классе, мы делаем Planet extends Planet_img. Или же можно использовать полный путь?

А на счет того что не удобно, ну мне проще все расставить в среде, по местам все пододвинуть, чем каждому объекту расставлять координаты...

КорДум 15.05.2010 15:42

Так, смотрите, я как-то уже поднимал такой вопрос: http://www.flasher.ru/forum/showthread.php?t=138290

nOobCrafter 15.05.2010 16:21

как писал тов. КорДум кидаешь все в свой мувик ручками, даешь всем кому надо инстансы, в классе этого окнтейнера делаешь геттеры которые отдают ссылки на эти мувики и все по идее.
[as]
Код AS3:

                private var _disableMc                        :Sprite;
..........
                        _disableMc = _cont.getChildByName("disableMc") as Sprite;
                        _disableMc.visible = false;
..........
                public function get disableMc():Sprite                { return _disableMc; }


fljot 16.05.2010 01:26

Это ж кем надо быть, чтобы накидывать кучи объетов вручную...

Anry_coolboy, http://www.flasher.ru/forum/showthre...938#post897938


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

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