Actionscript 3 如何通过getChildAt()方法访问电影剪辑的变量。只需键入实例名即可正常工作

Actionscript 3 如何通过getChildAt()方法访问电影剪辑的变量。只需键入实例名即可正常工作,actionscript-3,Actionscript 3,我有for循环,我需要通过getChildAt()方法将电影剪辑中的所有变量作为目标。这些变量不在类中,而是在类中的常规时间轴脚本中。若我输入一个对象的实例名,一切看起来都正常,但它是soo-loong。我不能打字,因为这不是一门课。将其转换为Object或MovieClip会出现错误: 在flash.display.Shape上找不到单击的属性,并且没有默认值。作为对象和 TypeError:错误#1034:类型强制失败:无法转换闪存。显示::Shape@35dcf139要闪烁.display

我有for循环,我需要通过getChildAt()方法将电影剪辑中的所有变量作为目标。这些变量不在类中,而是在类中的常规时间轴脚本中。若我输入一个对象的实例名,一切看起来都正常,但它是soo-loong。我不能打字,因为这不是一门课。将其转换为Object或MovieClip会出现错误:

在flash.display.Shape上找不到单击的属性,并且没有默认值。作为对象和

TypeError:错误#1034:类型强制失败:无法转换闪存。显示::Shape@35dcf139要闪烁.display.MovieClip。作为电影剪辑

顺便说一下。。这是我在父mc中的代码:

stage.addEventListener(Event.ENTER_FRAME, checking)

function checking(e:Event)
{
for(var i = 0; i< numChildren; i++)
{
    if(MovieClip(getChildAt(i)).clicked == true)
    {
        clickedCardsNum += 1;

        trace(clickedCardsNum);
    }
}
}
stage.addEventListener(Event.ENTER\u帧,检查)
功能检查(e:事件)
{
对于(变量i=0;i
这是一个错误

stage.addEventListener(Event.ENTER_FRAME, checking)

function checking(e:Event)
{
for(var i = 0; i< numChildren; i++)
{
      if(myCard1.clicked == true)
    {
        clickedCardsNum += 1;

        trace(clickedCardsNum);
    }
}
}
stage.addEventListener(Event.ENTER\u帧,检查)
功能检查(e:事件)
{
对于(变量i=0;i
这一个是正确的

唯一可行的解决方案可能是将所有代码放在类中,然后按该类名类型转换我的getChildAt方法。我想知道这是不是一种更简单的方法。提前谢谢

您可以试试:

var d:DisplayObject;
for( var i:int = 0; i < numChildren; ++i )
{
    d = getChildAt(i);
    if( d.hasOwnProperty('clicked') && d['clicked'] == true)
    {
        clickedCardsNum += 1;
        trace(clickedCardsNum);
    }
}
vard:DisplayObject;
对于(变量i:int=0;i
因为使用getChildAt方法,您可以获得所有的显示对象,不仅MovieClip和MovieClip没有单击属性,我认为这只是您的卡片项目拥有它。

函数hasOwnProperty检查属性是否存在,然后您可以使用['propName']通过其名称访问该属性,并且不会出现编译器错误。

也许保留一组卡片是一种更好的方法;)


我希望这能对你有所帮助

哦,妈妈!非常感谢你!它工作得很好,你帮了我很多!我不知道“hasOwnProperty”对什么有用。现在我知道了!再次感谢!