Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Композиция как оно лучше? (http://www.flasher.ru/forum/showthread.php?t=123931)

SunShadow 16.04.2009 08:24

Композиция как оно лучше?
 
Здравствуйте уважаемые.
Интересует такой вопрос:
Есть группа объектов которая в protected static хранит ссылку на некий класс созданный для выполнения ряда операций (назовем его "работяга"). Каждый объект хранится в своей fla. На сколько я понимаю после компиляции "работяга" должен присутствовать в каждой swf. Помнится когда в класс импортируется некий класс, то при компиляции осуществляется проверка на наличие используемых переменных и методов в коде. Если большинство объектов содержит "работягу" на сколько разумно все делать через композицию? Я так понимаю что для protected при компиляции в swf попадет только тот набор действий который используется в работяге для текущего объекта.
И так после компиляции каждый swf содержит своего "работягу". Но это подразумевает что при изменении механизма самого "работяги" надо каждый раз делать компиляцию всех объектов его использующих? Или static ссылка также хранит только вызываемые в этом объекте свойства и методы для "работяги", а значит перекомпилировать надо будет только те элементы которые пользуют конструктор "работяги"?

У меня сейчас проект в котором делаю некоторое подобие компонентов(знаю изобретение велосипеда, но собирая свой велосипед можно набить не одну шишку и набраться опыта). Все они работают с классом который отвечает за работу со свойствами этих компонентов. Если я буду в дальнейшем модифицировать своего работягу(добавлять новые методы, или оптимизировать существующие без модификации самого API) что придется каждый раз все компоненты перекомпилировать?

dimarik 16.04.2009 14:44

Если в applicationDomain содержится класс "работяга" и swf-ки грузятся в тот же applicationDomain, то при конфликте, класс в основном приложении не будет затерт вновь подгруженным. Следовательно, ссылка в компоненте на класс "работяга" укажет на класс в основном приложении.

Ответ. Перекомпиляция всех компонент не нужна. Еще бы сделать для "работяги" exclude class во всех компонентах.

Могу ошибаться, не пробовал.

SunShadow 16.04.2009 15:41

Цитата:

Сообщение от dimarik (Сообщение 813258)
Если в applicationDomain содержится класс "работяга" и swf-ки грузятся в тот же applicationDomain, то при конфликте, класс в основном приложении не будет затерт вновь подгруженным. Следовательно, ссылка в компоненте на класс "работяга" укажет на класс в основном приложении.

Да так оно и есть, из за этого при отладке больших проектов приходится компилить часто весь проект.

Цитата:

Сообщение от dimarik (Сообщение 813258)
Ответ. Перекомпиляция всех компонент не нужна. Еще бы сделать для "работяги" exclude class во всех компонентах.

Что такое exclude class?

dimarik 16.04.2009 15:54

Указание компилятору не вкомпиливать класс в swf|swc

BlooDHounD 16.04.2009 16:14

dimarik, это в АС2 он будет затёрт. в АС3 наоборот всё.

Добавлено через 2 минуты
по крайней мере у меня так. класс в родительской СВф не преписывается, а в дочерней берётся родительский.

dimarik 16.04.2009 16:30

Тогда в компонентах делать exclude и getDefinitionByName в конструкторе, чтобы инициализировать статик-свойство.

Кстати, зачем protected static? В ас3 вроде не наследуются статичные члены.

SunShadow 16.04.2009 16:30

Что такое exclude class?
Во Flash CS4 что то не попадалось такое на глаза. Фишка от Flex?
BlooDHounDчто то не очень врубился в ваш метод.

dimarik 16.04.2009 16:39

Цитата:

Сообщение от SunShadow (Сообщение 813308)
Что такое exclude class?
Во Flash CS4 что то не попадалось такое на глаза. Фишка от Flex?

Для ас2 такое было во FlashIDE (Learning ActionScript 2.0 in Adobe Flash -> Classes > About working with built-in classes > Excluding classes). Во флексе можно метатегом задать, или, если используется swc, то можно указать Link Type: External (в отличие от Merget into code). Поищите, может подобное есть для ас3 во FlashIDE.

BlooDHounD 16.04.2009 16:54

SunShadow, я никакого метода и не описывал.

Добавлено через 2 минуты
в АС3 можно делать так называемые External Library. они же exclude classes.
это swc, классы который не в компилируются в СВФ. вкопиливаются только сигнатуры.

SunShadow 16.04.2009 19:59

А вот теперь стало понятно)


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

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