topical media & game development
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.