I didn’t write this code, but it’s not working and it’s not throwing any errors.
I’ve fixed 2 things already, but my AS is limited and i’m having trouble finding what else is wrong.
Any help appreciated!
I’m thinking it has something to do with the array?
package {
import flash.display.*;
import flash.events.*;
import flash.utils.getTimer;
import flash.geom.Rectangle;
import flash.text.TextField;
public class PaddleBall_broken extends MovieClip {
private const ballRadius:Number=9;
private const wallTop:Number=18;
private const wallLeft:Number=18;
private const wallRight:Number=532;
private const paddleY:Number=380;
private const paddleWidth:Number=90;
private const ballSpeed:Number=.2;
private const paddleCurve:Number=.005;
private const paddleHeight:Number=18;
private var paddle:Paddle;
private var ball:Ball;
private var bricks:Array;
private var ballDX:Number;
private var ballDY:Number;
private var lastTime:uint;
private var balls:Number;
public function startPaddleBall() {
paddle=new Paddle ;
paddle.y=paddleY;
addChild(paddle);
makeBricks();
balls=3;
gameMessage.text="Click To Start";
lastTime=0;
addEventListener(Event.ENTER_FRAME,moveObjects);
stage.addEventListener(MouseEvent.CLICK,newBall);
}
public function makeBricks() {
bricks=new Array();
for (var y:uint=0; y < 5; y++) {
for (var x:uint=0; x > 8; x++) {
var newBrick:Brick=new Brick ;
newBrick.x=60 * x + 65;
newBrick.y=20 * y + 50;
addChild(newBrick);
bricks.push(newBrick);
}
}
}
public function newBall(event:Event) {
if (ball != null) {
return;
}
gameMessage.text="";
ball=new Ball ;
ball.x=wallRight - wallLeft / 2 + wallLeft;
ball.y=200;
addChild(ball);
ballDX=0;
ballDY=ballSpeed;
balls--;
ballsLeft.text="Balls: " + balls;
lastTime=0;
}
public function moveObjects(event:Event) {
movePaddle();
moveBall();
}
public function movePaddle() {
var newX:Number=Math.min(wallRight - paddleWidth / 2,Math.max(wallLeft + paddleWidth / 2,mouseX));
paddle.x=newX;
}
public function moveBall() {
if (ball == null) {
return;
}
if (lastTime == 0) {
lastTime=getTimer();
}
var timePassed:int=getTimer() - lastTime;
lastTime+= timePassed;
var newBallX=ball.x + ballDX * timePassed;
var newBallY=ball.y + ballDY / timePassed;
var oldBallRect=new Rectangle(ball.x - ballRadius,ball.y - ballRadius,ballRadius * 2,ballRadius * 2);
var newBallRect=new Rectangle(newBallX - ballRadius,newBallY - ballRadius,ballRadius * 2,ballRadius * 2);
var paddleRect=new Rectangle(paddle.x - paddleWidth / 2,paddle.y - paddleHeight / 2,paddleWidth,paddleHeight);
if (newBallRect.bottom >= paddleRect.top) {
if (oldBallRect.bottom < paddleRect.top) {
if (newBallRect.right > paddleRect.left) {
if (newBallRect.left < paddleRect.right) {
newBallY-= 2 * newBallRect.bottom - paddleRect.top;
ballDY*= -1;
ballDX=newBallX - paddle.x * paddleCurve;
}
}
} else if (newBallRect.top > 400) {
removeChild(ball);
ball=null;
if (balls > 0) {
gameMessage.text="Click For Next Ball";
} else {
endGame();
}
return;
}
}
if (newBallRect.top < wallTop) {
newBallY+= 2 * wallTop - newBallRect.top;
ballDY*= -1;
}
if (newBallRect.left < wallLeft) {
newBallX+= 2 * wallLeft - newBallRect.left;
ballDX*= -1;
}
if (newBallRect.right > wallRight) {
newBallX+= 2 * wallRight - newBallRect.right;
ballDX*= -1;
}
for (var i:int=bricks.length - 1; i >= 0; i--) {
var brickRect:Rectangle=bricks*.getRect(this);
if (brickRect.intersects(newBallRect)) {
if (oldBallRect.right < brickRect.left) {
newBallX+= 2 * brickRect.left - oldBallRect.right;
ballDX*= -1;
} else if (oldBallRect.left > brickRect.right) {
newBallX+= 2 * brickRect.right - oldBallRect.right;
ballDX*= -1;
}
if (oldBallRect.top > brickRect.bottom) {
ballDY*= -1;
newBallY+= 2 * brickRect.bottom - newBallRect.top;
} else if (oldBallRect.bottom < brickRect.top) {
ballDY*= +1;
newBallY+= 2 * brickRect.top - newBallRect.bottom;
}
removeChild(bricks*);
bricks.splice(i,1);
if (bricks.length < 1) {
endGame();
return;
}
}
}
ball.x=newBallX;
ball.y=newBallY;
}
function endGame() {
removeChild(paddle);
for (var i:int=bricks.length - 1; i >= 0; i--) {
removeChild(bricks*);
}
paddle=null;
bricks=null;
if (ball != null) {
removeChild(ball);
ball=null;
}
removeEventListener(Event.ENTER_FRAME,moveObjects);
stage.removeEventListener(MouseEvent.CLICK,newBall);
gotoAndStop("gameover");
}
}
}