С Новым годом! Форум программистов, компьютерный форум, киберфорум
ActionScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
bus
34 / 34 / 3
Регистрация: 17.05.2014
Сообщений: 144

Послать один экземпляр события несколько раз

06.06.2014, 23:43. Показов 806. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Возможно диспатчить один инстенс несколько раз изменяя его свойства?
Я некогда этого не делал, но удивился, что решения не нашёл.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.06.2014, 23:43
Ответы с готовыми решениями:

Вывести числа, которые встречаются в массиве несколько раз / один раз
дан массив состоящий из 100 целых чисел. а)Вывести все числа,которие встречаются в етом массиве несколько раз б)Вывести все...

Ввести массив из 100 целых чисел, сначала вывести встречающиеся несколько раз, а затем те, что встречаются один раз
ввести массив из 100 целых чисел, сначала вывести встречающиеся несколько раз, а затем те, что встречаются один раз

Выполнение события только один раз
Всем привет using System; using System.Collections.Generic; using System.Linq; using System.Text; using...

12
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
07.06.2014, 00:29
bus, событие - это такой же объект, как и другие, ничто не мешает менять ему свойства (которые можно менять) и использовать этот объект (уже готовый) при диспатче.
1
 Аватар для alexandrratush
59 / 59 / 15
Регистрация: 06.05.2014
Сообщений: 206
07.06.2014, 00:33
bus, вы это имели ввиду?
ActionScript 3
1
2
3
4
5
6
7
8
var event:DataEvent = new DataEvent("ADD_CATEGORY", false, false, "Category1");
dispatchEvent(event);
            
event.data = "Category2";
dispatchEvent(event);
            
event.data = "Category3";
dispatchEvent(event);
1
bus
34 / 34 / 3
Регистрация: 17.05.2014
Сообщений: 144
07.06.2014, 01:08  [ТС]
Цитата Сообщение от alexandr_ratush Посмотреть сообщение
bus, вы это имели ввиду?
Нет, у Вас разные экземпляры, а мне нужно, что-то типа -
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package
{
    import flash.display.Sprite;
    import flash.events.Event;
    
    public class TestClass extends Sprite 
    {
        private var _dispatcher:TestEventDispatcher;
        
        public function TestClass() 
        {
            _dispatcher = new TestEventDispatcher();
            _dispatcher.addEventListener(TestEvent.TEST, dispatcher_testHandler);
            
            for (var i:int = 0; i < 10; i++) 
            {
                _dispatcher.update();
            }
        }
        
        private function dispatcher_testHandler(event:TestEvent):void 
        {
            trace(event.type);
        }
    }
}
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package 
{
    import TestEvent;
    import flash.events.EventDispatcher;
    import flash.events.IEventDispatcher;
    
    public class TestEventDispatcher extends EventDispatcher 
    {
        public static const EVENT:TestEvent = new TestEvent(TestEvent.TEST);
        
        public function TestEventDispatcher(target:flash.events.IEventDispatcher=null) 
        {
            super(target);
        }
        
        public function update():void
        {
            var event:TestEvent = TestEventDispatcher.EVENT;
            super.dispatchEvent(event);
        }
    }
}
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package
{
    import flash.events.Event;
    
    public class TestEvent extends Event 
    {
        public static const TEST:String = "test";
        public function TestEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false) 
        { 
            super(type, bubbles, cancelable);
            
        } 
        
        public override function clone():Event 
        { 
            return TestEventDispatcher.EVENT;
        } 
        
        public override function toString():String 
        { 
            return formatToString("TestEvent", "type", "bubbles", "cancelable", "eventPhase"); 
        }
    }
}
0
 Аватар для alexandrratush
59 / 59 / 15
Регистрация: 06.05.2014
Сообщений: 206
07.06.2014, 01:41
Нет, у Вас разные экземпляры, а мне нужно, что-то типа
Хм, вы ошибаетесь. У меня один инстанс Ивента, в котором я меняю свойство и опять отправляю его.
А какое свойство вы хотели менять в вашем ивент-объекте? Ваш класс TestEvent не имеет никакой пользы, так как у него нету уникального свойства, которое бы получали все подписчики.

Добавлено через 10 минут
Немного изменил ваш код, посмотрите может вы это искали?
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package
{
    import flash.display.Sprite;
    import flash.events.Event;
    
    public class TestClass extends Sprite 
    {
        private var _dispatcher:TestEventDispatcher;
        
        public function TestClass() 
        {
            _dispatcher = new TestEventDispatcher();
            _dispatcher.addEventListener(TestEvent.TEST, dispatcher_testHandler);
            
            for (var i:int = 0; i < 10; i++) 
            {
                _dispatcher.update(i.toString());
            }
        }
        
        private function dispatcher_testHandler(event:TestEvent):void 
        {
            trace(event.data);
        }
    }
}
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package 
{
    import TestEvent;
    import flash.events.EventDispatcher;
    import flash.events.IEventDispatcher;
    
    public class TestEventDispatcher extends EventDispatcher 
    {
        private var _event:TestEvent = new TestEvent(TestEvent.TEST, "");
        
        public function TestEventDispatcher(target:flash.events.IEventDispatcher=null) 
        {
            super(target);
        }
        
        public function update(value:String):void
        {
           _event.data = value;
            super.dispatchEvent(_event);
        }
    }
}
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package  {
    import flash.events.Event;
    
    public class TestEvent extends Event {
        
        public static const TEST:String = "test";
        
        private var _data:String;
        
        public function TestEvent(type:String, data:String, bubbles:Boolean=false, cancelable:Boolean=false) { 
            super(type, bubbles, cancelable);
            _data = data;
        } 
        
        public override function clone():Event { 
            return new TestEvent(type, data, bubbles, cancelable);
        } 
        
        public override function toString():String { 
            return formatToString("TestEvent", "data", "type", "bubbles", "cancelable", "eventPhase"); 
        }
        
        public function get data():String {
            return _data;
        }
        
        public function set data(value:String):void {
            _data = value;
        }
        
    }
    
}
1
bus
34 / 34 / 3
Регистрация: 17.05.2014
Сообщений: 144
07.06.2014, 01:55  [ТС]
А какое свойство вы хотели менять в вашем ивент-объекте? Ваш класс TestEvent не имеет никакой пользы
В данном примере свойства нет, но это только пример, демонстрирующий, что событие не отсылается.

