/* * 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); } } } } } } } }