Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 19-10-2006, 09:24   #1 (permalink)
Neuer User
 
Benutzerbild von zickzackzorro
 
Registriert seit: Sep 2003
Ort: Köln
Beiträge: 116
Befehl "function" verstehen lernen - erste Fragen zum Aufbau/Ablauf

Moinsen! Bin gerade dabei mich in die Welt der Funktionen einzuarbeiten und hab eine simple Funktion geschrieben:

Code:
zaehler = function (i, k) {
	i++;
	o = i;
	trace("i:"+i);
	this.onEnterFrame = function() {
		k++;
		trace("k:"+k);
		if (k == 25) {
			delete this.onEnterFrame;
		}
	};
	this.onEnterFrame = function() {
		o++;
		trace("o:"+o);
		if (o == 35) {
			delete this.onEnterFrame;
		}
	};
	i++;
	trace("i:"+i);
	i++;
	trace("i:"+i);
};
zaehler(3, 5);
Nun 2 Fragen:
1. Wieso wird "k" nicht ausgegeben?
2. Wieso wird erst 3x "i" ausgegeben und dann "o" - die Reihenfolge im Code ist anders?

Wenn ich diese Funktion 2 Frames weiter stoppen möchte sollte dies eigentlich über
Code:
delete zaehler.onEnterFrame;
stop()
funktionieren - tut's aber nicht ???

Schöne Grüße
zickzackzorro ist offline   Mit Zitat antworten
Alt 19-10-2006, 09:35   #2 (permalink)
Neuer User
 
Benutzerbild von zickzackzorro
 
Registriert seit: Sep 2003
Ort: Köln
Beiträge: 116
kennt jemand ein gutes Tutorial zum Thema Funktionen?
zickzackzorro ist offline   Mit Zitat antworten
Alt 19-10-2006, 09:36   #3 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
1)weil das eine onEnterFrame sicher das andere überschreibt
2)die i´s werden ddirekt aufgerufen. die o´s ja erst in einer schleife
3)es geht mit delete this.onEnterFrame

generell wird hier ziemlich schnell klar das du noch nicht soo den plan hast.

PHP-Code:
zaehler = function (ik) { 
stattdessen kannste auch
PHP-Code:
function zaehler(ik) { 
schreiben...

PHP-Code:
delete zaehler.onEnterFrame
zaehler ist doch gar kein mc?! wie soll das gehen..?

nimm unbedingt eine der beiden onEnterFrame schleifen raus.. funktionieren tut so ja eh nur eine auf einmal

cya, sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Alt 19-10-2006, 09:38   #4 (permalink)
_______________
 
Benutzerbild von son yu
 
Registriert seit: Mar 2003
Ort: !Schnitzerland
Beiträge: 2.003
k kann gar nicht ausgegeben werden, es wird ja im nächsten moment wieder überschrieben. Also beide onEnterFrames referenzieren sich auf this!

schöne grüße
__________________
ey… be cool!

Mac OS-X 10.5.6, Safari Version 4 Public Beta (5528.16), on PowerBook 12" G4 1,5 GHz,
1,25 GB RAM, FlashPlayer 9 is auch noch da, wenn ich Lust habe…
son yu ist offline   Mit Zitat antworten
Alt 19-10-2006, 10:19   #5 (permalink)
Neuer User
 
Benutzerbild von zickzackzorro
 
Registriert seit: Sep 2003
Ort: Köln
Beiträge: 116
Zitat:
2)die i´s werden ddirekt aufgerufen. die o´s ja erst in einer schleife
d.h. die Funktion wird nicht linear abgearbeitet, sondern hierarchisch?

Zitat:
3)es geht mit delete this.onEnterFrame
ich will die Funktion ausserhalb der Funktion löschen (2 Frames weiter). "delete this.onEnterFrame" würde den MC löschen, oder ?

Zitat:
delete zaehler.onEnterFrame;
hab den Befehl 1 Frame später gesetzt, die Funktion läuft allerdings bis zum Ende durch - wenn man die "if"-Anweisung rauslässt endlos.
Wenn ich "delete zaehler.onEnterFrame" einen Frame später setze, dürfte die Schleife doch nur 1 oder 2 mal durchlaufen????
zickzackzorro ist offline   Mit Zitat antworten
Alt 19-10-2006, 10:33   #6 (permalink)
Neuer User
 
