Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 在as3中从舞台上移除精灵_Actionscript 3 - Fatal编程技术网

Actionscript 3 在as3中从舞台上移除精灵

Actionscript 3 在as3中从舞台上移除精灵,actionscript-3,Actionscript 3,我有一个消息出现在舞台上的球员完成拖放代码。我想这个精灵被删除时,按钮是为下一帧点击。有人能帮我写代码吗 stage.addEventListener(Event.ENTER_FRAME, EntFrame); function EntFrame (e:Event):void { if (CntP1+CntP2+CntP3+CntP4+CntP5+CntP6+CntP7+CntP8 == 40) { var w:int = 400, h:int = 200;

我有一个消息出现在舞台上的球员完成拖放代码。我想这个精灵被删除时,按钮是为下一帧点击。有人能帮我写代码吗

 stage.addEventListener(Event.ENTER_FRAME, EntFrame);
 function EntFrame (e:Event):void 
  {
     if (CntP1+CntP2+CntP3+CntP4+CntP5+CntP6+CntP7+CntP8 == 40)
{
    var w:int = 400, h:int = 200;
    var win:Sprite = new Sprite();
    win.name = "Mywin";
    addChild(win);


 // draw rounded rect with subtle vertical linear gradient fill and blue stroke
    win.graphics.lineStyle(4,0x0077ff);
    var mat:Matrix = new Matrix();
    mat.createGradientBox(w, h, 90 * (Math.PI / 180));
    win.graphics.beginGradientFill(GradientType.LINEAR,[0xffffff,0xeeeeee],[1.00,1.00],[0,255],mat);
    win.graphics.drawRoundRect(0,0,w,h,15,15);

    // show center "YOU WIN!" text
    var tf:TextField = new TextField();
    tf.autoSize = TextFieldAutoSize.LEFT;
    tf.antiAliasType = AntiAliasType.ADVANCED;
    tf.defaultTextFormat = new TextFormat("Arial, Verdana",36,0x454545,true);
    tf.text = "Κέρδισες!";
    tf.selectable = false;
    win.addChild(tf);
    tf.x = w/2 - tf.width/2;
    tf.y = h/2 - tf.height/2;

    // add a drop shadow
    var dropShadow:DropShadowFilter = new DropShadowFilter(3,45,0,.35,8,8,1,3);
    win.filters = [dropShadow];

    // center the graphic
    win.x = stage.stageWidth/2 - win.width/2;
    win.y = stage.stageHeight/2 - win.height/2;


}

}

您的代码编写得不好,需要重新编写以确保项目的重用或可伸缩性,但这里有一个快速的解决方法

制作一个支架精灵,类似于

var messageHolder:Sprite = new Sprite();
addChild(messageHolder);
以您喜欢的任何方式将所有消息添加到该持有者。当需要擦除该持有者的内容时,请调用以下方法:

function clearHolderContents(holder:DisplayObjectContainer):void
{
   if (holder.numChildren < 1)
   return; // no need to continue this method if the target is empty

   for (var i:int = holder.numChildren - 1; i >= 0; i--)
      removeChild(holder.getChildAt(i));
}

希望有帮助

您可能需要删除整个堆栈,因为您要在每个帧上添加一个新的堆栈。问题是你没有保留他们中任何一个的参考资料,所以很难找到他们来打电话给removeChild。老实说,整个函数都需要重写,但是你的问题中没有足够的信息来提供重写的最佳方式的建议,以满足总体目标。我在舞台上有8个电影剪辑。玩家点击它们,它们就不可见了,8个不同位置的新电影剪辑也可见了。就这样。当这个过程结束时,我希望文本消息出现,当玩家移动到另一个游戏框架时,我希望此消息消失。我是新手,自学成才,有很多困难。非常感谢您的帮助。非常抱歉,我需要更多的信息来理解您的意思。我应该在哪里写这个代码?如果之后?在开始的某个地方添加一个持有者精灵-在创建消息之前。然后将消息内容添加到持有者,例如,使用messageHolder.addChild代替addChild。将函数clearHolderContents复制粘贴到最开始的某个地方,然后在任何你想调用的地方调用它,例如messageHolder。我想我做了你说的任何事情,但现在我有一个错误:场景1,层“动作”,第1帧,第165 1136行:参数数量不正确。预期1。我会发布我的代码,告诉我哪里错了。谢谢你的帮助。错误表明你调用了一些参数数目不正确的方法。这是一个需要1个参数的函数。我只能猜测是ClearContentHolderName还是AddChildName。
clearHolderContents(messageHolder);