[AS2] Var scope(?) vraag

Pagina: 1
Acties:

  • [FrEEzEr]
  • Registratie: April 2000
  • Laatst online: 29-10 17:16
Ik ben bezig met een Flash site, heb geen ervaring met actionscript maar probeer door veel zoeken en lezen achter al mijn vragen te komen. Nu heb ik alleen een probleem waar ik het antwoord maar niet op kan vinden ;(.

Ik heb een class file Menu.as waarin o.a. staat:
JavaScript: Menu.as
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Menu {
    private static var __buttons:Array; // array(menuButtonID, textTitle, textSubtitle, externalSWF);

    // constructor enzo weggelaten om het duidelijk te houden

    public function buildMenu():Void {
        var buttonsLength:Number = Menu.__buttons.length;

        // Loop de __buttons array door
        for(var i:Number = buttonsLength-1; i >= 0; i--) {
            this[Menu.__buttons[i][0]] = _root.movieContainer.attachMovie ("menubuttonTemplate", Menu.__buttons[i][0],  _root.movieContainer.getNextHighestDepth());

            this[Menu.__buttons[i][0]].onPress = function () {
                trace( this[Menu.__buttons[i][4]] );
            }
        }
    }
}


Ik verwacht bij die trace dat er de bestandsnamen van de externe swf's komen te staan maar ik krijg nu undefined.

Ik heb ook de volgende dingen al geprobeerd:
JavaScript:
1
2
3
this[Menu.__buttons[i][0]].onPress = function () {
    trace( Menu.__buttons[i][4] );
}


JavaScript:
1
2
3
4
5
// Met dit krijg ik bij elke menubutton dezelfde externeSWF naam
var tmp:String = Menu.__buttons[i][4];
this[Menu.__buttons[i][0]].onPress = function () {
    trace( tmp ); 
}


JavaScript:
1
2
3
this[Menu.__buttons[i][0]].onPress = function () {
    trace( eval(Menu.__buttons[i][4]) );
}


Wie kan me helpen?

[ Voor 3% gewijzigd door [FrEEzEr] op 22-05-2007 11:39 ]

iMac i7, 8GB | MacMini (2,0-GHz/4GB) | Playstation3 | Wii | Panasonic 42pz85


  • [FrEEzEr]
  • Registratie: April 2000
  • Laatst online: 29-10 17:16
Ik ben iets verder. Ik heb de static van __buttons afgehaald.

JavaScript:
1
2
3
4
// Output netjes de externe swf 
this[this.__buttons[i][0]].onPress = function () {
    trace( _root.menu.__buttons[0][4] );
}


Maar nu wil ik dat de 0 uit _root.menu.__buttons[0][4] automatisch door de variabele i wordt ingevuld.

JavaScript:
1
2
3
4
// Output undefined
this[this.__buttons[i][0]].onPress = function () {
    trace( _root.menu.__buttons[i][4] );
}


Dit werkt dus niet :(

Als ik een trace(i) doe in de onPress functie krjig ik -1 terug, wat natuurlijk niet goed is...

[ Voor 15% gewijzigd door [FrEEzEr] op 22-05-2007 12:20 ]

iMac i7, 8GB | MacMini (2,0-GHz/4GB) | Playstation3 | Wii | Panasonic 42pz85


  • [FrEEzEr]
  • Registratie: April 2000
  • Laatst online: 29-10 17:16
Geen reacties maar post toch maar de oplossing voor mensen die via search hier komen...

Heb het opgelost door:
JavaScript:
1
2
3
4
5
6
7
8
9
10
// Loop de __buttons array door
for(var i:Number = buttonsLength-1; i >= 0; i--) {
    this[Menu.__buttons[i][0]] = _root.movieContainer.attachMovie ("menubuttonTemplate", Menu.__buttons[i][0],  _root.movieContainer.getNextHighestDepth());

    this[this.__buttons[i][0]].swf = this.__buttons[i][4]; // in de movieclip de var opslaan

    this[Menu.__buttons[i][0]].onPress = function () {
        trace( this.swf );
    }
} 


Achteraf heel simpel maar had er niet aan gedacht. |:(

iMac i7, 8GB | MacMini (2,0-GHz/4GB) | Playstation3 | Wii | Panasonic 42pz85