Показать сообщение отдельно
Старый 25.05.2006, 03:37
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 36  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
И так =) Ultimate Orange CheckBox Trigger And Radio Button Framework =)
Составляющие части
класс CheckBoxController
Код:
import com.onorange.lab.ui.ICheckBox;
import mx.utils.Delegate;
class com.onorange.lab.ui.CheckBoxController {
	public static var ON:String = "on";
	public static var OFF:String = "off";
	//	
	private var target:ICheckBox;
	private var isOn:Boolean;
	private var currentState:String;
	
	
	public function CheckBoxController(target:ICheckBox,defaultValue:Boolean) {
		isOn = (defaultValue == undefined) ? false : true;
		this.target = target;
		target.addEventListener("click",Delegate.create(this,changeState));
	}
	
	public function set state(val:String):Void {
		if(val == ON || val == OFF) {
			if(val == ON) {
				target.setOn();
				
			}else if(val == OFF) {
				target.setOff();
			}
			currentState = val;
		}
	}
	public function get state():String {
		return currentState;
	}
	
	private function changeState(evt:Object):Void {
		state = (currentState == ON)? OFF:ON;
	}
}
Занимается управлением тригера.

Два абстрактных класса
AbstractCheckBoxMovieClip и AbstractCheckBox являються базовыми классами для чекбоксов(первый если экстендим мувиклип, второй если обжект)
Код:
import mx.events.EventDispatcher;
import com.onorange.lib.events.IEventDispatcher;
class com.onorange.lab.ui.AbstractCheckBoxMovieClip
extends MovieClip
implements IEventDispatcher{
	
	public function AbstractCheckBoxMovieClip () {
		EventDispatcher.initialize(this);
		onRelease = dispatchClick;
	}
	
	public function addEventListener(type:String,target:Object):Void {
	}
	public function removeEventListener(type:String,target:Object):Void {
	}
	public function dispatchEvent(eventObject:Object):Void{
	}
	
	private function dispatchClick():Void {
		dispatchEvent({type:'click',target:this});
	}
}
Код:
import mx.events.EventDispatcher;
import com.onorange.lib.events.IEventDispatcher;
class com.onorange.lab.ui.AbstractCheckBox
implements IEventDispatcher {
	private var container:MovieClip;
	public function AbstractCheckBox (parent:MovieClip) {
		EventDispatcher.initialize(this);
		container = parent.createEmptyMovieClip("container_mc",parent.getNextHighestDepth());
		container.onRelease = dispatchClick;		
	}
	public function addEventListener(type:String,target:Object):Void {
	}
	public function removeEventListener(type:String,target:Object):Void {
	}
	public function dispatchEvent(eventObject:Object):Void {
	}
	
	private function dispatchClick():Void {
		dispatchEvent({type:'click',target:this});
	}
}
Интерфейс ICheckBox все наши тригеры должны реализовывать его
Код:
import com.onorange.lib.events.IEventDispatcher;
interface com.onorange.lab.ui.ICheckBox extends com.onorange.lib.events.IEventDispatcher{
	function setOn():Void;
	function setOff():Void;
}
делать навороченные примеры влом, вот два простейших примераcheckBox.rar

Я думаю понятно что можно вставить все что угодно

PS я забыл в CheckBoxController вставить EventDispatcher, как нить потом=) щас уже влом
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^