Skip to main content
Participant
May 28, 2018
Question

Animate CC and AS3 Animate CC and AS3 Error # 1010

  • May 28, 2018
  • 1 reply
  • 217 views

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

This topic has been closed for replies.

1 reply

kglad
Community Expert
Community Expert
May 28, 2018

line 117 of SanJ01.as is referencing an undefined object.