0

我有一个名为 mc 的容器,在他内部我生成了一个电影剪辑网格,以制作一堵选项墙。当我选择此选项之一时,会出现以下消息:

错误 #2025:提供的 DisplayObject 必须是调用者的子对象。

代码是:

  在 Class iniciarApp 我有这个:

       var mc:MovieClip = new MovieClip();
       var Grilla:Grilla = new Grilla();

    mc.x = 0;
    mc.y = 0;
    mc.name = "正方形";
    addChild(mc);

    Grilla.name = "烤架";
    格栅.x = mc.x;
    格栅.y = mc.y;
    mc.addChild(烧烤);


----------


   在 Grilla.as 中:

     公共类 Grilla 扩展 MovieClip {

        私有变量 boxNum:int = 48;
    私有变量 cols:int = 6;
    私有变量行:int = Math.ceil(boxNum / cols);
    私有变量 boxCount:int = 0;

    公共功能格里拉(){

           for (var py:int = 0; py < 行; py++) {

        for (var px:int = 0; px < cols; px++) {

            var caja:clip = new clip();

            caja.x = -115 + caja.width * px;
            caja.y = -150 + caja.height * py;
            caja.name = "opcion" + (py + 1);
            caja.mouseChildren = false;

            var contentText = new TextField();
            var formato = new TextFormat();
            格式.size = 14;
            contentText.defaultTextFormat = 格式;

            contentText.width = 36;
            contentText.height = 34;
            内容文本.x = -10;
            内容文本.y = -10;

            for (var u:uint = 0; u < boxNum; u++) {
                contentText.text = "" + u;
            }

            addChild(caja);
            caja.addChild(contentText);

            if (boxCount < boxNum) {

            caja.buttonMode = true;
            caja.addEventListener(MouseEvent.CLICK, seleccionarOpcion);

            }

            盒子计数++;

             }

            }

            var barra:score = new score();
            巴拉.x = 80;
            巴拉.y = -200;
            barra.puntajeTXT.text = "hola";
            addChild(巴拉);

        }


        私有函数 seleccionarOpcion(m:MouseEvent):void
        {
            TweenMax.to(MovieClip(m.target), 0.5, {scaleY: -1});
            m.target.removeEventListener(MouseEvent.CLICK, seleccionarOpcion);
            m.target.buttonMode = false;

            var opcionABuscar:字符串;
            opcionABuscar = m.currentTarget.name;


            var opt:String = opcionABuscar.substring(6);


     **[这里] 我需要删除在其他类中创建的 Grilla 实例**

        **m.currentTarget.parent.parent.removeChild(grilla);** << 这不起作用    


    var trivia:generarTrivia = 新的generarTrivia(opt);

    琐事.x = 0;
    琐事.y = 0;
    trivia.name = "琐事";
    addChild(琐事);

        }

    }


4

2 回答 2

0

试试 parent.removeChild(this);

虽然这不是最干净的方法。你最好发送一个 iniciarApp 会监听的事件。

于 2012-02-24T07:39:59.887 回答
0

从上面的代码中并不清楚对象“grilla”实际上指的是什么。

如果你想删除格栅,你可以写:

grilla.parent.removeChild(grilla);

我不确定这是否是你想要做的。如果您尝试删除刚刚单击的对象,请尝试:

m.currentTarget.parent.removeChild(m.currentTarget);

更新:好的,我明白你现在要做什么了。

您需要使用关键字“this”来引用“grilla”的当前实例。

尝试这个:

this.parent.removeChild(this);
于 2012-02-24T04:52:21.190 回答