Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 17-08-2009, 03:38   #1 (permalink)
Neuer User
 
Registriert seit: Apr 2003
Beiträge: 230
kleinen codeschnipsel verkleinern

hallo an alle.
ich habe folgenden code
PHP-Code:
_root.menu1b.onRollOut = function () {
    
menuestandart();
}
_root.menu2b.onRollOut = function () {
    
menuestandart();
}
_root.menu3b.onRollOut = function () {
    
menuestandart();
}
_root.menu4b.onRollOut = function () {
    
menuestandart();
}
_root.menu5b.onRollOut = function () {
    
menuestandart();

den sollte man doch auch in ~5 zeilen packen können, oder?
innerhalb einer for-schleife funktioniert das ja nicht, das ist mir klar.
auch mit onEnterFrame krieg ich es nicht gekürzt hin.

gibt es da eine einfache möglichkeit diesen code entsprechend zu kürzen?
Real2k ist offline   Mit Zitat antworten
Alt 17-08-2009, 07:35   #2 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Warum soll das mit ner for-Schleife nicht gehen..?
PHP-Code:
for (var 1<= 5i++) {
    
_root["menu" "b"].onRelease = function() {}

__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 17-08-2009, 08:03   #3 (permalink)
Achim Math.PI
 
Benutzerbild von bloba
 
Registriert seit: Jul 2001
Ort: cool Colonia
Beiträge: 11.642
...und für den fall, dass du verschieden namige buttons verwenden möchtest>
PHP-Code:
var buttons:Array = ["menu1b""menu2a""menu3d"];
for (var 
0i<buttons.lengthi++) {
    
_root[buttons[i]].onRelease = function() {
    };


__________________
gruß bloba

2 x onkel² b_d
bloba ist offline   Mit Zitat antworten
Alt 17-08-2009, 16:35   #4 (permalink)
Neuer User
 
Registriert seit: Apr 2003
Beiträge: 230
Zitat:
Zitat von sonar Beitrag anzeigen
Warum soll das mit ner for-Schleife nicht gehen..?
PHP-Code:
for (var 1<= 5i++) {
    
_root["menu" "b"].onRelease = function() {}

okay.. folgender code funktioniert so aber komischerweisse nicht:

Original wie es funzt:
PHP-Code:
_root.menu1b.onPress = function() {
    
menuetextfelderschliessen();
    
_root.menu1c._visible true;
};
..
..
.. 
Und so ist der Teil innerhalb der For-Schleife, was komischerweisse nicht funktioniert:
PHP-Code:
for (var 1i<=5i++) {
    
//_root["menu"+i+"b"].onReleaseOutside = function() {
    //    menuestandart();
    //};
    
_root["menu"+i+"b"].onPress = function() {
        
menuetextfelderschliessen();
        
_root["menu"+i+"c"]._visible true// _root.menu1c._visible = true; usw wird nicht ausgeführt
    
};

Gibt es da nochmal was zu beachten??
Real2k ist offline   Mit Zitat antworten
Alt 17-08-2009, 16:41   #5 (permalink)
as3 addict
 
Benutzerbild von Marcy_LH
 
Registriert seit: Jun 2002
Ort: Leipzig
Beiträge: 351
Da musst du drauf achten, dass du nicht das i verwendest. Das wurde hochgezählt und ist zu dem Zeitpunkt dann eben 6 und damit wird

_root["menu"+i+"c"]._visible = true;

eben

_root["menu"+6+"c"]._visible = true;

was es ja nicht gibt
Marcy_LH ist offline   Mit Zitat antworten
Alt 17-08-2009, 16:47   #6 (permalink)
Neuer User
 
Registriert seit: Apr 2003
Beiträge: 230
Zitat:
Zitat von Marcy_LH Beitrag anzeigen
Da musst du drauf achten, dass du nicht das i verwendest. Das wurde hochgezählt und ist zu dem Zeitpunkt dann eben 6 und damit wird

_root["menu"+i+"c"]._visible = true;

eben

_root["menu"+6+"c"]._visible = true;

was es ja nicht gibt
aber wenn i=1 ist, dann ist doch jedes i in der for-schleife eben 1. und somit müsste es doch gehen. dann ist das doch eigentlich genau so, wie im funktionierenden (langen) codebeispiel von mir.
ich verstehs grad echt nicht
kannst du das bitte etwas genauer erklären. Ich wüsste nciht, was es mit der variable i auf sich haben kann.
i=6 kommt ja nicht vor und wird auch nciht gebraucht.

Wenn in diesem code:
PHP-Code:
_root["menu"+i+"b"].onPress = function() {
        
menuetextfelderschliessen();
        
_root["menu"+i+"c"]._visible true;
    }; 
i = 1 ist, dann ist das doch dasselbe wie dieser code:
PHP-Code:
_root.menu1b.onPress = function() {
    
menuetextfelderschliessen();
    
_root.menu1c._visible true;
}; 
oder nicht??

Geändert von Real2k (17-08-2009 um 16:49 Uhr)
Real2k ist offline   Mit Zitat antworten
Alt 17-08-2009, 17:38   #7 (permalink)
Achim Math.PI
 
Benutzerbild von bloba
 
Registriert seit: Jul 2001
Ort: cool Colonia
Beiträge: 11.642
die forschleife wird zuerste ausgeführt, also wenn das onPress ereignis stattfindet, ist schon hohgezählt

du musst den wert i in jede button instanz speichern....
PHP-Code:
for (var 1i<=5i++) {
        
_root["menu"+i+"b"].ID i;
        
_root["menu"+i+"b"].onPress = function() {
trace (this.ID)
        
menuetextfelderschliessen();
        
_root["menu"+this.ID+"c"]._visible true
    };

__________________
gruß bloba

2 x onkel² b_d
bloba ist offline   Mit Zitat antworten
Alt 17-08-2009, 21:09   #8 (permalink)
as3 addict
 
Benutzerbild von Marcy_LH
 
Registriert seit: Jun 2002
Ort: Leipzig
Beiträge: 351
ganz genau... die schleife wird ausgeführt und i ist als abbruchbedingung dann eben 6, wenn die schleife nicht mehr durchlaufen wird. flash merkt sie sich und bei onPress ist sie immernoch 6...

ansonsten hat bloba recht^^
Marcy_LH ist offline   Mit Zitat antworten
Alt 17-08-2009, 21:18   #9 (permalink)
Neuer User
 
Registriert seit: Apr 2003
Beiträge: 230
Ich danke euch beiden auf jeden Fall! Es funktioniert jetzt.
Und ich glaube, ich hab es jetzt auch verstanden, warum es so ist wie es eben ist ;-)

Vielen Dank.
Ich werde sicher noch die ein oder andere Frage haben
Real2k ist offline   Mit Zitat antworten
Alt 18-08-2009, 04:46   #10 (permalink)
Neuer User
 
Registriert seit: Apr 2003
Beiträge: 230
EDIT: der code funzt doch... hatte nen fehler an anderer stelle, welcher sich auf diesen code ausgewirkt hat..


Ich habe das ganze jetzt nochmal ausgeweitet.
Mit 2 ID's und 2 FOR-Schleifen:

Hier der stark verkürzte code mit dem wesentlichen problem:
PHP-Code:
var sprachenArray:Array = ["GER""ENG"];
for (var 
1i<=5i++) {
    for (var 
0j<sprachenArray.lengthj++) {
_root["menu"+i+"b"+sprachenArray[j]].ID i;
        
_root["menu"+i+"b"+sprachenArray[j]].IDX j;
        
_root["menu"+i+"b"+sprachenArray[j]].onPress = function() {
            
menuetextfelderschliessen();
            
_root["menu"+this.ID+"c"+sprachenArray[this.IDX]]._visible true;
        };
    }

Da ich "this.ID" ja nicht 2 mal für unterschiedliche dinge nehmen kann - also einmal das hochzählen der zahlen 1 bis 5 ,und einmal für das Array ENG bzw GER, dachte ich mir, ich nenne es für das Array einfach "this.IDX".
Da "ID" im code nicht blau ist, nehme ich an, ich kann für "ID" jeden anderen verfügbaren Namen wählen, auch wenn "ID" am naheliegendsten ist, oder?
Wenn dem so ist, verstehe ich nicht, warum mein beispiel nicht funktioniert..
Oder muss ich das zwingend "ID" nennen? aber was dann, bei 2 unterschiedlichen ID's wie in meinem Beispiel?
Oder bin ich gerade total auf dem Holzweg und das Problem, warum es nicht funktioniert, liegt wo ganz anders?

Wie gesagt, der code oben ist stark gekürzt. die MC's heissen nun: menu1aGER, menu1bGER, menu1cGER, menu2aGER, ... ... ..., menu5cGER, menu1aENG, ... ... ..., menu5cENG

Geändert von Real2k (18-08-2009 um 05:51 Uhr)
Real2k ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 18:32 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele