[Flash MX] Code geven aan duplicaten

Pagina: 1
Acties:

  • Fluxie
  • Registratie: Februari 2001
  • Laatst online: 07:51
Ik heb 2 problemen tijdens een project in Flash MX waar ik mee bezig ben. Het uitgangspunt is het inladen van een flash pagina, waarbij alle waarden en instellingen uit een database gehaald worden.

Ik heb geen tutorials kunnnen vinden via flashkit.com, actionscript.org of google die me verder kunnen helpen. Ook hier op got heb ik niets relevants gevonden.

Proloog 1:

Afhankelijk voor welk hoofdmenu er gekozen wordt worden er movieclips aangemaakt (dupliceerd) welke als submenu aan de linkerkant van de pagina verschijnen. (Ieder hoofdmenu heeft een ander aantal submenu's, er kunnen maximaal 20 submenu items bestaan.
Er staan buiten de flash pagina 2 movieclips (button en button_pressed), deze worden voor ieder submenu gedupliceerd en op de juiste locatie weergegeven.

Probleem 1:

Het indrukken van deze submenu's moet worden opgevangen, maar omdat deze gedupliceerd zijn kan je er geen code direct achter hangen, dit moet dus in een layer worden opgevangen. De benamingen van deze movieclips zijn btn_left1 en dit getal loopt bij ieder duplicaat op.
Ik heb al geprobeert via een loop te controleren of een van de items gepressed wordt, maar dit lijkt niet te werken.

code:
1
2
3
4
5
6
7
8
9
10
11
12
teller = 1;
while (teller < leftmenu_num) 
{   
    btn = "btn_left" + teller;
    btn_c = "btn_left" + teller + "_c";
    
    btn.onPress = function () 
    {
        setProperty(btn,_X,700);
    };
    teller++;
}


Zodra ik de waarde van 'btn' verander in de exacte naam van een item, bijvoorbeeld btn_left2 accepteert hij deze wel.

Heeft iemand enig idee waar dit aan kan liggen?


Probleem 2:

Het andere probleem is de tekst die ik bovenop de movieclips plaats, dit gaat via een
code:
1
_root.createTextField ("txt_left" + teller, teller, menuX, menuY, 90, 16);


Dit gaat op zich goed, alleen kan ik niet instellen dat deze automatisch de optie 'selectable' uitzet (een standaard property bij dynamic text). Ik krijg nu over het item alleen een text-selectie-cursor te zien en kan dit item niet meer indrukken.

Als iemand een idee heeft om dit op een andere manier op te lossen, laat het dan svp weten.

Art is not a mirror held up to reality, but a hammer with which to shape it


Verwijderd

volgens mij is de variabele btn die je aanmaakt geen handle naar de button. met
btn = eval ("btn_left" + teller);
zou het volgens mij wel moeten werken.

  • GrimaceODespair
  • Registratie: December 2002
  • Laatst online: 10:32

GrimaceODespair

eens een tettenman, altijd ...

Verwijderd schreef op 29 April 2003 @ 10:37:
btn = eval ("btn_left" + teller);
Ok, ik heb topicstart nog niet gelezen, maar hier moet ik op reageren B) . Het gebruik van eval wordt algemeen afgeraden. Doe liever iets als

Flash ActionScript:
1
btn = this["btn_left" + teller];

[ Voor 5% gewijzigd door GrimaceODespair op 29-04-2003 10:50 ]

Wij onderbreken deze thread voor reclame:
http://kalders.be


Verwijderd

waarom wordt eval afgeraden? (vind overigens wel dat this["..."] netter oogt)

  • Fluxie
  • Registratie: Februari 2001
  • Laatst online: 07:51
Dat is in ieder geval al een deel van de oplossing, hij reageerd nu wel op de onpress, alleen voert hij altijd de actie uit van het laatste item.

Bij de function pakt hij wel de geklikte button, maar het lijkt alsof hij die function() pas uitvoerd als hij de loop heeft afgerond.

Art is not a mirror held up to reality, but a hammer with which to shape it


  • GrimaceODespair
  • Registratie: December 2002
  • Laatst online: 10:32

GrimaceODespair

