Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 22-10-2006, 20:19   #1 (permalink)
Neuer User
 
Benutzerbild von kumbpel
 
Registriert seit: Dec 2005
Beiträge: 6
Unhappy Dynamische Zahl einer FOR-Schleife ist statisch

wo auch immer man zum testen ein
PHP-Code:
trace(k
in die for-schleife einsetzt, ist der wert, der dann für "k" ausgegeben wird, immer "m"+1. wie kann das sein?

man befindet sich ja in einer schleife, die nur ausgeführt wird, wenn "k" kleiner oder gleich "m" ist. wenn man button "b3" drückt, müsste "k"=3 sein, da der button aktiviert wird: _menu["b"+k].onRollOver.

"k <= m" ist die bedingung. "m" ist in meinem fall 9.
der trace ergibt in der schleife (egal welchen button ich drücke) 10.

ich könnte genauso gut "k <= 9" sagen, dann wäre "k" getraced ebenfalls 10.


PHP-Code:
onClipEvent(enterFrame){
    for (
1<= mk++) {
        
_root._main._menu["b"+k].onRollOver = function() {
            
this.menuTXT.endX this.menuTXT.x1;
            
this.buttonBG.buttonStatus this.buttonBG.active;
        }
        

        
_root._main._menu["b"+k].onRollOut = function() {
            
this.menuTXT.endX this.menuTXT.x0;
            
this.buttonBG.buttonStatus this.buttonBG.inactive;
        }
        

        
_root._main._menu["b"+k].onRelease = function() {
            for (
1<= mp++) {
                
_root._main._menu["b"+p].menuTXT.buttonStatus _root._main._menu["b"+p].menuTXT.inactive;
                
_root._main._menu["b"+k].menuTXT.buttonStatus _root._main._menu["b"+k].menuTXT.active;
                
_root._main.endY _root._main.y1;
            }
        }
    }

kumbpel ist offline   Mit Zitat antworten
Alt 22-10-2006, 20:39   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
wo kommt den dein m her?
wo steht denn bei dir
m = irgendwas;

und
die for (k = 1; k <= m; k++) { schleife wird abgearbeitet.

viel viel später wird ein _root._main._menu["b"+k].onRelease ausgeführt.
da ist dein k schon längst gestorben, bzw. bis zum schleifenende durchgelaufen.
Code:
_root._main._menu["b"+k].onRelease = function() {
	for (var p=1; p<=m; p++) {
		_root._main._menu["b"+p].menuTXT.buttonStatus = _root._main._menu["b"+p].menuTXT.inactive;
		this.menuTXT.buttonStatus = this.menuTXT.active;
		_root._main.endY = _root._main.y1;
	}
};
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (22-10-2006 um 20:45 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 22-10-2006, 23:46   #3 (permalink)
Neuer User
 
Benutzerbild von kumbpel
 
Registriert seit: Dec 2005
Beiträge: 6
"m" ist eine globale variable, die in einem anderen keyframe deklariert wird.

wieso meinst du, dass "k" platt ist?
die erste zeile der FOR-schleife ist bereits die onRelease-funktion. wenn ich bsp. in eben dieser funktion das "k" via trace(k) auslesen lasse, ist der inhalt dieser variablen immer um eins größer als der maximal-wert von "m":
_global.m=9; ...
for (k=1;k<=m;k++) { ...
trace(k) .....
-> k=10

wie kann das sein?



edit: ich seh gerade: hast recht! onRelease kommt in der FOR-schleife zum schluss. aber das sollte nichts zur sache tun...
o.g. prinzip tritt ebenso auf, wenn ich das "k" im onRollOver oder onRollOut trace... :confused

Geändert von kumbpel (22-10-2006 um 23:49 Uhr)
kumbpel ist offline   Mit Zitat antworten
Alt 23-10-2006, 02:05   #4 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
wann wird die onRelease-function ausgeführt?
wenn du deinen script abarbeitest,
oder wenn viel viel später jemand auf die maustaste klickt?
und welchen zustand hat k zum zeitpunkt des mausklicks?


"..der inhalt dieser variablen immer um eins größer als der maximal-wert von "m".."
ja
die k schleife wird nicht mehr ausgeführt, wenn k>m ist.
und so bleibt k bis irgend wann einmal jemand auf den button klickt und so das onRelease verursacht. und da willst du das da ausführen:
_root._main._menu["b"+k].menuTXT.buttonStatus = _root._main._menu["b"+k].menuTXT.active;
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (23-10-2006 um 02:11 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 23-10-2006, 06:34   #5 (permalink)
Neuer User
 
Benutzerbild von kumbpel
 
Registriert seit: Dec 2005
Beiträge: 6
ah, jetzt verstehe ich, was du meinst....


der code liegt allerdings in einer movieclip-instanz im _root und die _root-timeline umfasst nur einen einzigen keyframe. der code wird also - da onClipEvent(enterFrame) - ständig ausgeführt wird...
also müsste die schleife, doch auch ständig durchlaufen werden, da "k" beim schleifenbeginn immer auf 1 zurückgesetzt wird.

die funktionen, die unter onRollOver, onRollOut und onRelease ausgeführt werden funktionieren ja. sie sprechen movieclips an, die _root._main._menu.b1 bis _root._main._menu.b9 heißen. die letztgenannte zahl wird über "k" hervorgerufen...

ein trace in der for-schleife ergibt 1-9. der trace in einer der drei o.g. funktion allerdings immer 10.
kumbpel ist offline   Mit Zitat antworten
Alt 23-10-2006, 22:20   #6 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
Zitat:
Zitat von kumbpel Beitrag anzeigen
der code wird also - da onClipEvent(enterFrame) - ständig ausgeführt
ja, was absoluter käse ist. einmal installiert ist installiert. oder programmierst du auch
a=5=5=5=5=5=5=5;
nur um sicher zu gehen, das dann auch tatsächlich 5 in der variablen a drinnsteht?

Zitat:
Zitat von kumbpel Beitrag anzeigen
ah, jetzt verstehe ich, was du meinst....
sorry, wenn du irgendwas verstanden hättest, dann würdest du nicht mehr fragen.
die event-funktionen werden NICHT mit der for-schleife abgearbeitet, sondern DANAAAHAAAACH. aber es ist sinnlos, ich kann das selbe noch 100mal wiederholen :-(

ich hatte dir auch eine lösung aufgeschrieben (in #2):
ersetze bitte in onRelease das unsinnige
_root._main._menu["b"+k].menuTXT.buttonStatus = _root._main._menu["b"+k].menuTXT.active;
durch
this.menuTXT.buttonStatus = this.menuTXT.active;
und gut is ...
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (23-10-2006 um 22:28 Uhr)
hgseib 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 05:25 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele