Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package
- {
- import flash.Boot;
- import flash.display.BitmapData;
- import flash.display.Sprite;
- import flash.display.StageAlign;
- import flash.display.StageQuality;
- import flash.display.StageScaleMode;
- import flash.events.Event;
- import flash.events.KeyboardEvent;
- import flash.events.MouseEvent;
- import flash.text.TextField;
- import flash.text.TextFieldAutoSize;
- import flash.text.TextFormat;
- import flash.ui.Keyboard;
- import nape.geom.*;
- import nape.phys.*;
- import nape.space.*;
- import nape.util.*;
- [SWF(width="800", height="600", backgroundColor="#ffffff")]
- public class Main extends Sprite
- {
- private var kUp:Boolean = false;
- private var kDn:Boolean = false;
- private var kLt:Boolean = false;
- private var kRt:Boolean = false;
- static public var space:Space;
- static public var prop:Properties;
- private var mPlayer:Body;
- public function Main()
- {
- new Boot(); // <---- Necessary for Nape (or any other haXe library)
- if (stage) init();
- else addEventListener(Event.ADDED_TO_STAGE, init);
- }
- private function init(e:Event = null):void
- {
- removeEventListener(Event.ADDED_TO_STAGE, init);
- space = new UniformSleepSpace(new AABB(0,0,800,600),15);
- var material:Material = new Material(1, 1, 100, 1);
- //create NAPE text representation
- var tf:TextFormat = new TextFormat();
- tf.bold = true;
- tf.font = "Verdana";
- tf.size = 35;
- var text:TextField = new TextField();
- text.text = "NAPE";
- text.setTextFormat(tf);
- text.autoSize = TextFieldAutoSize.LEFT;
- var bit:BitmapData = new BitmapData(int(text.width), int(text.height), false, 0xffffff);
- bit.draw(text);
- //MASSIVE air resistance
- prop = new Properties(0.005, 0.005);
- var b:Body;
- for (var x:uint = 0; x < bit.width; x++)
- {
- for (var y:uint = 0; y < bit.height; y++)
- {
- if ((bit.getPixel(x, y) & 0xff) < 0x80)
- {
- space.addObject(b = Tools.createBox(20 + x * 7, 120 + y * 7, 7, 7, 0, 0, 0, true, Material.Ice, 1, 0, prop));
- addChild(b.graphic);
- }
- }
- }
- //set graphical quality to medium
- stage.quality = StageQuality.MEDIUM;
- stage.frameRate = 60;
- stage.scaleMode = StageScaleMode.NO_SCALE;
- stage.align = StageAlign.TOP_LEFT;
- space.addObject(mPlayer = Tools.createBox(0, 0, 14, 14, 0, 0, 0, false, Material.Ice, 1, 0, prop));
- addChild(mPlayer.graphic);
- mPlayer.stopRotation();
- //set up events
- addEventListener(Event.ENTER_FRAME, onEnterFrame);
- //stage.addEventListener(MouseEvent.MOUSE_DOWN, mdown);
- stage.addEventListener(KeyboardEvent.KEY_DOWN, keydown);
- stage.addEventListener(KeyboardEvent.KEY_UP, keyup);
- }
- private function onEnterFrame(e:Event):void {
- var velx:int = 0;
- var vely:int = 0;
- if (this.kLt) {
- velx -= 100;
- }
- if (this.kRt) {
- velx += 100;
- }
- if (this.kUp) {
- vely -= 100;
- }
- if (this.kDn) {
- vely += 100;
- }
- mPlayer.vx = velx;
- mPlayer.vy = vely;
- //mPlayer.setVel( velx, vely);
- space.wakeObject(mPlayer);
- space.step(1/60, 1,1);
- }
- private function keyup(keyEvent:KeyboardEvent) {
- switch(keyEvent.keyCode){
- case Keyboard.LEFT:
- kLt = false;
- break;
- case Keyboard.RIGHT:
- kRt = false;
- break;
- case Keyboard.UP:
- kUp = false;
- break;
- case Keyboard.DOWN:
- kDn = false;
- break;
- }
- }
- private function keydown(keyEvent:KeyboardEvent) {
- switch(keyEvent.keyCode){
- case Keyboard.LEFT:
- kLt = true;
- break;
- case Keyboard.RIGHT:
- kRt = true;
- break;
- case Keyboard.UP:
- kUp = true;
- break;
- case Keyboard.DOWN:
- kDn = true;
- break;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement