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

スプライトまたはMovieClipshitAreaを設定するには、ここで回答したように、指定されたスプライトをその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

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

アレイを作成しないよりもストアゾーンが必要ない場合。

于 2012-11-09T13:32:41.147 に答える
-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 に答える