Benutzerbild von zickzackzorro
 
Registriert seit: Sep 2003
Ort: Köln
Beiträge: 116
Zitat:
Zitat von son yu Beitrag anzeigen
k kann gar nicht ausgegeben werden, es wird ja im nächsten moment wieder überschrieben. Also beide onEnterFrames referenzieren sich auf this!

schöne grüße
Alles klar. Ich müsste also "this.onEnterFrame = function()" einmal aufrufen und abfragen
Code:
if (k == 25 && o == 35) {
delete this.onEnterFrame;
}
zickzackzorro ist offline   Mit Zitat antworten
Alt 19-10-2006, 10:40   #7 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
Zitat:
Zitat von zickzackzorro Beitrag anzeigen
ich will die Funktion ausserhalb der Funktion löschen (2 Frames weiter). "delete this.onEnterFrame" würde den MC löschen, oder ?
öhm du meinst das du die schleife beenden willst, richtig?! "delete this.onEnterFrame" löscht/stoppst du genau deine schleife und nicht this

Zitat:
Zitat von zickzackzorro Beitrag anzeigen
hab den Befehl 1 Frame später gesetzt, die Funktion läuft allerdings bis zum Ende durch - wenn man die "if"-Anweisung rauslässt endlos.
Wenn ich "delete zaehler.onEnterFrame" einen Frame später setze, dürfte die Schleife doch nur 1 oder 2 mal durchlaufen????
öhm.. was haste denn überhaupt genau vor, bzw was soll denn hier geschehen?! wird mir irgentwie nicht 100% klar.. dachte das soll einfach nur eine test function sein so zum rumprobieren...

cya, sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Alt 19-10-2006, 11:22   #8 (permalink)
Neuer User
 
Benutzerbild von zickzackzorro
 
Registriert seit: Sep 2003
Ort: Köln
Beiträge: 116
ja, will ein bischen rumprobieren um das Thema zu verstehen.

Hab die Funktion jetzt mal in einen MC gepackt und was soll ich sagen: delete this.onEnterFrame beendet die Funktion - wahnsinn!!
Aber jetzt noch ne Newbee-Frage: Wenn ich mehrere Funktionen definiere - werden dann alle Funktionen mit delete this.onEnterFrame beendet?

Oder kann man auch gezielt bestimmte Funktionen beenden?
zickzackzorro ist offline   Mit Zitat antworten
Alt 19-10-2006, 11:33   #9 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
du beendest doch einfach nur die schleife innerhalb der function! und wenn du zwei verschiedene functions hast kannste trotzdem nicht zweimal die gleiche onEnterFrame schleife laufen lassen und somit natürlich auch nicht 2 schleifen bennden
da hast du irgentwie noch was auf dem falschen schirm

um dich ein wenig mehr zu verwirren hab ich dir mal was gebastelt:
PHP-Code:
var oE1 this.createEmptyMovieClip("mc_onEnterFrame_1"1);
var 
oE2 this.createEmptyMovieClip("mc_onEnterFrame_2"2);

function 
a() {
    
    var 
0;
    
    
oE1.onEnterFrame = function() {
        
        
i++;
        
        
trace("oE1: " " onEnterFrame Referenz: " this);
        
        if(
>= 10delete this.onEnterFrame;
        
    }
    
}

function 
b() {
    
    var 
0;
    
    
oE2.onEnterFrame = function() {
        
        
i++;
        
        
trace("oE2: " " onEnterFrame Referenz: " this);
        
        if(
>= 1000delete this.onEnterFrame;
        
    }
    
}

a();
b(); 
von aussen kannste die beiden schleifen dann so beenden:
PHP-Code:
delete oE1.onEnterFrame;
delete oE2.onEnterFrame
cya, sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!

Geändert von salazar (19-10-2006 um 11:35 Uhr)
salazar ist offline   Mit Zitat antworten
Alt 19-10-2006, 12:08   #10 (permalink)
Neuer User
 
Benutzerbild von zickzackzorro
 
Registriert seit: Sep 2003
Ort: Köln
Beiträge: 116
okay! Wobei wir fast wieder am Anfang wären Und jetzt hab ich auch begriffen, daß man die Schleife beendet und nicht die Funktion
zickzackzorro 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 17:14 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele