我試圖從舞臺上刪除此項目並不斷收到此錯誤。代碼似乎工作和對象被刪除,但遊戲似乎有點兒車。我不斷收到'ArgumentError:錯誤#2025:提供的DisplayObject必須是調用者的子節點'內部計時器事件
以下是完整的錯誤:「引發ArgumentError:錯誤#2025:提供的DisplayObject必須是調用者的子 在flash.display使用::級DisplayObjectContainer/removeChild之() 在JumpingGame/onTick2()[E:\文件夾\文件夾\文件夾\文件夾\ JumpingGame.as:95] 在flash.utils ::定時器/ _timerDispatch() 在flash.utils ::定時器/蜱()」
錯誤指向:
- removeChild(enemy)
- removeChild之(腿);
- removeChild(life);
我也越來越:「類型錯誤:錯誤#1009:無法訪問空對象引用的屬性或方法」在這條線上theLives.text = liveLives.toString();
這裏是我的代碼:
package
{
import flash.display.MovieClip;
import flash.utils.Timer;
import flash.events.TimerEvent;
public class JumpingGame extends MovieClip
{
public var army:Array;
public var powerups:Array;
public var pluslives:Array;
public var newDoodle:doodle;
public var enemyTimer:Timer;
public var legTimer:Timer;
public var lifeTimer:Timer;
public function JumpingGame()
{
enemyTimer = new Timer(40);
enemyTimer.addEventListener(TimerEvent.TIMER, onTick);
enemyTimer.start();
legTimer = new Timer(20);
legTimer.addEventListener(TimerEvent.TIMER, onTick2);
legTimer.start();
lifeTimer = new Timer(30);
lifeTimer.addEventListener(TimerEvent.TIMER, onTick3);
lifeTimer.start();
army = new Array();
var newEnemy = new Enemy(100, -15);
army.push(newEnemy);
addChild(newEnemy);
powerups = new Array();
var newLeg = new Leg(300, -15);
powerups.push(newLeg);
addChild(newLeg);
pluslives = new Array();
var newLife = new Plus1(300, -15);
pluslives.push(newLife);
addChild(newLife);
newDoodle = new doodle();
addChild(newDoodle);
newDoodle.y = stage.stageHeight - 50;
newDoodle.x = stage.stageWidth/2;
}
public function onTick(timerEvent:TimerEvent):void
{
if (Math.random() <0.005)
{
var randomX:Number = Math.random() * 320;
var newEnemy:Enemy = new Enemy(randomX, -15);
army.push(newEnemy);
addChild(newEnemy);
}
for each (var enemy:Enemy in army)
{
enemy.moveDownABit();
if (newDoodle.hitTestObject(enemy))
{
//gotoAndPlay ("Game Over");
removeChild(enemy);
liveLives -= 1;
theLives.text = liveLives.toString();
}
}
}
public function onTick2(timerEvent:TimerEvent):void
{
if (Math.random() <0.008)
{
var randomX2:Number = Math.random() * 320;
var newLeg:Leg = new Leg(randomX2, -15);
powerups.push(newLeg);
addChild(newLeg);
}
for each (var leg:Leg in powerups)
{
leg.moveDownABit2();
if (newDoodle.hitTestObject(leg))
{
//gotoAndPlay ("Game Over");
removeChild(leg);
liveScore += 2000;
theScore.text = liveScore.toString();
}
}
}
public function onTick3(timerEvent:TimerEvent):void
{
if (Math.random() <0.001)
{
var randomX3:Number = Math.random() * 320;
var newLife:Plus1 = new Plus1(randomX3, -15);
pluslives.push(newLife);
addChild(newLife);
}
for each (var life:Plus1 in pluslives)
{
life.moveDownABit3();
if (newDoodle.hitTestObject(life))
{
//gotoAndPlay ("Game Over");
removeChild(life);
liveLives += 1;
theLives.text = liveLives.toString();
}
}
}
}
}
你在哪裏初始化 「liveLives」 變量? – Mana
我在我的時間軸代碼中有我的liveLives變量,現在我已經將它作爲公共變量移動到了類中,它似乎完成了這項工作 – Ceejay1705
當我有類似的錯誤時,我初始化變量,在你的情況下,敵人'Enemy'類型,'Plus1'類型的生命本身並且錯誤似乎消失。嘗試添加'public var enemy:Enemy;','public var leg:Leg;'以及您在循環參數中初始化的所有其他類型以及類的其他成員聲明,並告訴我它是否有效。 – Mana