2013-09-05 7 views
1

На сцене у меня есть три вида мувиклипов Несколько статических мувиклипов, чье имя: mc1; mc2; mc3 .... они видны на этапе Несколько статических movielips «othermc1; othermc2l othermc3 ... и у них есть« visible = false » Один мувиклип, который движется по сцене, и его имя« слайдер » У меня есть функция когда тс «слайдер», пересекает одну из остальных mc1, mc2 ... превратить видимую othermc1, othermc2Петля as3; функция пересекается; onEnterFrame

var alreadyHandled:Boolean = false; 

addEventListener(Event.ENTER_FRAME, onEnterFrame); 

function onEnterFrame(e:Event):void 
{ 
    if(mc1.getRect(this).intersects(slider.getRect(this))) 
    { 
     if(!alreadyHandled) 
     { 
      show1(); 
      alreadyHandled = true; 
     } 
    } 
    else 
    { 
     alreadyHandled = false; 
     no1(); 
    } 

function show1():void 
{ 
    othermc1.visible = true; 
} 
function no1():void 
{ 
    othermc2.visible = false; 
} 

Как я могу использовать этот код в цикле? Спасибо за помощь

+0

Что вы пытаетесь цикла? И это весь код, который у вас есть в вашем файле? – Scope

+0

путем циклизации, вы имеете в виду тестирование против всех мувиклипов (mc1, mc2, ..., othermc1, othermc2, ..), а не только mc1? –

ответ

1

Если вы хотите петля через mc1, mc2, mc3, ... создать Array от MovieClip s:

var movieClips:Array = [mc1,mc2,mc3/*,other...*/]; 

Затем используйте for для итерации по элементам массива:

for(var i:int=0; i<movieClips.length; i++){ 
    //do some thing with movieClips[i] 
} 

Этот код может помочь вам:

var mc:Array = [mc1,mc2,mc3/*,...*/]; 
var omc:Array = [othermc1,othermc2,othermc3/*,other...*/]; 
addEventListener(Event.ENTER_FRAME, onEnterFrame); 

function onEnterFrame(e:Event):void 
{ 
    for(var i:int=0; i<mc.length; i++) 
     if(mc[i].getRect(this).intersects(slider.getRect(this))) 
      showMovieClip(i); //or omc[i].visible=true; 
     else 
      hideMovieClip(i); //or omc[i].visible=false; 
} 
function showMovieClip(i:int):void 
{ 
    omc[i].visible = true; 
} 
function hideMovieClip(i:int):void 
{ 
    omc[i].visible = false; 
}