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

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

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

Регистрация: Mar 2009
Адрес: Екатеринбург
Сообщений: 30
Отправить сообщение для Maraekb с помощью ICQ
По умолчанию addEventListener вложенная функция

Можно ли реализовать что то на подобии этого:
Код AS3:
addEventListener(flash.events.MouseEvent.CLICK, tracer = function():*{ trace("бла бла") })

Старый 08.07.2010, 15:29
Juice_Green вне форума Посмотреть профиль Отправить личное сообщение для Juice_Green Посетить домашнюю страницу Juice_Green Найти все сообщения от Juice_Green
  № 2  
Juice_Green
 
Аватар для Juice_Green

Регистрация: Dec 2005
Адрес: Новосибирск
Сообщений: 529
Отправить сообщение для Juice_Green с помощью ICQ Отправить сообщение для Juice_Green с помощью Skype™
Код AS3:
stage.addEventListener(MouseEvent.CLICK, function(e:MouseEvent):void{trace("click")});

Старый 08.07.2010, 15:41
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 3  
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
Можно, но есть 2 проблемы:
1) не читабильно
2) нельзя удалить
Код AS3:
addEventListener( MouseEvent.CLICK, function( event:Event ):void { trace( event ) });
С другой стороны можно создать функционал:

Код AS3:
package
{
	import flash.display.SpreadMethod;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.EventPhase;
	import flash.events.MouseEvent;
 
	public class Test extends Sprite
	{
		public function Test()
		{
			super();
 
			var first:Sprite = addChild( button() ) as Sprite;
				first.addEventListener( MouseEvent.CLICK, handler( trace, true, "hello world" ) );
 
			var second:Sprite = addChild( button() ) as Sprite;
				second.x = 122;
				second.addEventListener( MouseEvent.CLICK, handler( trace, false, "hi" ) );
		}
 
		protected function button( color:uint = 0x000000, width:uint = 100, height:uint = 22 ):Sprite
		{
			var sprite:Sprite = new Sprite;
				sprite.graphics.beginFill( color );
				sprite.graphics.drawRect( 0, 0, width, height );
				sprite.graphics.endFill();
 
				sprite.buttonMode = true;
				sprite.useHandCursor = true;
 
			return sprite;
		}
 
		protected function handler( closure:Function, remove:Boolean = true, ...arguments:* ):Function
		{
			var wrapper:Function = function( event:Event ):void
			{
				closure.apply( null, arguments );
 
				if( remove )
				{
					event.target.removeEventListener( event.type, wrapper );
													  //event.eventPhase == EventPhase.BUBBLING_PHASE ? false : true );
				}
			}
 
			return wrapper;
		}
	}
}
Но AS3 крайне плохо решает вопросы с выделением памяти вложеным функциям, и я не стал бы рекомендовать использовать это часто, хотя временами помогает.
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

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

Регистрация: Mar 2009
Адрес: Екатеринбург
Сообщений: 30
Отправить сообщение для Maraekb с помощью ICQ
Особо я к влож.функциям и не стремлюсь просто было интересно узнать на будующее можно ли в листенерах делать вложеные функции. Спасибо)
Вот пробдема удаления действительно резко меняет дело)))
Но всёровно пригодиться)


Последний раз редактировалось Maraekb; 08.07.2010 в 15:50.
Старый 08.07.2010, 15:54
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 5  
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
Ну я показал пример с удалением сразу после отработки, например это могут быть события инициализации, правда надо прогонять это дело в профайлере и посмотреть удалились ли все объекты.

Но скажем 5 раз отработать - потом удалть, или добавлять/удалять по каким то условиям – функционально в AS можно убится так делать )
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

Старый 08.07.2010, 16:48
Maraekb вне форума Посмотреть профиль Отправить личное сообщение для Maraekb Найти все сообщения от Maraekb
  № 6  
Maraekb
 
Аватар для Maraekb

Регистрация: Mar 2009
Адрес: Екатеринбург
Сообщений: 30
Отправить сообщение для Maraekb с помощью ICQ
А ещё такой вопрос, не по теме правда, А trace("**") Если их много сильно нагружают комп или при компиляции они автоматически удаляются?

Старый 08.07.2010, 17:26
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 7  
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
Да нагружают, насчет удаляются не знаю, вообще обычно использую свои собственные логгеры.
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

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

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Можно удалить при компиляции, да нагружают, лучше их ставить в блок, который по условию будет вырезаться компилятором типа:
Код AS3:
CONFIG::debug { trace(...); }
т.как компилятор не особенно корректно их сам вырезает.
__________________
Hell is the possibility of sanity

Старый 08.07.2010, 17:38
Maraekb вне форума Посмотреть профиль Отправить личное сообщение для Maraekb Найти все сообщения от Maraekb
  № 9  
Maraekb
 
Аватар для Maraekb

Регистрация: Mar 2009
Адрес: Екатеринбург
Сообщений: 30
Отправить сообщение для Maraekb с помощью ICQ
ок))Учту)
Спасибо)

Старый 08.07.2010, 18:37
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 10  
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
Nirth, собственные логеры нагружают ещё больше ) поэтому я всегда удивляюсь этому "обычно".

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

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

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


 


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


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