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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 08.02.2010, 15:01
MrPoma вне форума Посмотреть профиль Отправить личное сообщение для MrPoma Посетить домашнюю страницу MrPoma Найти все сообщения от MrPoma
  № 11  
Ответить с цитированием
MrPoma
 
Аватар для MrPoma

Регистрация: Jul 2006
Адрес: Питер
Сообщений: 2,083
Отправить сообщение для MrPoma с помощью Skype™
Код AS3:
package{
	import flash.events.Event;
 
	public class LOLEvent extends Event{
		public static const LOL:String = 'lol';
 
		private var _lol:String;
		public function get lol():Stirng{
			return this._lol;
		}
 
		public function LOLEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false, lol:String=''){
			super(type, bubbles, cancelable);
			this._lol = lol;
		}
 
		public override function clone():Event{
			return new LOLEvent(super.type, super.bubbles, super.cancelable, this._lol);
		}
	}
}
Код AS3:
super.addEventListener(LOLEvent.LOL, this.handlerLOL);
super.dispatchEvent(new LOLEvent(LOLEvent.LOL, false, false, 'ha-ha-ha'));
private function handlerLOL(event:LOLEvent):void{
	trace(event.lol);
}
__________________
жж | твттр | гглплс | фсбк | вкнткт | гтхб


Последний раз редактировалось MrPoma; 08.02.2010 в 15:04.
Старый 08.02.2010, 15:22
uglan вне форума Посмотреть профиль Отправить личное сообщение для uglan Посетить домашнюю страницу uglan Найти все сообщения от uglan
  № 12  
Ответить с цитированием
uglan

Регистрация: Mar 2003
Адрес: moscow
Сообщений: 102
Отправить сообщение для uglan с помощью ICQ Отправить сообщение для uglan с помощью Skype™
Сейчас попробую)

Добавлено через 55 минут
хм...класс работает, спасибо)
Но как мне его использовать в качестве реагирования на клик и наведение/отведение мышки?
__________________
uglan

Старый 08.02.2010, 17:33
zuxul вне форума Посмотреть профиль Отправить личное сообщение для zuxul Найти все сообщения от zuxul
  № 13  
Ответить с цитированием
zuxul

Регистрация: Dec 2009
Адрес: 59°13′N, 39°54′E
Сообщений: 445
Записей в блоге: 1
В качестве реагирования на клик и наведение/отведение мышки нужно использовать функцию принимающую параметр MouseEvent
Код AS3:
function lolFunction (e:MouseEvent):void {...}
Если повесить эту функцию на несколько объектов, то нужно использовать e.target и e.currentTarget (Вам уже об этом говорили, но Вы это игнорируете)

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

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Когда срабатывает колбек то ситуации в которой ваша переменная объявленная в классе слушателе или в классе диспатчере недоступна просто не может быть потому что обе эти области видимости вам будут извесны в колбеке, первая - this, вторая - Event#target / Event#currentTarget - вы просто не там ищите. А передать дополнительные параметры в функцию у которой сигнатура это не позволяет не возможно никак, более того, это протовоестесственно и абсолютно противоречит здравому смыслу.
__________________
Hell is the possibility of sanity

Старый 08.02.2010, 18:26
uglan вне форума Посмотреть профиль Отправить личное сообщение для uglan Посетить домашнюю страницу uglan Найти все сообщения от uglan
  № 15  
Ответить с цитированием
uglan

Регистрация: Mar 2003
Адрес: moscow
Сообщений: 102
Отправить сообщение для uglan с помощью ICQ Отправить сообщение для uglan с помощью Skype™
Цитата:
В качестве реагирования на клик и наведение/отведение мышки нужно использовать функцию принимающую параметр MouseEvent
Смысл тогда писать свой ивент? Если все равно используется стандартный MouseEvent? Я чот запутался. Как я получу текстовую переменную пользуясь этим.

Цитата:
Если повесить эту функцию на несколько объектов, то нужно использовать e.target и e.currentTarget (Вам уже об этом говорили, но Вы это игнорируете)
Попробовал currentTarget - результат тот же. Что я делаю не так?

Цитата:
А передать дополнительные параметры в функцию у которой сигнатура это не позволяет не возможно никак, более того, это протовоестесственно и абсолютно противоречит здравому смыслу.
Не вижу тут ничего противоречивого. Есть куча объектов есть функция которая должна их обработать по одному единственному параметру который передается с помощью отлова события CLICK. Не ужели нет простого способа реализовать это?
__________________
uglan


