【问题标题】:Adding a new instance of an object to each object in an array将对象的新实例添加到数组中的每个对象
【发布时间】:2012-11-09 05:59:24
【问题描述】:

我有一个影片剪辑数组highlights[i],我想为每个对象添加一个矩形命中区域精灵。如何在不引起命名冲突的情况下执行此操作?

for (var i:int = 0; i < highLights.length; i++)
                {
                    this[i + 'Zone'] = new HitZone(highLights[i].x, highLights[i].y, highLights[i].width, highLights[i].height));
                    highLights[i].addChild(this[i + 'Zone']);
                    addChild(highLights[i]);
                }

【问题讨论】:

  • 你遇到了什么命名冲突?
  • 我建议使用数组而不是使用 MovieClip 的动态特性。

标签: actionscript-3 flash


【解决方案1】:

要设置 Sprites 或 MovieClips hitArea,您需要将指定的 sprite 分配给它的 hitArea 属性,例如 answered here

例如。 hilights[i].hitArea = this[i +"Zone"];

您不应以数字i 开头的变量命名。 Name guidelines here

您还在其他地方使用此动态属性吗?如果不是这样使用局部变量:

var _oHitZone:HitZone;
var _oHilight:MovieClip;//assume that it is MovieClip
for (var i:int = 0; i < highLights.length; i++)
{
    _oHilight = hilights[i];
    _oHitZone = new HitZone(_oHilight.x, _oHilight.y, _oHilight.width, _oHilight.height));
    _oHilight.addChild(_oHitZone);
    _oHilight.hitArea = _oHitZone;
    addChild(_oHilight);
}

这应该有帮助

【讨论】:

    【解决方案2】:

    使用数组来存储 HitZone。

    var zones:Array = [];
    var zone:HitZone;
    for (var i:int = 0; i < highLights.length; i++)
                {
                    zone = new HitZone(highLights[i].x, highLights[i].y, highLights[i].width, highLights[i].height));
                    zones.push(zone); 
                    highLights[i].addChild(zone);
                    addChild(highLights[i]);
                }
    

    如果您不需要存储区域,则不要创建数组。

    【讨论】:

      【解决方案3】:
      var hitZone:HitZone;
      for (var i:int = 0; i < highLights.length; i++)
      {
        hitZone = new HitZone(highLights[i].x, highLights[i].y, highLights[i].width, highLights[i].height));
        highLightsthis[i + 'Zone'] = hitZone;
        addChild(hitZone );
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-19
        • 1970-01-01
        • 2012-11-16
        相关资源
        最近更新 更多