![]() |
|
||||||||||
|
|||||
|
Можно ли реализовать что то на подобии этого:
|
|
|||||
|
|
|
|||||
|
4AM Games
|
Можно, но есть 2 проблемы:
1) не читабильно 2) нельзя удалить С другой стороны можно создать функционал: 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; } } }
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^ |
|
|||||
|
Особо я к влож.функциям и не стремлюсь просто было интересно узнать на будующее можно ли в листенерах делать вложеные функции. Спасибо)
Вот пробдема удаления действительно резко меняет дело))) Но всёровно пригодиться) Последний раз редактировалось Maraekb; 08.07.2010 в 15:50. |
|
|||||
|
4AM Games
|
Ну я показал пример с удалением сразу после отработки, например это могут быть события инициализации, правда надо прогонять это дело в профайлере и посмотреть удалились ли все объекты.
Но скажем 5 раз отработать - потом удалть, или добавлять/удалять по каким то условиям – функционально в AS можно убится так делать )
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^ |
|
|||||
|
А ещё такой вопрос, не по теме правда, А trace("**") Если их много сильно нагружают комп или при компиляции они автоматически удаляются?
|
|
|||||
|
Modus ponens
|
Можно удалить при компиляции, да нагружают, лучше их ставить в блок, который по условию будет вырезаться компилятором типа:
т.как компилятор не особенно корректно их сам вырезает.
__________________
Hell is the possibility of sanity |
|
|||||
|
ок))Учту)
Спасибо) |
|
|||||
|
стервочка (я мужик)
|
Nirth, собственные логеры нагружают ещё больше ) поэтому я всегда удивляюсь этому "обычно".
|
![]() |
![]() |
Часовой пояс GMT +4, время: 08:24. |
|
|
« Предыдущая тема | Следующая тема » |
|
|