Показать сообщение отдельно
Старый 17.05.2009, 18:40
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Alex Lexcuk, а зачем вместо?
Зачем вообще такие утопичные классы?
Всё делается элементарно и без каких-либо костылей вроде LexEvent, кастомных событий и другой чуши:

Код AS3:
package {
	import flash.display.*
	import flash.events.*;
	import flash.text.*;
 
	public class SimButton extends SimpleButton {
 
		public function SimButton(){
			super();
		}
 
		/**
		 * @private
		 */
		private var _label:String;
 
		public function get label():String {
			return this._label;
		}
 
		public function set label(value:String):void {
			if (this._label == value) return;
			this._label = value;
			((super.upState as DisplayObjectContainer).getChildAt(1) as TextField).text = value;
			((super.downState as DisplayObjectContainer).getChildAt(1) as TextField).text = value;
			((super.overState as DisplayObjectContainer).getChildAt(1) as TextField).text = value;
		}
 
	}
}
Код AS3:
package {
	import flash.display.*
	import flash.events.*;
	import flash.text.*;
 
	public class DocEventCustom extends Sprite {
 
		public function DocEventCustom(){
			super();
			var i:uint;
			var j:uint = 0;
			var l:uint = super.numChildren;
			var o:DisplayObject;
 
			for (i = 0; i< l; i++) {
				o = super.getChildAt(i);
 
				if (o is SimButton) {
					(o as SimButton).label = this._labels[j];
					j++;
					if (j >= this._labels.length) break;
				}
 
			}
 
			super.addEventListener(MouseEvent.CLICK, this.handler_click);
		}
 
		/**
		 * @private
		 */
		private const _labels:Array = new Array("один","два","три","четыре","пять","шесть","семь");
 
		/**
		 * @private
		 */
		private function handler_click(event:MouseEvent):void {
			if (event.target is SimButton) {
				trace((event.target as SimButton).label);
			}
		}
	}
}