Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 22-03-2005, 12:45   #1 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Beiträge: 90
Problem bei dynamisch erstellten MovieClips

Hi Leute,

Dieser Code liegt bei mir in der _root (1. Ebene, 1. Bild).

Scheinbar wird onEnterFrame nur einenmal von jedem Objekt aufgerufen (also nur 3 mal). Müsste die onEnterFrame nicht immer wiederholt werden? Wie kann das sein, normaler weise müsste da doch voll die Post abgehen. *g*

VarEnemy=_root.createEmptyMovieClip("Enemy"+i,10+i );
VarEnemy.loadMovie("enemy"+ (i-1) +".jpg");
VarEnemy.ID=i;
VarEnemy._x = 408;
VarEnemy._y = 331;

VarEnemy.onEnterFrame = function() {
if(_root.collisionE[this.ID] == true && _root.chooseE[this.ID] == false) {
num = random(4);
}

switch(num) {
case 1:
this.EnemyLeft(this.ID);
break;
case 2:
this.EnemyRight(this.ID);
break;
case 3:
this.EnemyUp(this.ID);
break;
case 4:
this.EnemyDown(this.ID);
break;
}
}

Danke schonmal im Voraus! :-)

Gruß Nova

Geändert von Novanic (22-03-2005 um 13:17 Uhr)
Novanic ist offline   Mit Zitat antworten
Alt 22-03-2005, 13:24   #2 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
1. hattest du doch schon nen Thread irgendwo zu dem Thema
2. bei diesem Code hier fehlt doch noch die for-Schleife außen rum..?
3. formatiere doch bitte deinen Code hier mit den AS-Tags, dann erkennt man auch, was wie zusammen gehört
4. geht ein enterFrame verloren, wenn was externes in einen MC geladen wird
__________________
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 22-03-2005, 13:35   #3 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Beiträge: 90
Oha,

ja die For-Schleife fehlt tatsächlich.

Aber das onEnterFrame wird ja erst nach dem loadMovie definiert, also dürfte das doch nicht verloren gehen oder? Und wenn doch wie soll man das ändern?
Hab das Problem leider noch net gefunden. :-(

Der Code liegt so in der _root (da ist keine Funktion oder so drum):

ActionScript:
  1. for (i = 1; i <= 3; i++) {
  2.     VarEnemy = _root.createEmptyMovieClip("Enemy"+i,10+i);
  3.     VarEnemy.loadMovie("enemy"+ (i-1) +".jpg");
  4.     VarEnemy.ID=i;
  5.     VarEnemy._x = 408;
  6.     VarEnemy._y = 331;
  7.    
  8.     VarEnemy.onEnterFrame = function() {
  9.         trace(this)
  10.         if(_root.collisionE[this.ID] == true && _root.chooseE[this.ID] == false) {
  11.             num = random(4);
  12.         }
  13.  
  14.         switch(num) {
  15.             case 1:
  16.                 this.EnemyLeft(this.ID);
  17.                 break;
  18.             case 2:
  19.                 this.EnemyRight(this.ID);
  20.                 break;
  21.             case 3:
  22.                 this.EnemyUp(this.ID);
  23.                 break;
  24.             case 4:
  25.                 this.EnemyDown(this.ID);
  26.                 break;
  27.         }
  28.     }
  29. }

Gruß Nova
Novanic ist offline   Mit Zitat antworten
Alt 22-03-2005, 14:41   #4 (permalink)
Neuer User
 
Registriert seit: Dec 2002
Beiträge: 296
tach auch...

ich denke, esliegt definitiv an dem laden des bildes.
Die enterframe funktion wird also nach fertig laden des jpgs überschrieben.

Die schnellste Lösung wäre sicherlich das erstellen eines Container MC'S in den Enemy MC's
ActionScript:
  1. for (i = 1; i <= 3; i++) {
  2.     VarEnemy = _root.createEmptyMovieClip("Enemy"+i,10+i);
  3.     VarEnemyCont = VarEnemy.createEmptyMovieClip("container",i);
  4.     VarEnemyCont.loadMovie("enemy"+ (i-1) +".jpg");
  5.     VarEnemy.ID=i;
  6.     VarEnemy._x = 408;
  7.     VarEnemy._y = 331;
  8.      
  9.     VarEnemy.onEnterFrame = function() {
  10.         trace(this)
  11.         if(_root.collisionE[this.ID] == true && _root.chooseE[this.ID] == false) {
  12.             num = random(4);
  13.         }
  14.  
  15.         switch(num) {
  16.             case 1:
  17.                 this.EnemyLeft(this.ID);
  18.                 break;
  19.             case 2:
  20.                 this.EnemyRight(this.ID);
  21.                 break;
  22.             case 3:
  23.                 this.EnemyUp(this.ID);
  24.                 break;
  25.             case 4:
  26.                 this.EnemyDown(this.ID);
  27.                 break;
  28.         }
  29.     }
  30. }
das sollte funktionieren

Grüße
Serge
Serge 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 04:49 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele