我正在尝试在网格地图上制作基于回合制的策略游戏。为了移动您的特征,我正在使用点击检测来查看玩家想要的方向。我正在使用的代码删除旧对象,我认为,将新对象添加到右侧的一个空格中。问题是当我移除对象时,对象的图像保持在它开始的位置,而实际对象重新出现在正确的位置。然后,当我再次尝试时,闪光灯会抛出2025错误。这是代码。
if(s == 0){
sarray[s] = [main, maincharacter, mc, 3]
enemyiden = "gwr"
}
else if(s == 1){
sarray[s] = [mcaxe, mainaxe, mcaxeman, 3]
enemyiden = "gar"
}
else if(s == 2){
sarray[s] = [mchorse, maincav, mccavalry, 5]
enemyiden = "gcr"
}
for(var g:int = 0; g < tilepositions.xcoords.length; g++){
if(tilepositions.xcoords[g] == Allies[s][0] - 12.5){
break
}
}
for(var h:int = 0; h < tilepositions.ycoords.length; h++){
if(tilepositions.ycoords[h] == Allies[s][1] - 12.5){
break
}
}
if(mouseX < Allies[s][0] && Math.abs(mouseX - Allies[s][0]) < 37.5 && Math.abs(mouseY - Allies[s][1]) < 12.5 ){
trace("test1")
this.removeChild(sarray[s][0])
sarray[s][0] = new Sprite
this.addChild(sarray[s][0])
trace(this.contains(sarray[s][0]))
sarray[s][1] = new sarray[s][2]
sarray[s][0].addChild(sarray[s][1])
sarray[s][0].x = tilepositions.xcoords[g-1]
sarray[s][0].y = tilepositions.ycoords[h]
Allies[s][0] = sarray[s][0].x + 12.5
movecurr[s] += 1
break
}
“s”是向上计数的for循环变量。任何帮助将不胜感激。
答案 0 :(得分:0)
问题出在这一行:this.removeChild(sarray[s][0])
。并且错误说明了一切: ArgumentError:错误#2025:提供的DisplayObject必须是调用者的子项,这意味着sarray[s][0]
不是this
的子项。我们不知道为什么没有神奇的方式来告诉你原因,但是如果你解决了这个问题就会解决问题:)