eens een tettenman, altijd ...

Verwijderd schreef op 29 april 2003 @ 10:52:
waarom wordt eval afgeraden?
Heb ik zelf nooit hard bij stilgestaan, maar de programmeur in mij vindt het gevoelsmatig niet juist :)

Maar serieus:
  • Je maakt jezelf kwetsbaarder omdat je wel eens scripts met side-effects zou kunnen uitvoeren zonder dat je het doorhebt (omdat je niet altijd kunt voorzien wat erin ge-eval'd wordt)
  • Ik denk dat het ook een stuk overhead geeft, omdat dat Flash interpreter inde reeds geinterprete (is dat NL?) code nog eens moet gaan interpreten.

Wij onderbreken deze thread voor reclame:
http://kalders.be


  • GrimaceODespair
  • Registratie: December 2002
  • Laatst online: 10:32

GrimaceODespair

eens een tettenman, altijd ...

Probeer trouwens eens

Flash ActionScript:
1
this._x = 700;

ipv

Flash ActionScript:
1
setProperty(btn,_X,700);


Ik weet het ff niet meer goed, maar volgens mij bestaat die btn variabele gewoon niet in de scope waar je heb gebruikt. Maar je hebt hem dus niet per se nodig.

Wij onderbreken deze thread voor reclame:
http://kalders.be


  • Fluxie
  • Registratie: Februari 2001
  • Laatst online: 07:51
GrimaceODespair u bent geweldig _/-\o_

probleem 1 is helemaal opgelost, iemand nog een ideetje hoe ik die tekstvelden unselectable krijg?

Art is not a mirror held up to reality, but a hammer with which to shape it


Verwijderd

kun je de tekstvelden niet in de buttons zetten?

  • Fluxie
  • Registratie: Februari 2001
  • Laatst online: 07:51
helaas kan ik de tekstvelden niet koppelen/samenvoegen, het probleem is dat het movieclips zijn en geen buttons, buttons kan je namelijk niet dupliceren.

Ik heb al geprobeerd de muiscursor te veranderen, maar daarmee veranderd de functie ervan niet en klik je op de tekstvelden en niet meer op de knoppen (movieclips)

Art is not a mirror held up to reality, but a hammer with which to shape it


Verwijderd

en als je een button in de mc zet?

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Kan je de property:

Flash ActionScript:
1
TextField.selectable = false

zetten of is het alleen read-only?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • oh,when?
  • Registratie: April 2000
  • Niet online

oh,when?

...

GrimaceODespair schreef op 29 April 2003 @ 11:15:
[...]

Heb ik zelf nooit hard bij stilgestaan, maar de programmeur in mij vindt het gevoelsmatig niet juist :)

• Ik denk dat het ook een stuk overhead geeft, omdat dat Flash interpreter inde reeds geinterprete (is dat NL?) code nog eens moet gaan interpreten.
[/list]
ellenlange discussies over geweest, maar eval is in sommige omstandigheden gewoon sneller dan bracket notatie, als men een referentie naar een object wil hebben en de properties daarvan wil aanspreken. Echter in de meeste gevallen creeren beide notaties dezelfde bytecode, omdat er geen 'eval' statement bestaat in bytecode, het wordt vervangen door getVariable / setVariable.....

"You're only as good, as what you did last week."


  • Fluxie
  • Registratie: Februari 2001
  • Laatst online: 07:51
Ik vraag me nu echt af waarom ik daar zelf niet aan gedacht heb..

maar dat werkt inderdaad.. harstikke bedankt allemaal _/-\o_ _/-\o_ _/-\o_

Art is not a mirror held up to reality, but a hammer with which to shape it


  • GrimaceODespair
  • Registratie: December 2002
  • Laatst online: 10:32

GrimaceODespair

eens een tettenman, altijd ...

oh,when? schreef op 29 april 2003 @ 11:59:
omdat er geen 'eval' statement bestaat in bytecode, het wordt vervangen door getVariable / setVariable.....
Nou snap ik pas waarom je geen assignment meer kunt doen in een eval! :D

Wij onderbreken deze thread voor reclame:
http://kalders.be

Pagina: 1