我有一组电影剪辑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]);
}
答案 0 :(得分:0)
要设置Sprites或MovieClip hitArea,您需要将指定的精灵分配给它的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);
}
这应该有帮助
答案 1 :(得分:-1)
使用数组存储HitZones。
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]);
}
如果您不需要存储区域而不是不创建数组。
答案 2 :(得分:-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 );
}