私はフラッシュAS3プラットフォーマーゲームを作っていますが、実際には新しいクラスシステムに「弾丸」(ショット)を追加した後(それまでクラスを使用していませんでした)、まったく解決できなかったエラーがあります: TypeError:エラー#1010:用語が未定義であり、プロパティがありません。
これが変数値を暗示する一般的なエラーであることはわかっていますが、実際にはどこから来たのかわかりませんでした。
これをメインのタイムラインコードに追加すると、問題が発生しました。
function Shoot():void {
var directionPerso:String;
if(perso.scaleX < 0){
directionPerso = "gauche";
} else if(perso.scaleX > 0){
directionPerso = "droite";
}
var tir:rayon = new rayon(perso.x - scrollX, perso.y - scrollY, directionPerso);
stage.addChild(tir);
}
そしてこれは私のクラスファイル用です:
package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.display.Sprite;
public class rayon extends MovieClip{
private var vitesse:int = 10; //Vitesse du déplacement du rayon, fonction privée car tout le programme n'a pas besoin de connaitre cette valeur
private var xInitial:int;
public function effacer():void
{
removeEventListener(Event.ENTER_FRAME, loop);
this.parent.removeChild(this);
}
public function rayon(persoX:int, persoY:int, directionPerso:String) {
// constructor code
if(directionPerso == "gauche") { //Ce qui se passe si la direction du joueur est "gauche", la balle part de la position du joueur, à gauche
vitesse = -10;
x = persoX - 25;
}
else if(directionPerso == "droite") { //Ce qui se passe si la direction du joueur est "droite", la balle part de la position du joueur, à droite
vitesse = 10;
x = persoX + 25
}
y = persoY - 75;
xInitial = x;
addEventListener(Event.ENTER_FRAME, loop); //Toujours pour avoir un programme bien plus fluide
}
public function loop(e:Event):void{ //Dans une nouvelle fonction publique je crée le mouvement du rayon, relatif à la variable de vitesse créée plus haut
x += vitesse;
if(vitesse > 0) { //Si le rayon va vers la droite
if(x > xInitial + 450) { //Le tir disparait au bout de 450px
effacer();
}
} else {
if(x < xInitial - 450) { //Quand la cartouche va vers la gauche...
effacer(); //Elle disparait au bout de 450px
}
}
}
誰かがこれを手伝ってくれますか?ありがとうございました!