topical media & game development
physic-flex-ape-sample-robot-demo.ax
physic-flex-ape-sample-robot-demo.ax
[swf]
flex
package {
import org.cove.ape.*;
import flash.display.Stage;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.KeyboardEvent;
[SWF(width="650", height="350", backgroundColor="#000000")]
public class @ax-physic-flex-ape-sample-robot-demo extends Sprite {
private static var halfStageWidth:int = 325;
private var robot:physic_flex_ape_sample_robot_Robot;
public function @ax-physic-flex-ape-sample-robot-demo() {
stage.frameRate = 55;
addEventListener(Event.ENTER_FRAME, run);
stage.addEventListener(KeyboardEvent.KEY_UP, keyHandler);
APEngine.init(1/4);
APEngine.container = this;
APEngine.addMasslessForce(new AVector(0,4));
APEngine.damping = .99;
APEngine.constraintCollisionCycles = 10;
robot = new physic_flex_ape_sample_robot_Robot(1250, 260, 1.6, 0.02);
var terrainA:Group = new Group();
var terrainB:Group = new Group(true);
var terrainC:Group = new Group();
var floor:RectangleParticle = new RectangleParticle(600,390,1700,100,0,true,1,0,1);
floor.setStyle(0,0,0,0x999999);
terrainA.addParticle(floor);
// pyramid of boxes
var box0:RectangleParticle = new RectangleParticle(600,337,600,7,0,true,10,0,1);
box0.setStyle(1,0x999999,1,0x336699);
terrainA.addParticle(box0);
var box1:RectangleParticle = new RectangleParticle(600,330,500,7,0,true,10,0,1);
box1.setStyle(1,0x999999,1,0x336699);
terrainA.addParticle(box1);
var box2:RectangleParticle = new RectangleParticle(600,323,400,7,0,true,10,0,1);
box2.setStyle(1,0x999999,1,0x336699);
terrainA.addParticle(box2);
var box3:RectangleParticle = new RectangleParticle(600,316,300,7,0,true,10,0,1);
box3.setStyle(1,0x999999,1,0x336699);
terrainA.addParticle(box3);
var box4:RectangleParticle = new RectangleParticle(600,309,200,7,0,true,10,0,1);
box4.setStyle(1,0x999999,1,0x336699);
terrainA.addParticle(box4);
var box5:RectangleParticle = new RectangleParticle(600,302,100,7,0,true,10,0,1);
box5.setStyle(1,0x999999,1,0x336699);
terrainA.addParticle(box5);
// left side floor
var floor2:RectangleParticle = new RectangleParticle(-100,390,1100,100,0.3,true,1,0,1);
floor2.setStyle(0,0,0,0x999999);
terrainB.addParticle(floor2);
var floor3:RectangleParticle = new RectangleParticle(-959,232,700,100,0,true,1,0,1);
floor3.setStyle(0,0,0,0x999999);
terrainB.addParticle(floor3);
var box6:RectangleParticle = new RectangleParticle(-990,12,50,25,0);
box6.setStyle(1,0x999999,1,0x336699);
terrainB.addParticle(box6);
var floor5:RectangleParticle = new RectangleParticle(-1284,170,50,100,0,true);
floor5.setStyle(0,0,0,0x999999);
terrainB.addParticle(floor5);
// right side floor
var floor6:RectangleParticle = new RectangleParticle(1430,320,50,60,0,true);
floor6.setStyle(0,0,0,0x999999);
terrainC.addParticle(floor6);
APEngine.addGroup(robot);
APEngine.addGroup(terrainA);
APEngine.addGroup(terrainB);
APEngine.addGroup(terrainC);
robot.addCollidable(terrainA);
robot.addCollidable(terrainB);
robot.addCollidable(terrainC);
robot.togglePower();
}
private function run(evt:Event):void {
APEngine.step();
robot.run();
APEngine.paint();
APEngine.container.x = -robot.px + halfStageWidth;
}
private function keyHandler(evt:KeyboardEvent):void {
switch (evt.keyCode) {
case 80: // p
robot.togglePower();
break;
case 82: // r
robot.toggleDirection();
break;
case 72: // h
robot.toggleLegs();
break;
default:
break;
}
}
}
}
(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.