删除对象不消失和2025错误,as3

时间:2014-06-12 02:15:02

标签: actionscript-3 flash

我正在尝试在网格地图上制作基于回合制的策略游戏。为了移动您的特征,我正在使用点击检测来查看玩家想要的方向。我正在使用的代码删除旧对象,我认为,将新对象添加到右侧的一个空格中。问题是当我移除对象时,对象的图像保持在它开始的位置,而实际对象重新出现在正确的位置。然后,当我再次尝试时,闪光灯会抛出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循环变量。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

问题出在这一行:this.removeChild(sarray[s][0])。并且错误说明了一切: ArgumentError:错误#2025:提供的DisplayObject必须是调用者的子项,这意味着sarray[s][0]不是this的子项。我们不知道为什么没有神奇的方式来告诉你原因,但是如果你解决了这个问题就会解决问题:)