Changeset 110


Ignore:
Timestamp:
11/13/08 17:36:17 (5 years ago)
Author:
pablo
Message:

ViewEvent.BUTTON - allows plugins to request an additional button be placed on the controlbar.

Location:
trunk/as3
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/as3/com/jeroenwijering/events/ControllerEvent.as

    r88 r110  
    2424        public static var STOP:String = "STOP"; 
    2525        public static var VOLUME:String = "VOLUME"; 
     26        public static var BUTTON:String = "BUTTON"; 
    2627        /** The data associated with the event. **/ 
    2728        private var _data:Object; 
  • trunk/as3/com/jeroenwijering/events/ViewEvent.as

    r88 r110  
    2828        public static var TRACE:String = "TRACE"; 
    2929        public static var VOLUME:String = "VOLUME"; 
     30        public static var BUTTON:String = "BUTTON"; 
    3031        /** The data associated with the event. **/ 
    3132        private var _data:Object; 
  • trunk/as3/com/jeroenwijering/player/Controller.as

    r109 r110  
    6868                view.addEventListener(ViewEvent.STOP,stopHandler); 
    6969                view.addEventListener(ViewEvent.VOLUME,volumeHandler); 
     70                view.addEventListener(ViewEvent.BUTTON,buttonHandler); 
    7071        }; 
    7172 
     
    491492        }; 
    492493 
     494        /** Add new button to the control bar. **/ 
     495        private function buttonHandler(evt:ViewEvent):void { 
     496                var dat:Object = {icon:null,clickhandler:null,buttonname:""}; 
     497                try { 
     498                        dat['icon'] = evt.data['icon']; 
     499                        dat['clickhandler'] = evt.data['clickhandler']; 
     500                        dat['buttonname'] = String(evt.data['buttonname']); 
     501                } catch(e:Error) {} 
     502                dispatchEvent(new ControllerEvent(ControllerEvent.BUTTON,dat)); 
     503        }; 
     504 
    493505 
    494506} 
  • trunk/as3/com/jeroenwijering/player/Player.as

    r109 r110  
    7070                token:undefined, 
    7171                tracecall:undefined, 
    72                 version:'4.3.109' 
     72                version:'4.3.110' 
    7373        }; 
    7474        /** Reference to all stage graphics. **/ 
  • trunk/as3/com/jeroenwijering/player/View.as

    r109 r110  
    201201                        case 'VOLUME': 
    202202                                dat['percentage'] = prm; 
     203                                break; 
     204                        case 'BUTTON': 
     205                                dat = prm; 
    203206                                break; 
    204207                        default: 
  • trunk/as3/com/jeroenwijering/plugins/Controlbar.as

    r105 r110  
    77import com.jeroenwijering.events.*; 
    88import com.jeroenwijering.utils.*; 
    9 import flash.display.MovieClip; 
     9 
     10import flash.display.*; 
    1011import flash.events.MouseEvent; 
    1112import flash.geom.ColorTransform; 
    1213import flash.geom.Rectangle; 
     14import flash.net.URLRequest; 
     15import flash.ui.Mouse; 
     16import flash.utils.clearTimeout; 
    1317import flash.utils.setTimeout; 
    14 import flash.utils.clearTimeout; 
    15 import flash.ui.Mouse; 
    1618 
    1719 
     
    5456        } 
    5557 
     58        /** Button next to which custom buttons are added **/ 
     59        private var insertNextTo:MovieClip = null; 
     60         
    5661 
    5762        /** Constructor. **/ 
     
    7075                view.addControllerListener(ControllerEvent.MUTE,muteHandler); 
    7176                view.addControllerListener(ControllerEvent.VOLUME,volumeHandler); 
     77                view.addControllerListener(ControllerEvent.BUTTON,buttonHandler); 
    7278                bar = view.skin['controlbar']; 
     79                 
     80                if(bar.hasOwnProperty('blankButton')) { 
     81                        bar.blankButton.visible = false; 
     82                } 
     83                 
    7384                margin = bar.x; 
    7485                stacker = new Stacker(bar); 
     
    421432        }; 
    422433 
    423  
     434        /** Add a new button to the controlbar **/ 
     435        private function buttonHandler(evt:ControllerEvent=null):void { 
     436                if(!insertNextTo) { insertNextTo = bar['linkButton']; } 
     437                if(bar.hasOwnProperty('blankButton')) { 
     438                        try {  
     439                                var newButton:MovieClip = Draw.clone(bar['blankButton']); 
     440                                newButton.name = evt.data.buttonname; 
     441                                newButton.visible = true; 
     442 
     443                                var newIcon = null; 
     444                                 
     445                                if(evt.data.icon is String) { 
     446                                        newIcon = new Loader(); 
     447                                        newIcon.load(new URLRequest(evt.data.icon)); 
     448                                } else if(evt.data.icon is Sprite) { 
     449                                        newIcon = evt.data.icon as Sprite; 
     450                                } 
     451                                 
     452                                if(newIcon) { 
     453                                        newIcon.x = newButton['icon'].x; 
     454                                        newIcon.y = newButton['icon'].y; 
     455                                        newIcon.name = 'icon'; 
     456                                        newButton.removeChild(newButton['icon']); 
     457                                        newButton.addChild(newIcon); 
     458                                } 
     459                                 
     460                                newButton.addEventListener(MouseEvent.CLICK, evt.data.clickhandler); 
     461 
     462                                bar.addChild(newButton); 
     463 
     464                                stacker.insert(newButton, insertNextTo); 
     465                                insertNextTo = newButton; 
     466 
     467                        } catch (err:Error) {} 
     468                } 
     469        }; 
    424470}; 
    425471 
  • trunk/as3/com/jeroenwijering/utils/Stacker.as

    r88 r110  
    1 /** 
     1/** 
    22* Parses children of a MovieClip and docks them to the left & right. 
    33**/ 
     
    117117        }; 
    118118 
     119        public function insert(insrt:MovieClip,next:MovieClip):void { 
     120                var found:Number = -1; 
     121                for(var i:Number=0; i<stack.length && found < 0; i++) { 
     122                        if(stack[i].c == next) { 
     123                                stack.splice(i, 0, {c:insrt,x:stack[i].x-insrt.width,n:insrt.name,w:insrt.width}); 
     124                                found = i; 
     125                                break; 
     126                        } 
     127                } 
     128                rearrange(); 
     129                 
     130        }  
    119131 
    120132} 
Note: See TracChangeset for help on using the changeset viewer.