0

以下のコードは、ムービー クリップの配列からランダムにムービー クリップをステージに追加します。ムービー クリップがステージに追加されると、対応するサウンド クリップをエコーすることにより、x 軸上で水平に移動します。しかし、私の問題は、ステージに追加されたどのムービー クリップに対しても、同じサウンド クリップしか再生されないことです。それが発生する理由はもちろん、次の行によるものです。

var mc:MovieClip = new enemies[printArray[p]]; 

「var mc」内にある各ムービー クリップの動作を個別に制御する方法を教えてください。次のようなものを書く代わりに:

if(mc.x <= -100) { Enem1Timer.stop()} else if(mc.x <= 570){ Enem1Timer.start() }

次のように書く方法はありますか?

if(Enem1.x <= -100).....

どんな助けでも大歓迎です。事前にサンクス。

import flash.utils.Timer;
import flash.display.MovieClip;

var sound1:Letter1 = new Letter1();
var sound2:Letter2 = new Letter2();
var sound3:Letter3 = new Letter3();
var sound4:Letter4 = new Letter4();
var sound5:Letter5 = new Letter5();
var sound6:Letter6 = new Letter6();

var printArray:Array = [0, 1, 2, 3, 4, 5];

var enemies:Array = [Enem1, Enem2, Enem3, Enem4, Enem5, Enem6];

for(var n:int = 0; n <= 6; n++)
{
var randNo:int = int(Math.random() * 6);
printArray.push(randNo);
}

var Enem1Timer:Timer = new Timer(1000, 1);

Enem1Timer.addEventListener(TimerEvent.TIMER, playA1);
function playA1(e:TimerEvent):void
{sound1.play();}

for(var p:int = 0; p < printArray.length; p++)
{
trace(printArray[p]);
var mc:MovieClip = new enemies[printArray[p]];

addChild(mc); 
mc.x = 600; mc.y = 200;

stage.addEventListener(Event.ENTER_FRAME, loop)
function loop(e:Event){

if(mc.x <= -100) { Enem1Timer.stop()} else if(mc.x <= 570){ Enem1Timer.start() }

mc.x -= 3; 


}}
4

1 に答える 1

0

mcs が配列内に既に作成されている (null ではない) 場合は、「new」を削除する必要があります。作成するのではなく、アクセスしているためです。

var mc:MovieClip = enemies[p] as MovieClip; 
于 2013-10-26T18:59:00.417 に答える