Показать сообщение отдельно
Старый 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 и я стану писателем ^_^