Форум программистов, компьютерный форум, киберфорум
ActionScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/23: Рейтинг темы: голосов - 23, средняя оценка - 4.87
8 / 9 / 3
Регистрация: 18.11.2009
Сообщений: 676
AS 3.0

Обмен событиями между классами

06.06.2012, 18:52. Показов 4870. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
как с помощью dispatchevent послать событие из одного класса другому(адресату) весь нет перерыл внятно и понятно нигде нет(
поясните пожалауйста кто знает.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.06.2012, 18:52
Ответы с готовыми решениями:

Обмен даными между 2 классами
Есть класс HERO (модель героя) и есть класс Main_inventar (единый игровой инвентарь). Так вот, в классе инвентаря я сеттером привязываю...

Видимость объектов между классами
Есть 2 класса и мувиклип "pole" на сцене. К сцене привязан класс Main. постораясь конкретно описать проблемму вот классы : package {...

Работа со значением переменной между классами
Всем желаю здравствовать! Помогите мне пожалуйста ответом на такой скорее всего глупый вопрос. Облазил много форумом, спрашивал у разных...

18
Модератор
 Аватар для TanaTiX
2931 / 1790 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
06.06.2012, 18:55
Анарион, событие классу отправить нельзя, только его экземпляру.

ActionScript 3
1
youObject.dispatchEvent(new Event("youEventType"));
Можно еще реализовать всплывающие события: в этом случае объект события "всплывает" до stage-а и оно (событие) может быть "поймано" на любой глубине.
1
8 / 9 / 3
Регистрация: 18.11.2009
Сообщений: 676
06.06.2012, 19:04  [ТС]
ага. вот мы дошли до сути. то есть определенный класс может получить событие только если я явно укажу какому именно классу оно адресовано.
то есть если я создал скажем класс1 и класс2
то передать событие из класса два я могу только так:
класс1.dispatchEvent
а каким аппаратом мне тогда добится видимости в классе2 этого самого класса или создать его объявление или... вообще как?

Добавлено через 42 секунды
что значит "экземпляру"?
0
Модератор
 Аватар для TanaTiX
2931 / 1790 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
06.06.2012, 19:35
Цитата Сообщение от Анарион Посмотреть сообщение
только если я явно укажу какому именно классу оно адресовано
его экземпляру.
Есть сборник сочинений Ленина - пока из него не создали реальные книжки - он класс. Создали книжки - экземпляр класса.
ActionScript 3
1
var item:YouClass = new YouClass();
Вот так создается экземпляр item класса YouClass.
1
8 / 9 / 3
Регистрация: 18.11.2009
Сообщений: 676
06.06.2012, 19:40  [ТС]
я об этом уже думал.
если я в том классе ИЗ КОТОРОГО мне нужно отослать событие создам экземпляр того класса в котором нужно получить это событие- получит ли это же событие и тот, другой РЕАЛЬНЫЙ класс которому его нужно передать? который не в нутри этого а снаружи, на одном уровне.
А если получит - то все равно получается что у меня с какой то стати в другом классе пустой бесполезный экземпляр первого?!
0
Модератор
 Аватар для TanaTiX
2931 / 1790 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
06.06.2012, 20:54
У вас в голове каша, не понимаете основы. Вот, почитайте основы. Если останутся вопросы - всегда пожалуйста.

И немного по теме.
Можно событие диспатчить в нужный объект, а можно слушать нужный объект, куда диспатчат событие.
ActionScript 3
1
2
3
4
//Диспатчим
someObject.dispatchEvent...
//Слушаем
someObject.addEventListener...
1
8 / 9 / 3
Регистрация: 18.11.2009
Сообщений: 676
06.06.2012, 21:00  [ТС]
никакая не каша. классы разные.
мне нужно диспатчить в одном классе а слушать В ДРУГОМ.
в одном классе это то понятно.
есть скажем главный класс выполнения
он создает два экземпляра двух разных классов
класс1 и класс2
классу2 нужно что то сообщить классу1 как?

Добавлено через 3 минуты
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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("я услышал событие");
        }
    }
}
хочу слушать сдесь

