| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- package elements.menu {
- import flash.display.Sprite;
- import flash.events.MouseEvent;
- import elements.menu.menuItem;
- import caurina.transitions.Tweener;
- import caurina.transitions.Equations;
- import string.Utils;
- import flash.filters.DropShadowFilter;
-
- public class Menu extends Sprite {
-
- private var original_alpha:Number;
- private var props:Properties;
- private var first_showing:Boolean;
- private var hidden_pos:Number;
-
- public function Menu( chartID:String, json:Object ) {
-
- this.props = new DefaultMenuProperties(json);
-
- this.original_alpha = 0.4;
- this.alpha = 1;
-
- var pos:Number = 5;
- var height:Number = 0;
- this.first_showing = true;
-
- for each ( var val:Object in json.values )
- {
- var tmp:DefaultCameraIconProperties = new DefaultCameraIconProperties(val);
- var menu_item:menuItem = menu_item_factory.make(chartID, tmp);
- menu_item.x = 5;
- menu_item.y = pos;
- this.addChild(menu_item);
- height = menu_item.y + menu_item.height + 5;
- pos += menu_item.height + 5;
- }
-
- var width:Number = 0;
-
- for ( var i:Number = 0; i < this.numChildren; i++ )
- width = Math.max( width, this.getChildAt(i).width );
-
- this.draw(width+10, height);
- this.hidden_pos = height;
-
- /*
- var dropShadow:DropShadowFilter = new flash.filters.DropShadowFilter();
- dropShadow.blurX = 4;
- dropShadow.blurY = 4;
- dropShadow.distance = 4;
- dropShadow.angle = 45;
- dropShadow.quality = 2;
- dropShadow.alpha = 0.5;
- // apply shadow filter
- this.filters = [dropShadow];
- */
-
-
- this.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
- this.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
- }
-
- private function draw(width:Number, height:Number): void {
-
- this.graphics.clear();
-
- var colour:Number = string.Utils.get_colour( this.props.get('colour') );
- var o_colour:Number = string.Utils.get_colour( this.props.get('outline-colour') );
-
- this.graphics.lineStyle( 1, o_colour );
- this.graphics.beginFill(colour, 1);
- this.graphics.moveTo( 0, -2 );
- this.graphics.lineTo( 0, height );
- this.graphics.lineTo( width-25, height );
- this.graphics.lineTo( width-20, height+10 );
- this.graphics.lineTo( width, height+10 );
- this.graphics.lineTo( width, -2 );
- this.graphics.endFill();
-
- // arrows
- this.graphics.lineStyle( 1, o_colour );
- this.graphics.moveTo( width-15, height+3 );
- this.graphics.lineTo( width-10, height+8 );
- this.graphics.lineTo( width-5, height+3 );
-
- this.graphics.moveTo( width-15, height );
- this.graphics.lineTo( width-10, height+5 );
- this.graphics.lineTo( width-5, height );
-
- }
-
- public function mouseOverHandler(event:MouseEvent):void {
- Tweener.removeTweens(this);
- Tweener.addTween(this, { y:0, time:0.4, transition:Equations.easeOutBounce } );
- Tweener.addTween(this, { alpha:1, time:0.4, transition:Equations.easeOutBounce } );
- }
- public function mouseOutHandler(event:MouseEvent):void {
- this.hide_menu();
- }
-
- private function hide_menu(): void
- {
- Tweener.removeTweens(this);
- Tweener.addTween(this, { y:-this.hidden_pos, time:0.4, transition:Equations.easeOutBounce } );
- Tweener.addTween(this, { alpha:this.original_alpha, time:0.4, transition:Equations.easeOutBounce } );
- }
-
- public function resize(): void {
-
- if ( this.first_showing ) {
- this.y = 0;
- this.first_showing = false;
- Tweener.removeTweens(this);
- Tweener.addTween(this, { time:3, onComplete:this.hide_menu } );
- }
- else {
- this.y = -(this.height) + 10;
- }
- this.x = this.stage.stageWidth - this.width - 5;
-
- }
- }
- }
|