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

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

06.06.2014, 23:43. Показов 833. Ответов 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,552
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,552
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,552
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
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru