J'ai un problème ennuyeux. J'ai un peu googlé et je ne trouve pas vraiment de bonnes réponses, alors j'espère trouver de l'aide ici."upload" n'est pas une fonction
Je reçois cette erreur, qui semble être assez commun:
TypeError: Error #1006: update är inte en funktion. // = update is not a function (english)
at se.qmd.spaceInvaders::ShipHandler/onEnterFrame()
mise à jour est une fonction definently, donc je ne comprends vraiment pas ce que le problème est.
Ma configuration. J'utilise Flashdevelop. J'ai une classe principale, qui est définie en tant que classe de document dans mon fichier fla. J'ai une structure de package avec ma classe principale dans le dossier src, et mes sous-classes dans se.qmd.spaceInvaders et se.qmd.starLight. J'utilise également TweenMax et le garde dans la structure de paquet "normale" du dossier src.
Dans la classe principale ajouter à la scène une instance de la classe Legun - qui est aussi un « exporté » MovieClip dans le fichier fla, une instance de la classe StarHandler et une instance de la manœuvrier de classe. J'ai aussi un écouteur de clavier qui, à l'aide d'une fonction d'image, déplace mon instance de la classe LeGun. Fin, pas de problème. Le StarHandler fonctionne comme il se doit, et le ShipHandler fonctionne comme il se doit jusqu'à ce que j'appelle 1 ou 2 méthodes dans la classe Ship - qui est également un MovieClip "exporté" dans le fichier fla. La classe Ship est bien sûr la classe qui contient le Ship géré par ShipHandler.
J'inclus mes classes ShipHandler et Ship ci-dessous, et j'espère que cela ne rendra pas le post trop long. ShipHandler.as:
package se.qmd.spaceInvaders {
import flash.display.MovieClip;
import se.qmd.spaceInvaders.Ship;
import flash.display.Stage;
import flash.events.Event;
public class ShipHandler extends MovieClip {
private var _shipArray:Array = [];
private const NUM_START_SHIPS:int = 25;
private var s:Stage = null;
private var _directionX:Number = 1;
private var _directionY:Number = 1;
private var _velocityX:Number;
private var _velocityY:Number;
private const YBORDER_TOP:int = 50;
private const YBORDER_BOTTOM:int = 525;
public function ShipHandler(o:Stage) {
s = o; // tar emot stage från main
createObjects();
this.addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function createObjects():void {
for (var i:int = 0; i < NUM_START_SHIPS; i++) {
var aShip:Ship = new Ship();
aShip.x = Math.random() * (s.stageWidth - aShip.width) + aShip.width/2;
aShip.y = Math.random() * (s.stageHeight - aShip.height -135) + aShip.height/2 + 55;
this.addChild(aShip);
_shipArray.push(aShip);
aShip.startMove(Math.random(), Math.random());
}
}
private function onEnterFrame(e:Event):void {
for (var i:int = 0; i < _shipArray.length; i++) {
var aShip:Ship = _shipArray[i] as Ship;
aShip.update();
}
}
}
}
Ship.as:
package se.qmd.spaceInvaders {
import flash.display.MovieClip;
import flash.events.Event;
public class Ship extends MovieClip {
private var _directionX:Number = 1;
private var _directionY:Number = 1;
private var _velocityX:Number;
private var _velocityY:Number;
private const YBORDER_TOP:int = 50;
private const YBORDER_BOTTOM:int = 525;
public function Ship() {
//s = o; // tar emot stage
this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
}
private function onAddedToStage(e:Event):void {
removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
this.width = 50;
this.height = 18;
}
public function update():void {
// x led vänster kant
if(this.x <= this.width/2) {
this.x = this.width/2;
_directionX *= -1;
}
// x led höger kant
if(this.x >= 800 - this.width/2) {
this.x = 800 - this.width/2;
_directionX *= -1;
}
// y led top kant
if(this.y <= YBORDER_TOP + this.height/2) {
this.y = YBORDER_TOP + this.height/2;
_directionY *= -1;
}
// y led botten kant
if(this.y >= YBORDER_BOTTOM - this.height/2) {
this.y = YBORDER_BOTTOM - this.height/2;
_directionY *= -1;
}
this.x += _velocityX * _directionX;
this.y += _velocityY * _directionY;
}
public function startMove(directionX:Number, directionY:Number):void {
trace(directionX, directionY);
_velocityX = 10;
_velocityY = 10;
if (directionX < 0.5) {
_directionX = -1;
}
if (directionY < 0.5) {
_directionY = -1;
}
}
public function changeDirection():void {
_directionX *= -1;
_directionY *= -1;
}
}
}
Dès que j'appelle soit les méthodes startMove ou mise à jour de la manœuvrier, je reçois l'erreur je l'ai écrit ci-dessus. Apprécierait toute aide car il me semble que je dois faire quelque chose de fondamentalement faux ...
solution si facile Eh bien, vous apprenez de tous les erreurs :) Merci! – Poppe76