Ik ben eens even wat aan het experimenteren met dynamisch Flash, en dus dacht ik: 'Hee, laat ik eens een dynamisch menu gaan maken.'
Zo gezegd, zo gedaan (*kuch kuch*).
Ik weet dat ik het fout doe, maar zo werkt het tenminste nog gedeeltelijk.
Ik heb in mijn library 3 componenten zitten:
Menu, MenuItem en SubMenuItem.
Bij alle componenten heb ik 'Export for ActionScript' aangevinkt (en een naampje gegeven) en 'Export in first frame' aangevinkt. Dit werkt allemaal al.
Nu heb ik in Menu alle functionaliteit gebouwd om de gegevens op te halen en de menuitems toe te voegen. Dit werkt.
In het component MenuItem zit een dynamic text, genaamd label. Ik wil de tekst van het label instelling via een functie setText. Deze wil ik kunnen aanroepen in mijn Menu component.
Klein voorbeeldje:
Bovenstaande code zit in het eerste frame van het MenuItem component (die dus in de library zit).
In Menu doe ik het volgende:
De laatste regel doet het wel (het object bestaat dus), maar die daarboven, waar ik de functie setText aanroep, doe het niet.
De setText functie declaratie heb ik al op verscheidene manieren geprobeerd (setText.prototype = function( cText ), etc)
Wat doe ik fout? (je hebt nog 5 seconden)
Zo gezegd, zo gedaan (*kuch kuch*).
Ik weet dat ik het fout doe, maar zo werkt het tenminste nog gedeeltelijk.
Ik heb in mijn library 3 componenten zitten:
Menu, MenuItem en SubMenuItem.
Bij alle componenten heb ik 'Export for ActionScript' aangevinkt (en een naampje gegeven) en 'Export in first frame' aangevinkt. Dit werkt allemaal al.
Nu heb ik in Menu alle functionaliteit gebouwd om de gegevens op te halen en de menuitems toe te voegen. Dit werkt.
In het component MenuItem zit een dynamic text, genaamd label. Ik wil de tekst van het label instelling via een functie setText. Deze wil ik kunnen aanroepen in mijn Menu component.
Klein voorbeeldje:
code:
1
2
3
4
5
6
7
| /*
MenuItem
*/
function setText( cText )
{
label.text = cText;
} |
Bovenstaande code zit in het eerste frame van het MenuItem component (die dus in de library zit).
In Menu doe ik het volgende:
code:
1
2
3
4
5
| var name = "menuItem1"; attachMovie( "MenuItem", name, 100 ); var oObject = eval( name ); oObject.setText( "Bestand" ); // Werkt niet! oObject.label.text = eval( "Bestand" ); // Werkt WEL! |
De laatste regel doet het wel (het object bestaat dus), maar die daarboven, waar ik de functie setText aanroep, doe het niet.
De setText functie declaratie heb ik al op verscheidene manieren geprobeerd (setText.prototype = function( cText ), etc)
Wat doe ik fout? (je hebt nog 5 seconden)
edit:
Kleine toevoeging... dit doet het wel, maar alleen als ik onderstaande code in mij Menu object zet...
[code]
MovieClip.prototype.setText = function( cText )
{
if ( typeof( eval( "this.label" ) ) === "object" )
{
label.text = cText;
}
}
[/code]
Maar zo krijg ik het voor elke MC. En dat wil ik niet. Ik wil het alleen voor MIJN MC hebben...
Kleine toevoeging... dit doet het wel, maar alleen als ik onderstaande code in mij Menu object zet...
[code]
MovieClip.prototype.setText = function( cText )
{
if ( typeof( eval( "this.label" ) ) === "object" )
{
label.text = cText;
}
}
[/code]
Maar zo krijg ik het voor elke MC. En dat wil ik niet. Ik wil het alleen voor MIJN MC hebben...
[ Voor 17% gewijzigd door edie op 01-01-2003 15:35 ]
"In America, consumption equals jobs. In these days, banks aren't lending us the money we need to buy the things we don't need to create the jobs we need to pay back the loans we can't afford." - Stephen Colbert