Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 30-10-2005, 10:39   #1 (permalink)
Ein Alter User
 
Benutzerbild von jotti
 
Registriert seit: Mar 2004
Ort: Österreich
Beiträge: 159
Function nur einmal aufrufen -ausführen?

Hallo !

Ich will funktion "otto" nur einmal aufrufen!

ActionScript:
  1. //Diese funktion wird in einer Schleife erfüllt
  2. if (Math.round(zielgröße-this.Kreise._xscale)<=0) {
  3.         otto();
  4.  
  5.  
  6. otto = function () {trace ("function wird ausgeführt")

Ich habe schon versucht mit while aber da stürtzt mir flash ab.
Was kann ich noch machen?

Geändert von jotti (30-10-2005 um 10:45 Uhr)
jotti ist offline   Mit Zitat antworten
Alt 30-10-2005, 11:16   #2 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Bau dir doch einfach ne Kontrolle in deine Schleife ein, ob die Funktion schon mal aufgerufen wurde, so in der Art:
ActionScript:
  1. if (!fncCalled) {
  2. otto();
  3. fncCalled = true;
  4. }
__________________
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 30-10-2005, 12:36   #3 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Frage ist mit sonars Antwort sicherlich
schon bestens geklärt, dennoch möchte
ich mal nachhaken.

Dein if wird doch sicherlich in einem onEnterFrame
oder setInterval abgefragt, oder wird das anders gemacht?
Wenn es ein setInterval oder onEnter.... ist, kannst
Du ja dieses löschen sobald die if-Anweisung true ergibt.
ActionScript:
  1. delete bla.onEnterFrame;
bzw.
ActionScript:
  1. clearInterval(blubb);
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz ist offline   Mit Zitat antworten
Alt 30-10-2005, 19:04   #4 (permalink)
Ein Alter User
 
Benutzerbild von jotti
 
Registriert seit: Mar 2004
Ort: Österreich
Beiträge: 159
Ich glaube ich lösche es ja aber es wird trotzdem immer wieder ausgeführt!

Falls jemand der ganze codeblock interresiert.

ActionScript:
  1. stop();
  2. this.text1._alpha = 0;
  3. this.ITB._alpha = 0;
  4. //Kreise machen
  5. var e = 104;
  6. var a = 90;
  7. for (var i = 0; i<a; i++) {
  8.     for (var j = 0; j<e-1; j++) {
  9.         var k = this.Kreise.K.duplicateMovieClip("K"+i, (i*e)+j);
  10.         k._x = a-a-400+j*8;
  11.         k._y = a-354+i*8;
  12.     }
  13. }
  14. //this.Kreise._rotation =60
  15. var zielgröße = 8000;
  16. var speed = 10;
  17. this.onEnterFrame = function() {
  18.     this.Kreise._xscale = this.Kreise._yscale += (this.Kreise._xscale*.06);
  19.     this.Kreise._rotation += 3;
  20.     if (Math.round(zielgröße-this.Kreise._xscale)<=0) {
  21.         if (!fncCalledotto) {
  22.             otto();
  23.             fncCalledotto = true;
  24.         }
  25.         trace(this+" FERTIG *g*");
  26.         delete this.onEnterFrame;
  27.     }
  28. };
  29. //ITB verkleinern und wieder aufblasen
  30. //Warum es zuerst verkleinert wird ist mir ein Rätsel
  31. //Wahrscheinlich weil this.ITB._xscale = 10000; flash ins wanken bringt
  32. otto = function () {
  33.     var zielgr = 100;
  34.     var spee = 20;
  35.     this.ITB._alpha = 100;
  36.     this.ITB._xscale = 10000;
  37.     // ITB Funktion
  38.     this.ITB.onEnterFrame = function() {
  39.         this._xscale = this._yscale += (zielgr-this._xscale)/spee;
  40.         // Funktion einblenden
  41.         trace("OTTO "+Math.round(zielgr-this._xscale));
  42.         if ((Math.round(zielgr-this._xscale) == 101)) {
  43.             if (!fncCalled) {
  44.                 einblenden();
  45.                 fncCalled = true;
  46.             }
  47.         }
  48.         // Ende Funktion einblenden
  49.         if (Math.round(zielgr-this._xscale)<=0) {
  50.             // this._xscale = this._yscale=zielgr;
  51.             trace("Funktion ITB Fertig");
  52.             delete this.ITB.onEnterFrame;
  53.         }
  54.     };
  55. };
  56. // Text einblenden
  57. einblenden = function () {
  58.     this.text1.onEnterFrame = function() {
  59.         this._alpha += 1.5;
  60.         if (this._alpha>=100) {
  61.             delete this.text1.onEnterFrame;
  62.         }
  63.     };
  64. };
Ich kann dieses on enter frame nicht löschen warum ???

Geändert von jotti (30-10-2005 um 19:06 Uhr)
jotti ist offline   Mit Zitat antworten
Alt 30-10-2005, 19:07   #5 (permalink)
nky
Bontempi Punk
 
Benutzerbild von nky
 
Registriert seit: Dec 2001
Ort: Dtld/Pfalz
Beiträge: 4.185
nicht delete this.text1.onEnterFrame; sondern delete this.onEnterFrame... und so auch bei den anderen..

Gruss nky
nky ist offline   Mit Zitat antworten
Alt 30-10-2005, 19:11   #6 (permalink)
Ein Alter User
 
Benutzerbild von jotti
 
Registriert seit: Mar 2004
Ort: Österreich
Beiträge: 159
Ja du hast recht es funktioniert *g*

THX Jotti

Geändert von jotti (30-10-2005 um 19:14 Uhr)
jotti ist offline   Mit Zitat antworten
Alt 30-10-2005, 19:14   #7 (permalink)
nky
Bontempi Punk
 
Benutzerbild von nky
 
Registriert seit: Dec 2001
Ort: Dtld/Pfalz
Beiträge: 4.185
ja genau..

nur wenn du in dem enterframe drin bist...also innerhalb der {} ..dann verweist this auf den enterframe..

d.h wenn du innerhalb des on ENterframes den delete machst...dann mit this..weil das ja direkt drauf verweist...

so wie du das zu anfangs hattest...wäre es wenn du von ausserhalb deinen on ENterFrmae löschen wolltest... das war also net verkehrt...sonder nur an der stelle verkehrt *g

Gruss nky
nky 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 13:31 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele