Archief - FLASH: AS > meerdere buttons een inline functie geven via loop

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

td2004

Legacy Member
Kheb hieromtrend al veel gegoogeld maar ik weet niet goed hoe ik me moet verwoorden, dus probeer ik hier is.
Hoe kan ik via een loop aan meerdere buttonMC's in één movieclip een action geven?
Instances zijn mcHome, mcPresentatie, mcContact, mcProducten
Nu zou ik graag hebben dat alle mc's waarvan instancenaam begint met mc***** een hun eigen specifieke "contentMC" aanroepen.
Dit alles via een for loop, ik kan het evenmakkelijk hardcoden, maar deze keer wil ik het dynamisch, omdat dit idee wel vaker voorkomt bij mijn flashprojecten en ik gewoon geen oplossing vind.

Hard gecode gaat het dus als volgt
Code:
mcHome.onRollOver = function():Void  {
	this.gotoAndPlay(2);
};
mcHome.onRollOut = function():Void  {
	this.gotoAndPlay(16);
};
mcPresentatie.onRollOver = function():Void  {
	this.gotoAndPlay(2);
};
mcPresentatie.onRollOut = function():Void  {
	this.gotoAndPlay(16);
};
enz...

Bigbuddha

Legacy Member
Code:
//op de stage staan 6 buttons met namen button_mc1 tot button_mc6
//hier ga je loop maken voor je buttons waar 6 het aantal buttons is
for (i=1; i<=6; i++) 

{
   //hier ga je de button targetten gebruikmakend van i
   targetButton = this["button_mc" + i]


    //hier ga je de targetButton mouse functions meegeven.
   targetButton.onRollOver = function() 
   {
      trace("onRollOver")
   };

   targetButton.onRollOut = function() {
        trace("onRollOut")
   };
   
   targetButton.onPress = function() {
        trace("onPress")
   };

}

zoiets bijvoorbeeld? Dit is een goeie basis, hier kan je al mee verder.
Wil je geen button_mc1 ... namen en zelf namen voor je buttons maken, dan ga je met een Array moeten werken. Waar je dan in combinatie met de for loop alles uit haalt om te targetten.

Bigbuddha

Legacy Member
Update met Array
Code:
//array van je buttons met hun instance namen
var buttonArray:Array = new Array();
buttonArray.push("mcHome");
buttonArray.push("mcPresentatie");

//for loop zoveel als er items in je array zitten
for (i=0; i<buttonArray.length; i++) 
{
   var targetButton:MovieClip = this[buttonArray[i]]

   targetButton.onRollOver = function() 
   {
     // trace("onRollOver")
   };

   targetButton.onRollOut = function() {
      // trace("onRollOut")
   };
   
   targetButton.onPress = function() {
        trace(this)
   };
}

td2004

Legacy Member
thanks bro !!

btw, heeft dat ne naam, zo mc's aanroepen met this[*]
(kmoet me echt dringend eens een nieuw boek over actionscript kopen !)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan