Animate CC and AS3 Animate CC and AS3 Error # 1010
I am coding a Marble Maze with accelerometer. Here is my code.
package {
import flash.display.*;
import flash.events.*;
import flash.text.*;
import flash.geom.*;
import flash.utils.getTimer;
import flash.sensors.Accelerometer;
import flash.media.Sound;
import flash.media.SoundChannel;
public class MarbleMaze_sanJ01 extends MovieClip {
// Constantes
static const speed:Number = .3;
static const marbleSize:Number = 20;
static const holeDist:Number = 5;
static const mapRect:Rectangle = new Rectangle(2, 2, 1918, 1078);
//Objet du jeu
private var blocks:Array;
//Objet accelerometer
private var accelerometer:Object;
//Variables du jeu
private var dx,dy:Number;
private var lastTime:int;
// Démarer la partie
public function startMarbleMaze_sanJ01() {
// Recuperer les blocks
findBlocks();
//définir le mouv de départ
dx = 0.0;
dy = 0.0;
// Ajouter des écouteur
this.addEventListener(Event.ENTER_FRAME,gameLoop);
//configurer l'accelerometre ou simuler avec fleche
if (Accelerometer.isSupported){
accelerometer = new Accelerometer();
accelerometer.addEventListener(AccelerometerEvent.UPDATE,
accelerometerHandler);
} else {
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownFunction);
stage.addEventListener(KeyboardEvent.KEY_UP, keyUpFunction);
stage.focus = stage;
}
} // Fin fonction start
public function findBlocks() {
blocks = new Array();
for(var i=0;i<gameSprite.numChildren;i++) {
var mc = gameSprite.getChildAt(i);
if (mc is Block) {
blocks.push(mc);
}
}
} //Fin function findblock
//jeu01
private function accelerometerHandler(e) {
dx = -e.accelerationX;
dy = e.accelerationY;
}
//si pas accelometer pour test avec fleches clavier
public function keyDownFunction(event:KeyboardEvent) {
if (event.keyCode == 37) {
dx = -.5;
} else if (event.keyCode == 39) {
dx = .5;
} else if (event.keyCode == 38) {
dy = -.5;
} else if (event.keyCode == 40) {
dy = .5;
}
} // fin fonction keydown
public function keyUpFunction(event:KeyboardEvent) {
if (event.keyCode == 37) {
dx = 0;
} else if (event.keyCode == 39) {
dx = 0;
} else if (event.keyCode == 38) {
dy = 0;
} else if (event.keyCode == 40) {
dy = 0;
}
} // fin fonction keyup
public function gameLoop(event:Event) {
// Calculer le temps écoulé
if (lastTime == 0) lastTime = getTimer();
var timeDiff:int = getTimer()-lastTime;
lastTime += timeDiff;
// Déplacer la bille
moveMarble(timeDiff);
//Vérifier si elle est dans le trou
if (Point.distance(new Point(gameSprite.marble.x,gameSprite.marble.y),
new Point(gameSprite.hole.x, gameSprite.hole.y)) < holeDist) {
endGame();
}
} // fin fonction gameloop
public function moveMarble(timeDiff:Number) {
//Calculer zone actuelle de la bille
var marbleRect = new Rectangle(gameSprite.marble.x-marbleSize/2,
gameSprite.marble.y-marbleSize/2, marbleSize, marbleSize);
// Calculer la nouvelle zone de la bille
var newMarbleRect = marbleRect.clone();
newMarbleRect.x += dx*speed*timeDiff;
newMarbleRect.y += dy*speed*timeDiff;
//Calculer le nouvel emplacement
var newX:Number = gameSprite.marble.x + dx*speed*timeDiff;
var newY:Number = gameSprite.marble.y + dy*speed*timeDiff;
// Parcourir en boucle les blocks et vérifier les collision
for(var i:int=0;i<blocks.length;i++) {
// Récupérer le rectangle bloc et voir les collisions
var blockRect:Rectangle = blocks.getRect(gameSprite);
if (blockRect.intersects(newMarbleRect)) {
// Recule horizontale
if (marbleRect.right <= blockRect.left) {
newX += blockRect.left - newMarbleRect.right;
dx = 0;
} else if (marbleRect.left >= blockRect.right) {
newX += blockRect.right - newMarbleRect.left;
dx = 0;
}
// recule verticale
if (marbleRect.top >= blockRect.bottom) {
newY += blockRect.bottom - newMarbleRect.top;
dy = 0;
} else if (marbleRect.bottom <= blockRect.top) {
newY += blockRect.top - newMarbleRect.bottom;
dy = 0;
}
} // Fin if
} // fin for
//définir nlle emplacment bille
gameSprite.marble.x = newX;
gameSprite.marble.y = newY;
} // fin fontion moveMarble
//Fin de la partie
public function endGame() {
blocks = null;
this.removeEventListener(Event.ENTER_FRAME,gameLoop);
if (Accelerometer.isSupported) {
accelerometer.removeEventListener(AccelerometerEvent.UPDATE,accelerometerHandler);
accelerometer = null;
} else {
stage.removeEventListener(KeyboardEvent.KEY_DOWN,keyDownFunction);
stage.removeEventListener(KeyboardEvent.KEY_UP,keyUpFunction);
}
gotoAndStop("gameover");
}// fin fonction endgame
}// Fermer class
}// Fermer package
I get the following error:
What am I doing wrong? Can you help me. Thank you in advance.
Error # 1010: A term is undefined and has no properties.
at MarbleMaze_sanJ01 / moveMarble ()
at MarbleMaze_sanJ01 / gameLoop ()
Best regard
Anne
