Volledige versie bekijken : Hoe roep ik Movieclip binnen movieclip aan op hoofdscene
inge88
%Europe/Berlin %586 %2008, 14:05
Ik heb eem movieclip Panel, daarbinnen is de movieclip navigationBlock geattached en heeft nu de instancenaam navigationBlock + i, waarbij i een nummer is.
var numberOfItems = _root.numberOfItems;
for (var i:Number=1;i<numberOfItems;i++)
{
this.attachMovie("navigationBlock","navigationBlock"+i,i);
this["navigationBlock"+i]._y = 275;
this["navigationBlock"+i]._y += i*150;
this["navigationBlock"+i]._x += 407;
this["navigationBlock"+i].navigationBlockText.text = "test" + i;
}
Hoe roep ik nu op de hoofdscene navigationBlock aan? Het volgende werkt niet.
_root.panel["navigationBlock"+i].onPress = function()
{
}
frontLawn.mow()
%Europe/Berlin %730 %2008, 17:31
dat zou moeten werken.
mits je "i" gedefiniëerd hebt natuurlijk.
ook belangrijk is dat je eerst de attachMovie doet en pas daarna de onPress er aan toekent.
lukt het wel als je doet:
_root.panel.navigationBlock1.onPress = function()
??
Jan
%Europe/Berlin %827 %2008, 19:51
Ik heb eem movieclip Panel
_root.panel["navigationBlock"+i].onPress = function()
hoofdletter vs geen hoofdletter
Ik heb eem movieclip Panel, daarbinnen is de movieclip navigationBlock geattached
this.attachMovie("navigationBlock","navigationBlock"+i,i);
je 'attacht' in this niet in panel op die manier.
Dus moet je ook:
this["navigationBlock"+i].onPress = function()
{
}
//ofwel
panel.attachMovie("navigationBlock","navigationBlock"+i,i);
Groeten,
Jan
inge88
%Europe/Berlin %367 %2008, 08:49
De bovenste code heb ik geplaatst IN de movieClip panel. Dus dan zou this toch moeten werken? Dan attached hij toch binnen de movieClip panel. De movieClip heet panel zonder hoofdletter, heb ik bij het typen van topic per ongeluk met hoofdletter gedaan.
_root.panel.navigationBlock1.onPress = function()
lukt ook niet. i is wel gedefineert, zie de bovenste code.
In principe kan ik de on press functie ook wel binnen de movieclip panel plaatsen, maar ik vraag me toch wel af wat er mis is met de code...
Jan
%Europe/Berlin %399 %2008, 09:35
De bovenste code heb ik geplaatst IN de movieClip panel.
Da's eigenlijk niet echt zoals het hoort. Je zet best alle script op de hoofdtijdlijn.
Dus dan zou this toch moeten werken?
Daar heb je gelijk in. :)
Je zegt dat "het niet werkt". Wat werkt er dan concreet niet? Waarom trace je niet wat meer?
Die "i" zal trouwens op het einde van de for loop de laatste waarde behouden. En dat geldt voor alle knoppen want je verwijst daarin naar "i", dus neemt ie altijd de waarde die "i" op dat moment heeft en dat is de laatste waarde uit de for loop. Als je die i wil gebruiken moet je dus die waarde van i opslaan IN de knop.
Dus iets als:
//IN mc panel:
trace(_root.numberOfItems);
for (var i:Number=1;i<_root.numberOfItems;i++)
{
this.attachMovie("navigationBlock","navigationBlock"+i,this.getNextHighestDepth());
this["navigationBlock"+i]._y = 275+i*150;
this["navigationBlock"+i]._x = 407*i;
this["navigationBlock"+i].iwaarde=i;
this["navigationBlock"+i].navigationBlockText.text = "test" + i;
}
//_________________________________________________
//op de _root:
for (var i:Number=1;i<numberOfItems;i++)
{
panel["navigationBlock"+i].onPress = function()
{
trace(i);
trace(this.iwaarde);
}
}
Waarom zet je trouwens een deel van 'dezelfde code op de hoofdtijdlijn en een ander deel IN panel. Versnippering van je code is eigenlijk niet zo goed... En je moet hiermee een extra for loop maken. :S
Dus eigenlijk zou het beter zijn alle script op de hoofdtijdlijn te zetten:
for (var i:Number=1; i<numberOfItems; i++)
{
panel.attachMovie("navigationBlock","navigationBlock"+i,panel.getNextHighestDepth());
panel["navigationBlock"+i]._y = 275+i*150;
panel["navigationBlock"+i]._x = 407*i;
panel["navigationBlock"+i].iwaarde=i;
panel["navigationBlock"+i].navigationBlockText.text = "test" + i;
panel["navigationBlock"+i].onPress = function()
{
trace(i);
trace(this.iwaarde);
}
}
Groeten,
Jan
inge88
%Europe/Berlin %417 %2008, 10:00
Oké, ik ben alles van de movieclip panel op de hoofdtijdlijn gaan plaatsen. Nu is er dus alleen code te vinden op die tijdlijn ipv ook in andere movieclips oid.
Het werkt nu wel en is eigenlijk veel simpeler en overzichtelijker op deze manier. Waarom ervoor gekozen om in de movieclip te werken ????? :/
Voor de geinterresseerden:
var myXML:XML = new XML();
var nr:Number = 0;
myXML.ignoreWhite = true;
myXML.load("xml.xml");
for (var i:Number=1;i<numberOfItems;i++)
{
panel.attachMovie("navigationBlock","navigationBlock"+i,i);
_root.panel["navigationBlock"+i]._y = 272;
_root.panel["navigationBlock"+i]._y += i*150;
_root.panel["navigationBlock"+i]._x += 407;
_root.panel["navigationBlock"+i].iValue = i;
var tekstTest:String = "dit is een tekst die ergens geplaatst zal moeten worden.
Deze tekst is heel lang en zal te groot zijn voor het kleine vlak, maar dat lossen we wel op door SubString te gebruiken.
Uiteindelijk zal deze tekst uit een xml bestand komen, maargoed dat achterwege gelaten.";
myXML.onLoad = function()
{
for (var iAgain:Number=1;iAgain<numberOfItems;iAgain++)
{
xmlTekst = myXML.firstChild.childNodes[iAgain].attributes.voornaam;
trace(xmlTekst);
_root.panel["navigationBlock"+iAgain].navigationBlockText.text = "test" + xmlTekst + tekstTest.substr(0,100)+"...;
}
}
_root.panel["navigationBlock"+i].onPress = function()
{
trace(this.iValue);
transformText = "test" + myXML.firstChild.childNodes[this.iValue].attributes.voornaam + tekstTest;
_root.informationBlock.text = transformText;
}
}
Jan, ik traceer juist bijna de hele tijd... maar eigenlijk haal ik die traceer codes altijd weg voordat ik de code hier plaats.
frontLawn.mow()
%Europe/Berlin %441 %2008, 10:36
tip:
// vervang:
panel.attachMovie("navigationBlock","navigationBlock"+i,i);
_root.panel["navigationBlock"+i]._y = 272;
_root.panel["navigationBlock"+i]._y += i*150;
_root.panel["navigationBlock"+i]._x += 407;
_root.panel["navigationBlock"+i].iValue = i;
// voor:
instellingen = {
_y: 272 + (i*150),
_x: 407,
iValue: i
}
panel.attachMovie("navigationBlock","navigationBlock"+i,i, instellingen);
// je geeft het Object "instellingen" dus mee als 4e parameter in de attachMovie
// is wat eenvoudiger omdat je niet 4 keer 't volledige pad hoeft te schrijven
inge88
%Europe/Berlin %472 %2008, 11:20
Okee bedankt...!
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.