Хм, вы ошибаетесь. У меня один инстанс Ивента, в котором я меняю свойство и опять отправляю его.
Это Вам так кажется! Вы создаете клон, проверьте сами.
0
 Аватар для alexandrratush
59 / 59 / 15
Регистрация: 06.05.2014
Сообщений: 206
07.06.2014, 11:14
В данном примере свойства нет, но это только пример, демонстрирующий, что событие не отсылается.
Не отправляется, потому что метод clone должен быть такого вида:
ActionScript 3
1
2
3
4
public override function clone():Event 
{ 
    return new TestEvent(type, bubbles, cancelable);
}
А что вы вообще хотите сделать с такой реализацией? Почему мой вариант не подходит? Сколько работаю, ни разу не требовалось использовать похожую схему как у вас.
1
bus
34 / 34 / 3
Регистрация: 17.05.2014
Сообщений: 144
07.06.2014, 11:50  [ТС]
А что вы вообще хотите сделать с такой реализацией?
Сделать хочу пул, а Ваша реализация не подходит, так-как Вы каждый раз новый объект TestEvent создаете.

Неужели события нельзя пересылать?

Добавлено через 21 минуту
Цитата Сообщение от alexandr_ratush Посмотреть сообщение
Не отправляется, потому что метод clone должен быть такого вида:
И я немного не так выразился, событие отправляется, но только один раз.

Добавлено через 3 минуты
Сначала думал, что плеер сохраняет ссылки на отправленные события, чтобы не допустить пересылки..
Но в таком случаи, он должен каждый кадр эти ссылки занулять, но на деле это не так. Возможно плеер имеет внутренний пул, который и не даёт использовать один и тот же объект на протяжении всей активности плеера?
0
 Аватар для alexandrratush
59 / 59 / 15
Регистрация: 06.05.2014
Сообщений: 206
07.06.2014, 11:59
И я немного не так выразился, событие отправляется, но только один раз.
Да, я видел что только один раз.
Если честно, то я в такие дебри еще не лез.
Да, а зачем вам пул событий? Что они слишком часто отправляются?
1
bus
34 / 34 / 3
Регистрация: 17.05.2014
Сообщений: 144
07.06.2014, 12:05  [ТС]
Цитата Сообщение от alexandr_ratush Посмотреть сообщение
Да, а зачем вам пул событий? Что они слишком часто отправляются?
Вы даже не представляете как...
Получается, что если нет способа переотправки событий, то после создания обсервера можно значительно прибавить производительности... Хотя, на уровне нативных классов, они сотнями за один кадр создаются...
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
07.06.2014, 23:36
Цитата Сообщение от bus Посмотреть сообщение
Вы даже не представляете как...
И что, вызов методом напрямую не решает проблему? Что за задача такая?
1
bus
34 / 34 / 3
Регистрация: 17.05.2014
Сообщений: 144
08.06.2014, 00:01  [ТС]
Цитата Сообщение от TanaTiX Посмотреть сообщение
Что за задача такая?
Я в свободное время люблю решать абстрактные задачи
И если была задача пул событий, то теперь буду потихоньку проверять, на сколько можно урвать
производительности без них.
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
08.06.2014, 00:07
Хорошо бы тогда сравнить с сигналами и колбэками

Не по теме:

ЗЫ. А если нужны абстрактные задачки, то это не проблема. От написания уроков в т.ч. для этого ресурса и до создания собственных библиотек, посвященных какой-либо проблеме. Тему придумать не сложно.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.06.2014, 00:07
Помогаю со студенческими работами здесь

Один обработчик события на несколько кнопок
Привет, такой вопрос, как сделать в unity, к примеру 16 кнопок, и поставить им одно событие клик. Если вопрос никто не понял :cry:, а так и...

Выполнение обработчика события один раз за определенное время
Здравствуйте! Подскажите, как сделать так, чтобы за определенный промежуток времени обработчик события выполнялся только один раз? Чтобы...

Один файл размножить несколько раз
Добрый день! 1 вопрос размножить один файл к примеру 00_Deti.xls столько раз (файлов) сколько их в поле2 т.е. 00 заменить на...

Вставить несколько строк за один раз VBA
Здравствуйте, Есть таблицы (условно уменьшила количество атрибутов, чтоб понятнее был вопрос) Магазин (id, name, color) ...

Писать несколько обработчиков для одного события или один обработчик, в котором вызывать методы?
Например есть событие Click. Для него автоматически создается обработчик button_Click (object sender, EventArgs e) Мне нужно...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru