Advertisement
Guest User

Untitled

a guest
Sep 17th, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. package
  3. {
  4.     import flash.Boot;
  5.     import flash.display.BitmapData;
  6.     import flash.display.Sprite;
  7.     import flash.display.StageAlign;
  8.     import flash.display.StageQuality;
  9.     import flash.display.StageScaleMode;
  10.     import flash.events.Event;
  11.     import flash.events.KeyboardEvent;
  12.     import flash.events.MouseEvent;
  13.     import flash.text.TextField;
  14.     import flash.text.TextFieldAutoSize;
  15.     import flash.text.TextFormat;
  16.     import flash.ui.Keyboard;
  17.  
  18.     import nape.geom.*;
  19.     import nape.phys.*;
  20.     import nape.space.*;
  21.     import nape.util.*;
  22.  
  23.     [SWF(width="800", height="600", backgroundColor="#ffffff")]
  24.  
  25.     public class Main extends Sprite
  26.     {
  27.         private var kUp:Boolean = false;
  28.         private var kDn:Boolean = false;
  29.         private var kLt:Boolean = false;
  30.         private var kRt:Boolean = false;
  31.         static public var space:Space;
  32.         static public var prop:Properties;
  33.         private var mPlayer:Body;
  34.         public function Main()
  35.         {
  36.             new Boot(); // <---- Necessary for Nape (or any other haXe library)
  37.             if (stage) init();
  38.             else addEventListener(Event.ADDED_TO_STAGE, init);
  39.         }
  40.  
  41.         private function init(e:Event = null):void
  42.         {
  43.             removeEventListener(Event.ADDED_TO_STAGE, init);
  44.  
  45.             space = new UniformSleepSpace(new AABB(0,0,800,600),15);
  46.             var material:Material = new Material(1, 1, 100, 1);
  47.             //create NAPE text representation
  48.             var tf:TextFormat = new TextFormat();
  49.             tf.bold = true;
  50.             tf.font = "Verdana";
  51.             tf.size = 35;
  52.  
  53.             var text:TextField = new TextField();
  54.             text.text = "NAPE";
  55.             text.setTextFormat(tf);
  56.             text.autoSize = TextFieldAutoSize.LEFT;
  57.             var bit:BitmapData = new BitmapData(int(text.width), int(text.height), false, 0xffffff);
  58.             bit.draw(text);
  59.  
  60.             //MASSIVE air resistance
  61.             prop = new Properties(0.005, 0.005);
  62.  
  63.             var b:Body;
  64.             for (var x:uint = 0; x < bit.width; x++)
  65.             {
  66.                 for (var y:uint = 0; y < bit.height; y++)
  67.                 {
  68.                     if ((bit.getPixel(x, y) & 0xff) < 0x80)
  69.                     {
  70.                         space.addObject(b = Tools.createBox(20 + x * 7, 120 + y * 7, 7, 7, 0, 0, 0, true, Material.Ice, 1, 0, prop));
  71.                         addChild(b.graphic);
  72.                     }
  73.                 }
  74.             }
  75.  
  76.            
  77.            
  78.             //set graphical quality to medium
  79.             stage.quality = StageQuality.MEDIUM;
  80.             stage.frameRate = 60;
  81.             stage.scaleMode = StageScaleMode.NO_SCALE;
  82.             stage.align = StageAlign.TOP_LEFT;
  83.            
  84.             space.addObject(mPlayer = Tools.createBox(0, 0, 14, 14, 0, 0, 0, false, Material.Ice, 1, 0, prop));
  85.             addChild(mPlayer.graphic);
  86.            
  87.             mPlayer.stopRotation();
  88.             //set up events
  89.             addEventListener(Event.ENTER_FRAME, onEnterFrame);
  90.             //stage.addEventListener(MouseEvent.MOUSE_DOWN, mdown);
  91.             stage.addEventListener(KeyboardEvent.KEY_DOWN, keydown);
  92.             stage.addEventListener(KeyboardEvent.KEY_UP, keyup);
  93.         }
  94.  
  95.    
  96.  
  97.        
  98.        
  99.        
  100.         private function onEnterFrame(e:Event):void {
  101.             var velx:int = 0;
  102.             var vely:int = 0;
  103.             if (this.kLt) {
  104.                 velx -= 100;
  105.             }
  106.             if (this.kRt) {
  107.                 velx += 100;
  108.             }
  109.             if (this.kUp) {
  110.                 vely -= 100;
  111.             }
  112.             if (this.kDn) {
  113.                 vely += 100;
  114.             }
  115.             mPlayer.vx = velx;
  116.             mPlayer.vy = vely;
  117.            //mPlayer.setVel( velx, vely);
  118.             space.wakeObject(mPlayer);
  119.  
  120.    
  121.             space.step(1/60, 1,1);
  122.         }
  123.        
  124.        
  125.  
  126.  
  127.  
  128.        
  129.         private function keyup(keyEvent:KeyboardEvent) {
  130.             switch(keyEvent.keyCode){
  131.                 case Keyboard.LEFT:
  132.                     kLt = false;
  133.                     break;
  134.                 case Keyboard.RIGHT:
  135.                     kRt = false;
  136.                     break;
  137.                 case Keyboard.UP:
  138.                     kUp = false;
  139.                     break;
  140.                 case Keyboard.DOWN:
  141.                     kDn = false;
  142.                     break;
  143.             }
  144.         }
  145.        
  146.         private function keydown(keyEvent:KeyboardEvent) {
  147.             switch(keyEvent.keyCode){
  148.                 case Keyboard.LEFT:
  149.                     kLt = true;
  150.                     break;
  151.                 case Keyboard.RIGHT:
  152.                     kRt = true;
  153.                     break;
  154.                 case Keyboard.UP:
  155.                     kUp = true;
  156.                     break;
  157.                 case Keyboard.DOWN:
  158.                     kDn = true;
  159.                     break;
  160.             }
  161.         }
  162.     }
  163. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement