Toon posts:

[ActionScript] Variabelen in objecten...

Pagina: 1
Acties:

Verwijderd

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
Scratch = function() {

    this.previousClip = null;

    this.startScratch = function(clipName) {

        currentClip = eval("_root." + clipName);

        currentClip.onMouseUp = function() {
            WAT_MOET_HIER.previousClip = this;
        }
    }
}


Waarmee moet ik WAT_MOET_HIER vervangen om dit te laten werken? (overige code is t.b.v. leesbaarheid even weggelaten).

Ik kan vanuit de onMouseUp functie nu de previousClip niet direct aanspreken, tenzij ik de previousClip variabele _global maak, maar dat wil ik liever niet.

Ik snap er niks van :?

[ Voor 20% gewijzigd door Verwijderd op 08-04-2003 11:32 ]


Verwijderd

Topicstarter
...where's the code tag when you need it o_O

[ Voor 8% gewijzigd door Verwijderd op 08-04-2003 11:08 . Reden: Alex moet beter leren lezen :p ]


  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
Hmm je zult toch wel effe moeten zeggen WAAR deze code staat - het gebruik van eval weet je zelf wel is niet aan te raden...

zeg eerst wat je wil doen (kort maar krachtig)

Verwijderd

Topicstarter
Ok. Ik snap niet waarom je meer code nodig hebt, want hieruit kun naar mijn idee prima opmaken wat het probleem is...

Wat ik wil doen:
Zodra je op een button klikt, wordt de startScratch functie aangeroepen met als parameter de naam van de movieclip waarin de button zich bevindt, mcScratchPad1, bijvoorbeeld.
Vervolgens moet deze naam (objectverwijzing) worden opgeslagen zodat deze later weer aangeroepen kan worden. De reden hiervoor is op dit moment niet van belang.

Volgens mij is dat alles wat je eventueel nog zou willen weten.

Waarom is de eval() functie niet aan te raden? En wat voor alternatieven zijn er dan?

[ Voor 5% gewijzigd door Verwijderd op 08-04-2003 12:20 ]


Verwijderd

gebruik een dergelijke method voor je class :

Flash ActionScript:
1
2
3
class.prototype.setMc = function(mc){
        this.mc = mc;
}



Dan kan je dus :

Flash ActionScript:
1
     this.setMc(_root.mask_mc);


this.mc bevat dat een directe referentie naar _root.mask_mc (en ja, ik spreek hier root direct aan, bad practice, maar voor het example moet het maar even doen).

Je kan nu dus gewoon this.mc._x = 10;
etc.

Verwijderd

Topicstarter
Thanks! :)

Op het kirupa.com forum kreeg ik een soortgelijk antwoord... vrijwel tegelijkertijd notabene ;)

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

oh,when?

...

ff voor de archieven...Actionscript ( en ECMAscript ) is zo flexibel dat je this gewoon naar een totaal andere referentie kan wijzen:


Flash ActionScript:
1
2
3
4
init = function() {
   this = _root.
   this.foo = bar;
}


is dus een constructie die gewoon mag.... :)

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

Pagina: 1