All pastes #454913 Raw Edit

Mine

public text v1 · immutable
·published 2007-04-23 21:52 UTC
rendered paste body
/*
 * Nav, Version 2.0
 *
 * @author: Tri Nguyen
 * @website: http://www.midnightprojects.com
 * @email: tri@midnightprojects.com
 * @version: 2.0.0
 * @modified: 03/19/07
*/
import mx.events.EventDispatcher;
import mx.utils.Delegate;
//--------------------------------------------
class com.midnightprojects.ui.Nav extends MovieClip {
	//variables
	private var _instance:Nav;
	private var _curSelect:MovieClip;
	private var _length:Number;
	private var _id:Number;
	private var _audioIn:Sound;
	private var _audioOut:Sound;
	private var _audioSelect:Sound;
	private var navButtons:MovieClip;
	
	private var dispatchEvent:Function;
	public var addEventListener:Function;
	public var removeEventListener:Function;
	//--------------------------------------------
	//constructor
	public function Nav() {
		instance = this;
		EventDispatcher.initialize(this);
	}
	//--------------------------------------------
	public function get instance():Nav {
		return _instance;
	}
	//--------------------------------------------
	public function set instance(_instance:Nav):Void {
		this._instance = _instance;
	}
	//--------------------------------------------
	public function get curSelect():MovieClip {
		return _curSelect;
	}
	//--------------------------------------------
	public function set curSelect(_curSelect:MovieClip):Void {
		this._curSelect = _curSelect;
	}
	//--------------------------------------------
	public function get length():Number {
		return _length;
	}
	//--------------------------------------------
	public function set length(_length:Number):Void {
		this._length = _length;
	}
	//--------------------------------------------
	public function get id():Number {
		return _id;
	}
	//--------------------------------------------
	public function set id(_id:Number):Void {
		this._id = _id;
	}
	//--------------------------------------------
	public function get audioIn():Sound {
		return _audioIn;
	}
	//--------------------------------------------
	public function set audioIn(_audioIn:Sound):Void {
		this._audioIn = _audioIn;
	}
	//--------------------------------------------
	public function get audioOut():Sound {
		return _audioOut;
	}
	//--------------------------------------------
	public function set audioOut(_audioOut:Sound):Void {
		this._audioOut = _audioOut;
	}
	//--------------------------------------------
	public function get audioSelect():Sound {
		return _audioSelect;
	}
	//--------------------------------------------
	public function set audioSelect(_audioSelect:Sound):Void {
		this._audioSelect = _audioSelect;
	}
	//--------------------------------------------
	public function init(o:Object):Void {
		
	}
	//--------------------------------------------
	public function reset():Void {
		navFun(null, "select");
		for (var i = 0; i < length; i ++) {
			this["a" + i].removeMovieClip();
		}
	}
	//--------------------------------------------
	public function create(o:Object):Void {
		reset();
		length = o.path.length;
		for (var i = 0; i < length; i ++) {
			var obj = navButtons.attachMovie("navButton", "a" + i, navButtons.getNextHighestDepth());
			for (var j in o.path[i].attributes) {
				obj[j] = o.path[i].attributes[j];
			}
			
			obj.navLabel.tField.htmlText = obj.label;
			obj.navLabel.tField.autoSize = true;
			MovieClipButton.enable(this, obj, navFun, false);
			
			if (o.grid) {
				obj._x = Math.floor(i % o.grid) * o.x;
				obj._y = Math.floor(i / o.grid) * o.y;
			}
			else {
				if (o.x) if (i > 0) obj._x = navButtons["a" + (i - 1)]._x + navButtons["a" + (i - 1)]._width + o.x;
				if (o.y) if (i > 0) obj._y = navButtons["a" + (i - 1)]._y + navButtons["a" + (i - 1)]._height + o.y;
			}
		}
	}
	//--------------------------------------------
	//nav controller
	private function navFun(obj:MovieClip, cmd:String):Void {
		if (curSelect != obj) {
			if (cmd != "select" && cmd != "press") {
				ObjCmd.create(obj, cmd);
				(cmd == "in") ? audioIn.start() : audioOut.start();
			}
			else {
				if (cmd == "select") {
					ObjCmd.create(curSelect, "out");
					curSelect = obj;
					ObjCmd.create(curSelect, "in");
					trace("selected nav label: " + obj.label);
					if (obj != null) {
						if (obj.active == "true") {
							if (obj.target == "") {
								audioSelect.start();
								ObjCmd.create(curSelect, "out");
								curSelect = obj;
								ObjCmd.create(curSelect, "in");
								id = Number(curSelect._name.slice(1));
								dispatchEvent({type:"onNavSelect", obj:curSelect});
							}
							else {
								Browser.launch(obj.URL, obj.target);
							}
						}
					}
				}
			}
		}
	}
}