我遇到了这个问题,根本无法解决
我正在为 uni 制作平台游戏
我有 2 个文件
flashgame.fla 和 Coin.as(这是 Coin 类的代码)
我有代码说明一旦玩家收集了所有硬币,帧将从第 1 帧变为第 2 帧。当我这样做时,我会收到此消息
TypeError:错误 #1009:无法访问空对象引用的属性或方法。在 Coin/update() 类型错误:错误 #1009:无法访问空对象引用的属性或方法。在 flashgame_fla::MainTimeline/loop()
我试过 Try and Catch 和其他各种东西
我认为这样做是因为 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 都带有屏幕截图