我试图从舞台上删除此项目并不断收到此错误。代码似乎工作和对象被删除,但游戏似乎有点儿车。我不断收到'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