私は ActionScript 3 に非常に慣れていませんが、小さな「戦車」のようなシューティング ゲームを徐々に構築してきました。今は弾丸射撃を追加するところです。これを行うために、新しい AS3 クラスを作成し、などをインポートしましたが、ゲームを実行するとエラーが発生します:
未定義の可能性があるメソッドの呼び出し
turretShot
なぜこれが起こるのかを知るのを手伝ってください。このエラーは私のコンパイラ エラーに 2 回表示され、その行は非常に似ています。影響を受けるコードの部分は次のとおりです。
shotTurret.as (クラスファイル)
package resources
{
import flash.display.*;
import flash.events.*;
public class turretShot extends MovieClip
{
var enemy_mc:MovieClip;
public function turretShot(enemy_mc:MovieClip)
{
var xSpeed:Number;
var ySpeed:Number;
var angle:Number;
public var shotSpeed:Number;
speed = 30;
var gravity:Number = 1;
var thisShot:MovieClip;
var platform1_mc:MovieClip;
var platform2_mc:MovieClip;
var thisParent: *;
enemy_mc = enemy;
this.addEventListener(Event.ADDED, initialize);
}
function initialize(event:Event):void
{
this.addEventListener(Event.ENTER_FRAME, moveShot);
thisParent = event.currentTarget.parent;
platform1_mc = thisParent.platform1_mc;
platform2_mc = thisParent.platform2_mc;
thisShot = MovieClip(this.parent.getChildByName(this.name));
angle = this.rotation / 180 * Math.PI;
xSpeed = Math.cos(angle) * speed;
ySpeed = Math.sin(angle) * speed;
}
function moveShot(event:Event):void
}
}
これを必要なフレームのゲーム .FLA actionscript にインポートしました。
import resources.*;
私のクラスファイルはゲームのディレクトリの「リソース」フォルダにあります。
さて、これらのエラーをスローしているコードの 2 つのセクション...それらと関係があるのか 、クラスだけなのかはわかりませんが、次のとおりです。
(4 行目)
var shot_mc:MovieClip;
if (keyPressed == Keyboard.SPACE && spaceKeyDown == false)
{
shot_mc = new turretShot(enemy_mc);
shot_mc.x = user_mc.x + user_mc.turret_mc.x;
shot_mc.y = user_mc.y + user_mc.turret_mc.y;
shot_mc.rotation = user_mc.turret_mc.rotation;
addChild(shot_mc);
spaceKeyDown = true;
}
そして(最初の行):
var shot_mc:MovieClip = new turretShot(user_mc);
shot_mc.x = enemy_mc.x + enemy_mc.enemyTurret_mc.x;
shot_mc.y = enemy_mc.y + enemy_mc.enemyTurret_mc.y;
shot_mc.rotation = enemyTargetRotation;
shot_mc.speed = Math.random() * 15 + 15;
addChild(shot_mc);
どんな助けでも大歓迎です。