0

我有一个影片剪辑数组,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]);
                }
4

3 回答 3

0

要设置 Sprites 或 MovieClips hitArea,您需要将指定的 sprite 分配给它的 hitArea 属性,如在这里回答

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

您不应以数字开头命名变量,i. 此处命名指南

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

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);
}

这应该有帮助

于 2012-11-09T13:48:36.210 回答
-1
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 );
}
于 2012-11-09T16:30:15.333 回答
-1

使用数组存储 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]);
            }

如果您不需要存储区域而不是创建数组。

于 2012-11-09T13:32:41.147 回答