Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.12.2009, 17:32
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 1  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
По умолчанию event.handled - Неужели в AS3 это тоже есть + не контролируется?

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

Т.е. чтобы уточнить:
Код AS3:
package org.wvxvws.gui.repeaters 
{
	import flash.events.Event;
 
	/**
	 * RepeaterEvent event.
	 * @author wvxvw
	 */
	public class RepeaterEvent extends Event 
	{
		public static const REPEAT:String = "repeat";
 
		public function get index():int { return _repeater.index; }
 
		public function get currentItem():Object { return _repeater.currentItem; }
 
		private var _repeater:IRepeater;
 
		public function RepeaterEvent(type:String, repeater:IRepeater) 
		{ 
			super(type);
			_repeater = repeater;
		} 
 
		public override function clone():Event { return this; } 
 
		public override function toString():String 
		{ 
			return formatToString("RepeaterEvent", "type", "index", "currentItem"); 
		}
	}
}
Как можно понять, событие все рано не имеет никаких "личных" свойств, и клонировать мне его совсем не надо, но, очевидно, что после одного использования этого события оно становится больше не пригодным...

UPD: http://bugs.adobe.com/jira/browse/FP-3456
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 13.12.2009 в 20:58.
Старый 14.12.2009, 12:13
ir73 вне форума Посмотреть профиль Отправить личное сообщение для ir73 Найти все сообщения от ir73
  № 2  
Ответить с цитированием
ir73
FD Team

блогер
Регистрация: Dec 2005
Сообщений: 365
Записей в блоге: 6
попробуй
Код AS3:
public override function clone():Event { 
return new RepeaterEvent(type, _repeater); 
}

Старый 14.12.2009, 13:52
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 3  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
зачем создавать их пачками?
Ну ты ведь знаешь, что в ас все реализации максимально универсальны)) а значит в каждом конкретном случае несколько избыточны. Может, ты и не предполагаешь у себя ИЗМЕНЕНИЕ события в цепочке получателей, но такая возможность есть. Событие может быть изменено и даже отменено, и в твоем варианте псевдоклонирования это все произойдет с одним и тем же объектом, что полностью лишает его смысла. Для того и нужно клонирование, чтобы каждый раз диспатчить свеженькое нулевое событие с заданными параметрами, а старое пошарканное - в топку.
__________________
Reality.getBounds(this);

Старый 14.12.2009, 14:15
iflamberg вне форума Посмотреть профиль Отправить личное сообщение для iflamberg Найти все сообщения от iflamberg
  № 4  
Ответить с цитированием
iflamberg
 
Аватар для iflamberg

Регистрация: Jan 2009
Сообщений: 1,651
2ir73: ты здесь как раз таки тупо плодишь событие.

2wvxvw: ну собственно, все мы знаем, что флеш далеко не идеален, правда ведь? Это вопрос из серии: "а почему нельзя повторно использовать Sound?" - никто на него ответа не даст. Так задумано.
__________________
мой пустой блог

Старый 14.12.2009, 14:21
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 5  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
iflamberg : "Тупо"? А ты делаешь это как-то по-другому? Поделись, интересно.
__________________
Reality.getBounds(this);

Старый 14.12.2009, 15:01
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 6  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
ir73: Это-то понятно. Плохо то, что кто-то из каких-то высокоидейных соображений решил что это нужно делать обязательно.

Как бы в IE система событий именно так и реализована - там всего 1 событийный объект, и всплывание там есть и фазы... Можно не любить такую реализацию, но не стоит быть таким категоричным...
И как бы в моем конкретном случае абсолютно никто ничего бы не потерял, если бы событие было только одно - оно не всплывает, у него нету поведения по умолчанию, да и вообще, я использую события и обработчики на 90 процентов только потому, что это MXML компонент - иначе еще бы 10 раз подумал...
__________________
Hell is the possibility of sanity

Создать новую тему Ответ Часовой пояс GMT +4, время: 03:45.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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