Последний раз редактировалось uglan; 08.02.2010 в 18:29.
Старый 08.02.2010, 19:07
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 16  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Цитата:
Сообщение от uglan Посмотреть сообщение
Не вижу тут ничего противоречивого. Есть куча объектов есть функция которая должна их обработать по одному единственному параметру который передается с помощью отлова события CLICK. Не ужели нет простого способа реализовать это?
Противоестественно то, что функции задан тип: Event->void, задан не вами, а API которые вы изменить не можете. Т.е. это все равно, что вы бы жаловались на то, что переменной булевого типа не получается присвоить строку. Естественно не получится. А по поводу ответа - прочитайте еще раз предыдущее сообщение, там он как бы уже присутствует.
__________________
Hell is the possibility of sanity

Старый 09.02.2010, 12:18
uglan вне форума Посмотреть профиль Отправить личное сообщение для uglan Посетить домашнюю страницу uglan Найти все сообщения от uglan
  № 17  
Ответить с цитированием
uglan

Регистрация: Mar 2003
Адрес: moscow
Сообщений: 102
Отправить сообщение для uglan с помощью ICQ Отправить сообщение для uglan с помощью Skype™
Большое спасибо! Я уже сказал что не понял как мне воспользоваться этими советами и было бы здорово если ответ был бы немного доступнее. Я не претендую на профи в cs3. А ваш совет все равно что отправить меня читать хелп по as3, там ответ есть, я не сомневаюсь. Для чего тогда этот форум?
__________________
uglan

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Обстановка накаляется?))) Давайте-ка все выдохнем.
uglan, дело в том что Вы обрабатываете не просто вообще событие, а совершенно конкретное событие наведения курсора на объект. Вы подписались на него. Именно на него. При наступлении именно конкретно этого события создается и рассылается совершенно конкретный Объект События. Этот самый Объект События является ЕДИНСТВЕННЫМ и предопределенным параметром, передаваемым в функцию-обработчик ЭТОГО КОНКРЕТНОГО события. Ваш обработчик не должен принимать в качестве параметра ничего, кроме объекта события именно того Класса, на который он подписан. В данном случае это MouseEvent, и событие Мыши никак не предполагает передачу сообщений - это мышь, а не окно чата. Вы используете стандартное событие, и не пытайтесь его перестроить под свое видение - оно идеально для тех целей, для которых создано. О наведении мыши на объект оно рассказывает абсолютно все подробности. Но Вам хочется совершенно другого - Вам не нужны параметры мыши, Вам нужны параметры объекта. Он - в переменной target.
Вот теперь думаем. Раз Вы не можете завести нужное поле msg:String у этих объектов (их Класс не динамический), то наверное стоит воспользоваться утилитой Dictionary, позволяющей "привязать" к любому Объекту какое-то значение или ссылку.
Код AS3:
private var _planeMessages:Dictionary = new Dictionary();
_planeMessages[plane1] = "я первый план";
_planeMessages[plane2] = "я второй план";
_planeMessages[plane3] = "я третий план";
И далее, в обработчике, получая ссылку на объект из target, мы обращаемся к нашему справочнику и получаем привязанное к нему свойство
Код AS3:
function test_msg ( event:MouseEvent ):void {
	trace( _planeMessages[event.target] );
}
__________________
Reality.getBounds(this);

Старый 09.02.2010, 13:14
uglan вне форума Посмотреть профиль Отправить личное сообщение для uglan Посетить домашнюю страницу uglan Найти все сообщения от uglan
  № 19  
Ответить с цитированием
uglan

Регистрация: Mar 2003
Адрес: moscow
Сообщений: 102
Отправить сообщение для uglan с помощью ICQ Отправить сообщение для uglan с помощью Skype™
Вау!) Спасибо. Вот теперь действительно понятная и полезная информация.

Попробовал — все работает как надо))) СПАСИБО!
__________________
uglan


Последний раз редактировалось uglan; 09.02.2010 в 13:20.
Старый 28.06.2012, 21:53
SchSvetlana вне форума Посмотреть профиль Отправить личное сообщение для SchSvetlana Найти все сообщения от SchSvetlana
  № 20  
Ответить с цитированием
SchSvetlana

Регистрация: Sep 2008
Сообщений: 3
Wolsh, спасибо, очень понятно написал, попробовала пример сделать, такая же проблема была. Получилось все в лучшем виде. Респект тебе и уважуха

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

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

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


 


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


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