Hi,
Im kinda new with AS3. I’m trying to make a platform game. The key movement works fine and smooth. When i add another moving object to my stage the frame rate drops, its still playable. But it doesnt play very well.
Is there a way to solve this problem? Thanks in advance.
Here is my code:
package {
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
public class Character extends Sprite {
private var ball:Sprite;
private var ground:Sprite;
private var block:Sprite;
private var gravity:Number=0;
private var vx:Number=0;
private var ax:Number=0;
private var vy:Number=0;
private var ay:Number=0;
private var speed:Number=0;
private var friction:Number=0.8;
private var jump:Boolean=true;
private var left:Boolean=true;
private var right:Boolean=true;
private var run:Boolean=false;
private var count:Number = -1;
public function Character() {
init();
}
public function init():void {
ground = new Ground();
addChild(ground);
ground.y=stage.stageHeight-20;
block = new Block();
addChild(block);
block.y= 500;
ball = new Ball();
addChild(ball);
run=false;
left=false;
right=false;
ball.x=stage.stageWidth/2;
ball.y=50;
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyIsDown);
stage.addEventListener(KeyboardEvent.KEY_UP, onKeyIsUp);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
addEventListener(Event.ENTER_FRAME, hitTest);
}
public function hitTest(event:Event):void {
if (ball.hitTestObject(ground)) {
gravity=0;
ay=0;
ball.y=ground.y-ball.height/2;
jump=true;
} else {
jump=false;
gravity=3;
}
if(ball.hitTestObject(block)){
gravity=0;
ay=0;
ball.y=block.y-ball.height/2;
ball.x += speed;
jump=true;
}
}
public function onKeyIsDown(event:KeyboardEvent):void {
switch (event.keyCode) {
case Keyboard.SPACE :
if(left == true){
ax=-10;
}
else if(right == true){
ax = 5;
}
else{
run=true;
}
break;
case Keyboard.LEFT :
if (run==true) {
ax=-10;
} else {
left = true;
right = false;
ax=-5;
}
break;
case Keyboard.RIGHT :
if (run==true) {
ax=10;
} else {
right = true;
left = false;
ax=5;
}
break;
case Keyboard.UP :
if (jump==true) {
ay+=-2.2;
vy=-20;
break;
}
default :
break;
}
}
public function onKeyIsUp(event:KeyboardEvent):void {
switch (event.keyCode) {
case Keyboard.SPACE :
run=false;
left=false;
right=false;
break;
case Keyboard.LEFT :
left=false;
ax=0;
break;
case Keyboard.RIGHT :
right=false;
ax=0;
break;
case Keyboard.UP :
ay=0;
break;
default :
break;
}
}
public function onEnterFrame(event:Event):void {
vy+=gravity;
vy+=ay;
vx+=ax;
vx*=friction;
ball.y+=vy;
ball.x+=vx;
block.x += speed;
speed = 2;
}
}
}