ActionScript 3
1
2
3
4
5
var lnt:lentW=new lentW();
         
        public function leftArrayClick(e:MouseEvent):void
        {
        lnt.dispatchEvent(new Event("myCustomEvent"));
отправляю ИЗ ДРУГОГО КЛАССА - так.
0
Модератор
 Аватар для TanaTiX
2931 / 1790 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
06.06.2012, 21:55
Кроме того, что классы принято называть с большой буквы, а типы событий помещать в константы - все правильно.

Не по теме:

ЗЫ. и непосредственно в данном случае уместнее было бы воспользоваться прямым обращением к публичному методу

1
8 / 9 / 3
Регистрация: 18.11.2009
Сообщений: 676
06.06.2012, 22:50  [ТС]
все заработало я смотрел не на ту вкладку страницы. спасибо за помочщь!
один единсвтенный остался совершенно непонятный вопрос:
мы внутри объекта два создаем ПОЛНОЦЕННУЮ КОПИЮ объекта, ЖРУЩУЮ ПАМЯТЬ - только для того чтобы иметь возможность отправить диспатчер этому типу. Но это же явная демагогия!
я правильно понимаю ведь оператор new создает реальный экземпляр жрущий память - даже без добавления через addchild? со всей структурой, переменными?
и мы это делаем чтобы отправить событие такому же объекту который уже есть(
и еще хотел спросить давно волновало) с какого перепугу константа считается лучше такой же текстовой строки учитывая что набивать это одинаково долго. константу или такую же скажем текстовую строку?
0
Модератор
 Аватар для TanaTiX
2931 / 1790 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
06.06.2012, 23:40
Цитата Сообщение от Анарион Посмотреть сообщение
мы внутри объекта два создаем ПОЛНОЦЕННУЮ КОПИЮ объекта
Книжка "Бородино" Пушкина 1969г. выпуска является копией самого произведения? Нет. Вы создаете не копию класса, а его экземпляр.
Цитата Сообщение от Анарион Посмотреть сообщение
я правильно понимаю ведь оператор new создает реальный экземпляр жрущий память
Да

Цитата Сообщение от Анарион Посмотреть сообщение
даже без добавления через addchild? со всей структурой, переменными?
Да

Цитата Сообщение от Анарион Посмотреть сообщение
и мы это делаем чтобы отправить событие такому же объекту который уже есть(
Нет, ведь, если звезды зажигают - значит - это кому-нибудь нужно? Если мы создаем объект, то мы его где-то используем. Если мы собираемся помещать объект на сцену, то скорее всего мы создадим экземпляр класса Sprite или MovieClip. Как бы мы не хотели, поместить на сцену сам класс у нас не получится. Но если необходим класс, содержащий только (к примеру) данные о пользователи (ссылка на аватару, ФИО, год рождения, уровень в какой-то игре), то нет смысла создавать класс со всеми соответствующими полями, являющийся наследником Sprite или MovieClip. Мы скорее всего наследуемся от Object (на практике наследование от Object не указывается, т.к. это состояние по умолчанию).


Цитата Сообщение от Анарион Посмотреть сообщение
с какого перепугу константа считается лучше такой же текстовой строки учитывая что набивать это одинаково долго. константу или такую же скажем текстовую строку?
Автокомплит, меньше вероятность допустить ошибку, возможность вынести группу констант в один логический блок, благодаря чему их (константы) удобней найти и корректировать. Таким образом при использовании значения более одного раза мы выигрываем в скорости набора и уменьшаем вероятность ошибок.
0
8 / 9 / 3
Регистрация: 18.11.2009
Сообщений: 676
07.06.2012, 00:02  [ТС]
насчет класса у нас УЖЕ СОЗДАН и помещен на сцену класс1. а мы его создаем ЕЩЕ РАЗ(копию) внутри объекта два только для того чтобы отправить событие!!!

Добавлено через 14 минут
а если все же объявлять эти константы как это удобнее сделать? получится что придется объявлять два раза - в классе 1 и в классе 2
0
Модератор
 Аватар для TanaTiX
2931 / 1790 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
07.06.2012, 00:04
Анарион, еще раз создается экземпляр другого класса. Создавать объект только для обработки события - не правильно. Достаточно только вызвать нужный метод.

Может на примере?
Задача. Создать экземпляр класса с кнопкой. Каждый клик по копке увеличивает исходный счетчик на 1. Каждые 10 кликов объект шлет событие. При получении этого события на основной сцене рисуем квадрат размером 10*10.

Работы минут на 15 (в идеале). Но поможет понять суть объектов и событий.
0
8 / 9 / 3
Регистрация: 18.11.2009
Сообщений: 676
07.06.2012, 00:11  [ТС]
у меня в коде примере именно создается еще раз этот класс. если его не создать то он ВНУТРИ класса 2 НЕ ВИДЕН. а раз он не виден я не могу написать
класс1.dispatchevent
кстати а вы не знаете как вместе с событием можно передать какие либо данные?
0
Модератор
 Аватар для TanaTiX
2931 / 1790 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
07.06.2012, 00:14
Анарион, знаю, но давай по порядку. Вышеуказанная задача - это 2 класса. Пости код, разберем ошибки.
0
8 / 9 / 3
Регистрация: 18.11.2009
Сообщений: 676
07.06.2012, 00:15  [ТС]
еще раз создается экземпляр другого класса. Создавать объект только для обработки события - не правильно.
-----------
какого другого? у себя на примере я создавал экземпляр этого класса
0
Модератор
 Аватар для TanaTiX
2931 / 1790 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
07.06.2012, 01:43
Цитата Сообщение от Анарион Посмотреть сообщение
какого другого? у себя на примере я создавал экземпляр этого класса
В 99% случаев это лишено смысла и может привести к рекурсии и нарушению работы ФП, если не уметь пользоваться.

Не по теме:

Я как-то делал подобное для реализации отображения некоего дерева каталогов/файлов на основании структуры (JSON) - достаточно муторная штука вышла, хотя и не скажу, что слишком сложно. Получаемые данные парсились, на их основании строилась структура "папок"; если внутри содержались другие папки, которые соответствовали "папкам" - создавался экземпляр такого же класса, но в конструктор ему передавались уже другие значения (меньшие, чем у родителя). Самое сложное в этом было реализовать сворачивание/разворачивание/обновление структуры в завязке с небольшой синхронизацией с сервером.

0
8 / 9 / 3
Регистрация: 18.11.2009
Сообщений: 676
07.06.2012, 11:48  [ТС]
это то я понял. как надо сделать?
0
Модератор
 Аватар для TanaTiX
2931 / 1790 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
07.06.2012, 11:54
Цитата Сообщение от Анарион Посмотреть сообщение
как надо сделать?
Я не знаю какая конечная цель ваших попыток. В предложенной мной задаче в таком подходе нет необходимости. Может уже попробуете? За то время, что обсуждается проблема, можно было уже сделать свой вариант, обсудить ошибки, исправить их и начать реализовывать полученный опыт/знания в вашем проекте.
0
8 / 9 / 3
Регистрация: 18.11.2009
Сообщений: 676
07.06.2012, 11:58  [ТС]
извините но мне лень делать эту задачку учитывая что нюанс о котором я спрашиваю - это максимум абзац текста.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.06.2012, 11:58
Помогаю со студенческими работами здесь

Обмен данными между кадрами
В кадре 1 вводятся данные, в кадре 2 их нужно получить, отработать и вывести результат. Вопрос: как же это сделать? Ясным делом через...

Обмен событиями между потоками
Здравствуйте уважаемые форумчане CyberForum. Появилась надобность использовать несколько потоков в приложении. Для обмена данными между...

EventBus и обмен событиями между потоками
Допустим у меня есть один фоновый thread и второй. Могу ли я через eventBus послать event из первого потока второму для обработки? Если да...

Обмен между классами
Доброго времени суток, помогите вызвать круг из класса package StarRun; import java.awt.*; import javax.swing.*; import...

Обмен данными между классами
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru