如何在Movieclip中获取一个影片剪辑?

时间:2017-03-30 06:23:01

标签: arrays actionscript-3 flash actionscript movieclip

我在一个带有“bgdemo”实例的movieclip中有一个名为“trainglePoint”的影片剪辑链接,我想知道如何让“trianglePoint”工作。

“gags”也是获得“trianglePoint”的角色

这是我的代码,不起作用。

谢谢!

编辑:忘了添加'trianglePoint'多次上台(不知道是否有帮助)

var pickUpsArray:Array = new Array();

stage.addEventListener (Event.ENTER_FRAME, pickUpItems);

public function pickUpItems (e:Event)
    {
            for (var i=0; i<numChildren;i++)
    {
        if (getChildAt(i) is bgdemo.trianglePoint)
        {
            pickUpsArray.push(getChildAt(i));
        }
    }

        for (var j=0; j<pickUpsArray.length;j++)
        {
            if (gags.hitTestObject (pickUpsArray[j]))
            {
                removeChild(pickUpsArray[j]);
                trace ("hitTestObject: YES");
            }
        }
    }

1 个答案:

答案 0 :(得分:1)

您应该使用GetChildByName(name)。 GetChildAt意味着您知道所需子项在子层中的位置。 因此,如果您的孩子被命名为&#34; trianglePoint&#34;并且您想要访问它,只需使用getChildByName(&#34; trianglePoint&#34;);

其余代码存在一些问题。 首先,你推入一个数组,但永远不会删除它。使用removechild不会从数组中删除对象,这意味着您将始终测试它与&#34; gags&#34;的冲突。

另一个问题是您在每个帧中将对象添加到数组中。你应该做的是从GetChildByName获取你的对象,将它推入数组THEN循环并与之交互。

我会这样做:

import flash.display.MovieClip

public class bgdemo extends MovieClip
{
var pickUpsArray:Array

public function bgdemo()//constructor for your parent movieclip
{
   pickUpsArray = new Array();

  this.addEventListener (Event.ADDED_TO_STAGE, init_ok);
  //this is to ensure the parent movieclip (bgdemo) is on the stage and we can access its children.
}

private function init_ok(e:Event):void
{
  this.removeEventListener(Event.ADDED_TO_STAGE, init_ok);
  //removing the listener so that we only do this once
  pickUpsArray.push(this.getChildByName("trianglePoint"));
  stage.addEventListener (Event.ENTER_FRAME, pickUpItems);
}

private function pickUpItems (e:Event):void
{
    for (var j=0; j<pickUpsArray.length;j++)
    {
        if (gags.hitTestObject (pickUpsArray[j]))
        {
            removeChild(pickUpsArray[j]);
            pickUpsArray.splice(j, 1); //removing the object from the array so we can't collide with it anymore
            trace ("hitTestObject: YES");
        }
    }
}

}

您可以在bgdemo movieclip的构造函数中创建一个新数组,并为影片剪辑添加到舞台的事实添加一个侦听器。将movieclip添加到舞台上时,(删除&#34;添加到舞台监听器&#34;),让您的孩子将其添加到数组并添加一个监听器来输入框架。 然后在每个帧上测试数组中的每个对象(此时仅为1)和#34; gags&#34;。如果gags和对象发生碰撞,则从显示列表和数组中删除该对象。

尝试并告诉我它是否有效(您希望它的工作方式)。如果它不是您想要的,那么请更准确地说明您原来的帖子;)