Volledige versie bekijken : duplicateMovieclip
latino
%Europe/Berlin %894 %2005, 22:27
wat is er mis met de volgende code? Hij dupliceert niet :confused:
var buttonNames:Array = ["Home", "Agenda", "DJ", "Drugs", "Clubs"];
var spacing:Number = menu_mc._width + 2;
var numberOfButtons:Number = buttonNames.length;
var i:Number = -1;
while (++i < numberOfButtons){
var name:String = "item"+ i;
menu_mc.duplicateMovieClip(name, i);
menu_mc[name].menu_txt.text = buttonNames[i];
menu_mc[name]._y = 164;
menu_mc[name]._x = i * spacing;
menu_mc[name].onRelease = function(){
itemClicked(i);
}
}
dit stukje komt uit het macromediaboek zelf dus het zou niet aan deze regel moeten liggen:
menu_mc.duplicateMovieClip(name, i);
theFlashWizard
%Europe/Berlin %918 %2005, 23:02
vaag script..
doe is
mc = menu_mc.duplicateMovieClip("item"+i, i);
ipv jou:
var name:String = "item"+ i;
menu_mc.duplicateMovieClip(name, i);
en dan kun je de mc gewoon aanspreken met mc, ipv menu_mc[name]
helpt dat al?
mischien wat tracen?
de mc of iig de i..
Roenes
%Europe/Berlin %990 %2005, 00:46
volgens mij ligt het hieraan: menu_mc[name] de nieuwe mc wordt volgens mij niet IN menu_mc gezet maar op dezelfde tijdslijn als menu_mc. hierdoor klopt je verwijzing niet. Je kan dit op 2 manieren oplossen:
var buttonNames:Array = ["Home", "Agenda", "DJ", "Drugs", "Clubs"];
var spacing:Number = menu_mc._width + 2;
var numberOfButtons:Number = buttonNames.length;
var i:Number = -1;
while (++i < numberOfButtons){
var name:String = "item"+ i;
menu_mc.duplicateMovieClip(name, i);
this[name].menu_txt.text = buttonNames[i];
this[name]._y = 164;
this[name]._x = i * spacing;
this[name].i = i;
this[name].onRelease = function(){
itemClicked(this.i);
}
}
of netter:
var buttonNames:Array = ["Home", "Agenda", "DJ", "Drugs", "Clubs"];
var spacing:Number = menu_mc._width + 2;
var numberOfButtons:Number = buttonNames.length;
var i:Number = -1;
while (++i < numberOfButtons){
var name:String = "item"+ i;
mc = menu_mc.duplicateMovieClip(name, i);
mc.menu_txt.text = buttonNames[i];
mc._y = 164;
mc._x = i * spacing;
mc.i = i;
mc.onRelease = function(){
itemClicked(this.i);
}
}
Ik ben je ook vast voor geweest en heb een probleem met je onRelease opgelost. bij jouw variant zal i altijd 4 zijn geweest. Nu wordt per mc de juiste i opgeslagen in de mc die je meegeeft aan itemClicked. Nu zal je dus het juiste item meegeven :)
Vind je vast niet erg dat ik dat er vast uit heb gehaald ;)
latino
%Europe/Berlin %849 %2005, 21:22
ik ga er morgen ochtend eens naar kijken bedankt alvast anders horen jullie het wel ! :)
latino
%Europe/Berlin %437 %2005, 11:29
vaag geen van alle doet het :(
Roenes
%Europe/Berlin %438 %2005, 11:31
Heb je wel een mc op de stage gezet die de instancenaam menu_mc heeft? (en dus niet de library naam menu_mc)
:)
latino
%Europe/Berlin %451 %2005, 11:50
ik heb de menu_mc in een andere movie gezet menuHolder..nu doet ie het wel :confused:
var buttonNames:Array = ["Home", "Agenda", "DJ", "Drugs", "Clubs"];
var buttonTargets:Array = ["?page=home", "?page=agenda", "?page=djs", "?page=drugs", "?page=clubs"];
var spacing:Number = menuHolder_mc.menu_mc._width + 2;
var numberOfButtons:Number = buttonNames.length;
var i:Number = -1;
while (++i < numberOfButtons){
var name:String = "item"+ i;
menuHolder_mc.menu_mc.duplicateMovieClip(name, i);
menuHolder_mc[name].menu_txt.text = buttonNames[i];
menuHolder_mc[name]._y = 0;
menuHolder_mc[name]._x = i * spacing;
menuHolder_mc[name].onRelease = function(){
itemClicked(i);
}
}
function itemClicked (id:Number){
var target:String = buttonTargets.id;
getURL(target,"_self");
}
Roenes
%Europe/Berlin %477 %2005, 12:28
Mijn 2e code werkte bij mij ook mits je een mc op de stage hebt staan met de juiste naam.
Maar ach, het gaat erom dat het werkt :)
latino
%Europe/Berlin %485 %2005, 12:38
ja ik had een mc op de stage met dezelde naam ...nog een vraagje:
ik heb deze twee in d while loop gedaan om de buttons van kleur te laten veranderen:
menuHolder_mc[name].onRollOver = function(){
fadeIn(menuHolder_mc[name]);
}
menuHolder_mc[name].onRollOut = function(){
fadeOut(menuHolder_mc[name]);
}
het vage is hij maakt alleen de laaste van de gedupliceerde button rood (in dit geval)
en als ik over de eerste drie ga dan wordt de laaste ook rood terwijl natuurlijk de button waarover ik heen ga rood moet worden..war zit een fout? ik had het ook al met this. ervoor geprobeerd maar helaas
edit: ik heb het :
menuHolder_mc[name].naam = menuHolder_mc[name]; toegevoegd
Roenes
%Europe/Berlin %559 %2005, 14:26
Ondanks je het antwoord al hebt even een kleine uitleg: dit probleem komt voort doordat het in stukje in een loop staat. de variabele 'naam' zal altijd tijdens een rollOver/rollOut/etc de laatste waarde uit de lus hebben. Hierdoor hebben alle buttons/mc's invloed op 1 en dezelfde mc/button.
Dit is idd op te lossen door aan iedere mc/button een extra variabele te geven met de naam/id/whatever zodat je ze kan onderscheiden.
Even specifiek op deze topic. deze regel:
fadeIn(menuHolder_mc[name]);
zou volgens mij kunnen worden vervangen door deze:
fadeIn(this);Op deze manier hoef je NIET die extra var te maken omdat je een referentie naar de juiste mc meegeeft door this.
Uiteraard kan dit dus ook voor de fadeOut :)
latino
%Europe/Berlin %758 %2005, 19:12
aha thanks weer wat geleerd :)
toppie
Roenes
%Europe/Berlin %916 %2005, 22:59
Graag gedaan :)
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.