topical media & game development

talk show tell print

animation-ch13-Walking5.ax

animation-ch13-Walking5.ax [swf] [flash] flex


  package {
   import flash.display.Sprite;
   import flash.display.StageScaleMode;
   import flash.display.StageAlign;
   import flash.events.Event;
  
   public class @ax-animation-ch13-Walking5 extends Sprite
   {
    private var segment0:animation_ch13_Segment;
    private var segment1:animation_ch13_Segment;
    private var segment2:animation_ch13_Segment;
    private var segment3:animation_ch13_Segment;
    private var speedSlider:animation_ch13_SimpleSlider;
    private var thighRangeSlider:animation_ch13_SimpleSlider;
    private var thighBaseSlider:animation_ch13_SimpleSlider;
    private var calfRangeSlider:animation_ch13_SimpleSlider;
    private var calfOffsetSlider:animation_ch13_SimpleSlider;
    private var cycle:Number = 0;
    
    public function @ax-animation-ch13-Walking5()
    {
     init();
    }
    
    private function init():void
    {
     stage.scaleMode = StageScaleMode.NO_SCALE;
     stage.align = StageAlign.TOP_LEFT;
     
     segment0 = new animation_ch13_Segment(100, 30);
     addChild(segment0);
     segment0.x = 200;
     segment0.y = 100;
     
     segment1 = new animation_ch13_Segment(100, 20);
     addChild(segment1);
     segment1.x = segment0.getPin().x;
     segment1.y = segment0.getPin().y;
     
     segment2 = new animation_ch13_Segment(100, 30);
     addChild(segment2);
     segment2.x = 200;
     segment2.y = 100;
     
     segment3 = new animation_ch13_Segment(100, 20);
     addChild(segment3);
     segment3.x = segment2.getPin().x;
     segment3.y = segment2.getPin().y;
     
     speedSlider = new animation_ch13_SimpleSlider(0, 0.3, 0.12);
     addChild(speedSlider);
     speedSlider.x = 10;
     speedSlider.y = 10;
     
     thighRangeSlider = new animation_ch13_SimpleSlider(0, 90, 45);
     addChild(thighRangeSlider);
     thighRangeSlider.x = 30;
     thighRangeSlider.y = 10;
     
     thighBaseSlider = new animation_ch13_SimpleSlider(0, 180, 90);
     addChild(thighBaseSlider);
     thighBaseSlider.x = 50;
     thighBaseSlider.y = 10;
     
     calfRangeSlider = new animation_ch13_SimpleSlider(0, 90, 45);
     addChild(calfRangeSlider);
     calfRangeSlider.x = 70;
     calfRangeSlider.y = 10;
     
     calfOffsetSlider = new animation_ch13_SimpleSlider(-3.14, 3.14, -1.57);
     addChild(calfOffsetSlider);
     calfOffsetSlider.x = 90;
     calfOffsetSlider.y = 10;
     
     addEventListener(Event.ENTER_FRAME, onEnterFrame);
    }
    
    private function onEnterFrame(event:Event):void
    {
     walk(segment0, segment1, cycle);
     walk(segment2, segment3, cycle + Math.PI);
     cycle += speedSlider.value;
    }
    
    private function walk(segA:animation_ch13_Segment, segB:animation_ch13_Segment, cyc:Number):void
    {
     var angleA:Number = Math.sin(cyc) *
          thighRangeSlider.value + 
          thighBaseSlider.value;
     var angleB:Number = Math.sin(cyc + calfOffsetSlider.value) *
          calfRangeSlider.value +
          calfRangeSlider.value;
     segA.rotation = angleA;
     segB.rotation = segA.rotation + angleB;
     segB.x = segA.getPin().x;
     segB.y = segA.getPin().y;
    }
  
   }
  }
  


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.