PDA

Просмотр полной версии : обращение из разных пакетов as3 к друг другу


viktorami
06.06.2012, 14:32
пусть к примеру создан класс текстовая строка 1. это полноценный класс(package) и вот он был вызван во время выполнения и работает как и положено
Есть другой класс текстовая строка два. тоже полноценный класс был создан и работает.
Как "передать" волю(команду) одного такого класса другому?
вызвать функцию, передать параметр и так далее. как вообще обеспечить их взаимную видимость?

DaFive
06.06.2012, 14:45
Надо открыть книжку Колина Мука и прочитать её и перестать путать классы с пакетами.

viktorami
06.06.2012, 14:48
когда в builder создается новый класс as3 там есть слово:package
это имел ввиду
package
{
а так конечно классы, не целые пакеты.
интерисует дочерние от родительского классы в одном пакете

ChuwY
06.06.2012, 15:00
Используйте шаблон Посредник.

in4core
06.06.2012, 15:01
Надо открыть книжку Колина Мука и прочитать её и перестать путать классы с пакетами. А парень то дело говорит

пусть к примеру создан класс текстовая строка 1 face palm!
Бросайте плодить темы, почитайте книжку, хоть немного. Я сам с нее начинал переход с ас2 на ас3. Если будете много заниматься, вам достаточно первых глав об ООП, остальное можно не читать. Если занимаетесь мало, то читаем всю и пробуем свои примеры

viktorami
06.06.2012, 15:32
почитал нет - очень серьезная и непростая тема. я всегда(в предыдущих проектах) передвал экземпляр класса в другой при созданнии тогда он был доступен и там.
но это очень не удобно. прочитал что возможно как то через dispatchevent
но вот как?

ChuwY
06.06.2012, 15:35
прочитал что возможно как то через dispatchevent
но вот как?
Используйте шаблон Посредник.

А уведомлять посредник будете как раз с помощью EventDispatcher (http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/events/EventDispatcher.html).

morgenshtern
06.06.2012, 15:41
а потом сделанные вот такими "спецами" баннеры жрут в браузерах 90% моего коре и5 :Е

viktorami
06.06.2012, 15:44
спасибо. пример очень помог. а сам его до этого найти не мог!

Добавлено через 45 минут
и все же до конца не понял. у кого нибудь есть пример как с помощью dispatchevent из одного класса инициировать событие которое можно словить в другом?

Добавлено через 1 час 1 минуту
создал почти пустой класс. который потом добавляю в главном на страницу
package
{
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.*;
public class lentW extends Sprite
{
public function lentW()
{

addEventListener("myCustomEvent", myCustomEventListener);

}
function myCustomEventListener(event:Event):void
{
trace("внутри объекта стрицы");
}
}
}

потом из другого объекта в событии пишу такую строчку
dispatchEvent(new Event("myCustomEvent"));
событие слушателем не ловится. почему?
dispatchEvent(new Event("myCustomEvent"));

jony_e
06.06.2012, 20:21
слушатель нужно вешать на экземпляр класса того объекта в котором происходит диспатч события.
слушатель может не отрабатываться в том случае, если он был повешан после того, как это событие произошло.

expl
06.06.2012, 21:59
а потом сделанные вот такими "спецами" баннеры жрут в браузерах 90% моего коре и5 :Е
Баннеры жрут не из-за архитектуры обычно, а из-за графики. Например накладывают по нескольку фильтров, где можно обойтись одним или вообще не использовать.
Это только один пример - накосячить с графикой - путей уйма.
Пару раз удавалось в несколько раз снизить нагрузку анимации без изменения её внешнего вида.
Да и крутой баннер без кода вообще может жрать больше, чем вполне себе "астронавтически-заархитектуренная" социальная игра.

Тут метод борьбы только один и только со стороны баннеросети - не пропускать баннеры, жрущие больше XX% процессора, потому что заказчику и аниматору загрузка процессора фиолетова.
Всмысле заказчик всегда будет требовать добавить эффектов. А художник всегда будет делать, что просит заказчик.