私はこの問題を抱えており、まったく回避できません
大学向けのプラットフォームゲームを作っています
私は2つのファイルを持っています
flashgame.fla と Coin.as (これは Coin クラスのコードです)
プレーヤーがすべてのコインを収集すると、フレームがフレーム 1 からフレーム 2 に変わることを示すコードがあります。このメッセージを受け取ると、
TypeError: エラー #1009: null オブジェクト参照のプロパティまたはメソッドにアクセスできません。Coin/update() で TypeError: エラー #1009: null オブジェクト参照のプロパティまたはメソッドにアクセスできません。flashgame_fla::MainTimeline/loop() で
トライアンドキャッチとかいろいろやってみた
これは、Coin.as が MovieClip を拡張するため、次のフレームに移動するときに、何もないときにまだコインを見つけようとしているためだと思います。
これが Coin.as のコードです
package {
import flash.display.MovieClip;
import flash.events.*;
public class Coin extends MovieClip {
var player:MovieClip;
var mainTimeLine = MovieClip(root);
public function Coin() {
this.addEventListener(Event.ENTER_FRAME, update);
}
function update(event:Event):void
{
player=MovieClip(root).player;
if(this.hitTestObject(player))
{
this.removeEventListener(Event.ENTER_FRAME, update);
parent.removeChild(this);
mainTimeLine.coinCount++;
}
}
}
}
ゲーム内のすべてのコインを記録する flashgame.fla に配列があります。プレイヤーがそれらをヒットすると、それらは配列から接合されます。フレーム 2 に移動するときにも問題が発生する可能性があります
flashgame.fla の重要な要素
var coin:Array = new Array();
for (i=0; i<numChildren; i++)
{
if (getChildAt(i) is Coin)
{
coin.push(getChildAt(i).getRect(this));
}
}
スプライシングコイン
for (i=0; i<coin.length; i++)
{
if (player.getRect(this).intersects(coin[i]))
{
coinSnd.play();
coin.splice(i,1);
}
}
私からさらに何かが必要な場合は、お問い合わせください:)スクリーンショット付きのすべてのg