/**
* Copyright Pyr0Byt3 ( http://wonderfl.net/user/Pyr0Byt3 )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/wooy
*/
package {
import flash.display.*;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
[SWF(width="450", height="450", frameRate="30", backgroundColor="0xffffff")]
public class Platformer extends Sprite {
private var maxSpeed:Number = 10;
private var gravity:Number = 0;
private var acceleration:Number = 1;
private var friction:Number = 0.75; //less is more
private var gridSize:Number = 50;
private var map1:Array = [[ 0, 0, 0, 0, 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0, 0, 0, 0, 1],
[ 0, 0, 0, 0, 0, 0, 0, 1, 1],
[ 0, 0, 0, 0, 0, 0, 1, 1, 1],
[ 0, 0, 0, 0, 0, 1, 1, 1, 1],
[ 1, 1, 1, 1, 1, 1, 1, 1, 1]];
private var currentMap:Array = map1;
private var player:MovieClip = new MovieClip();
private var keys:Array = [false, false, false, false]; //up, down, left, right
public function Platformer() {
init();
}
private function init():void {
drawMap(map1, 1, 0);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
}
public function onEnterFrame(e:Event):void {
if (Math.abs(player.xVel) < maxSpeed){
if (keys[0]) {
player.yVel -= acceleration;
}
if (keys[1]) {
player.yVel += acceleration;
}
if (keys[2]) {
player.xVel -= acceleration;
}
if (keys[3]) {
player.xVel += acceleration;
}
}
if (!(keys[0] || keys[1] || keys[2] || keys [3])) {
player.xVel *= friction;
}
player.yVel += gravity;
player.x += player.xVel;
player.y += player.yVel;
}
public function onKeyDown(e:KeyboardEvent):void {
switch (e.keyCode) {
case Keyboard.UP :
keys[0] = true;
break;
case Keyboard.DOWN :
keys[1] = true;
break;
case Keyboard.LEFT :
keys[2] = true;
break;
case Keyboard.RIGHT :
keys[3] = true;
break;
default :
break;
}
}
public function onKeyUp(e:KeyboardEvent):void {
switch (e.keyCode) {
case Keyboard.UP :
keys[0] = false;
break;
case Keyboard.DOWN :
keys[1] = false;
break;
case Keyboard.LEFT :
keys[2] = false;
break;
case Keyboard.RIGHT :
keys[3] = false;
break;
default :
break;
}
}
public function applyGravity(thing:Sprite):void {
//thing.y
}
public function drawMap(mapArray:Array, playerXTile:Number, playerYTile:Number):void {
while (numChildren > 0) {
removeChildAt(0);
}
for (var i:Number = 0; i < mapArray[0].length; i++) {
for (var j:Number = 0; j < mapArray.length; j++) {
if (currentMap[j][i] == 1) {
var level:Sprite = new Sprite();
var solidTile:Sprite = new Sprite();
solidTile.graphics.beginFill(0x000000);
solidTile.graphics.drawRect(0, 0, gridSize, gridSize);
solidTile.graphics.endFill();
solidTile.x = i * gridSize;
solidTile.y = j * gridSize;
level.addChild(solidTile);
addChild(level);
}
}
}
player.graphics.beginFill(0xff0000);
player.graphics.drawRect(0, 0, 25, 50);
player.graphics.endFill();
player.x = playerXTile * gridSize;
player.y = playerYTile * gridSize;
player.xVel = 0;
player.yVel = 0;
addChild(player);
}
}
}