Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 23-12-2004, 20:56   #1 (permalink)
Waffe==Verstand
 
Benutzerbild von p-flash
 
Registriert seit: Jul 2004
Ort: Düsseldorf
Beiträge: 724
Klassenmethode in Eventhandler aufrufen

Hi,

ich habe eine Klasse Gegner1. Davon erstelle ich ein Objekt einGegner1.
Dieses Objekt übergebe ich als Initialisierung der Methode attachMovie.

Ich will dass das Mc das attached wurde direkt
onEnterFrame = function() { this.bewegen(); }; besitzt, wobei bewegen() als prototype in der Klasse Gegner1 erstellt wurde.

Ich habe es so versucht, aber das geht nicht

PHP-Code:
_global.Grenze 200;
_global.GegnerTiefe 300;
// Klasse Gegner1 erstellen
function Gegner1(pXpYpEnergiepGeschwindigkeitpWaffepAnzahlSchuss)
{
    
this._x pX;
    
this._y pY;
    
this.Energie pEnergie;
    
this.Geschwindigkeit pGeschwindigkeit;
    
this.Waffe pWaffe;
    
this.AnzahlSchuss pAnzahlSchuss;
    
// Aktuellen Tiefe-Stand erhoehen
    
++_global.GegnerTiefe;
}
Gegner1.prototype.schiessen = function()
{
    
trace(34);
    
_root.attachMovie(this.Waffethis.Waffe _global.GegnerSchussTiefe_global.GegnerSchussTiefe);
}
Gegner1.prototype.bewegen = function()
{
    
trace("hallo");
    
this._x -= this.Geschwindigkeit;
    
/*if(this._x < _global.Grenze)
    {
        this.onEnterFrame = this.schiessen;
    }*/
};

var 
einGegner1 = new Gegner1(Stage.width301005null10);

einGegner1.onEnterFrame = function { this.bewegen(); };
this.attachMovie("gegner1_mc""gegner1_mc"+_global.GegnerTiefe_global.GegnerTiefeeinGegner1); 
Das klappt aber nicht. Wenn ich aber
einGegner1.onEnterFrame = function() { this._x -= 5; };
klappt es. Wieso wird die Funktion bewegen im onEnterFrame nicht aufgerufen? einGegner1.bewegen() klappt.

Bin dankbar für jeden Tip.

p-flash

Geändert von p-flash (23-12-2004 um 20:58 Uhr)
p-flash ist offline   Mit Zitat antworten
Alt 24-12-2004, 14:41   #2 (permalink)
[Ernst Reiter]
 
Benutzerbild von Scrawer
 
Registriert seit: Jul 2001
Ort: austria
Beiträge: 3.691
du gehst das etwas falsch an...

du musst deine class gegner auch erst von der movieclip class erben lassen...leider reicht das bei flash selber so noch nicht aus... da eben durch new MovieClip kein movieclip container erstellt wird... für das gibt es dann noch registerClass.....

ein kleines beispiel..... erstell in der Library einen MovieClip für deinen Gegner und vergibt die ID: "ENEMY_MOVIECLIP"

ActionScript:
  1. function EnemyClass()
  2. {
  3.     // constructor
  4. }
  5.  
  6. // extends MovieClip Class
  7. EnemyClass.__proto__ = MovieClip.prototype;
  8.  
  9. // methode
  10. EnemyClass.prototype.moveRight = function()
  11. {   
  12.     this.onEnterFrame = function()
  13.     {
  14.         this._x += 10;
  15.        
  16.         if (this._x > 200)
  17.         {
  18.             delete this.onEnterFrame;
  19.         }
  20.     }
  21. }
  22.  
  23. // class registrieren
  24. Object.registerClass("ENEMY_MOVIECLIP", EnemyClass);
  25.  
  26. // instanz erstellen
  27. _root.attachMovie("ENEMY_MOVIECLIP", "enemyA", 1);
  28.  
  29. _root.enemyA.moveRight();

das sollte dich weiterbringen
__________________
Das Gesetz des Lebens liegt im Notwendigen. Der Reiz des Lebens liegt im Überflüssigen
m.f.g Scrawer (www.thinkspace.at)
Scrawer ist offline   Mit Zitat antworten
Alt 24-12-2004, 16:36   #3 (permalink)
Waffe==Verstand
 
Benutzerbild von p-flash
 
Registriert seit: Jul 2004
Ort: Düsseldorf
Beiträge: 724
Hammer. Danke.

Wie kann ich aber Argumente übergeben, um die attachten Mcs verschiedene initalisierungswerte zu geben?

Nochmals Danke.

p-flash
p-flash ist offline   Mit Zitat antworten
Alt 24-12-2004, 18:29   #4 (permalink)
[Ernst Reiter]
 
Benutzerbild von Scrawer
 
Registriert seit: Jul 2001
Ort: austria
Beiträge: 3.691
du kannst dem attachMovie ein initObject übergeben.... für die setter, da werden dann MovieClip setter und wenn vorhanden setter der EnemyClass ausgeführt...

wenn du jedoch beim erstellen einer class instanz parameter setzen möchtest.... welche nicht per "new" sondern mit "registerClass" und "attachMovie" erstellt wird, geht das nur über eine zusätzliche "init" methode.....
__________________
Das Gesetz des Lebens liegt im Notwendigen. Der Reiz des Lebens liegt im Überflüssigen
m.f.g Scrawer (www.thinkspace.at)
Scrawer ist offline   Mit Zitat antworten
Alt 24-12-2004, 18:53   #5 (permalink)
Waffe==Verstand
 
Benutzerbild von p-flash
 
Registriert seit: Jul 2004
Ort: Düsseldorf
Beiträge: 724
hmm...kannst du ein Beispiel machen. verstehe es nicht ganz.

danke.

p-flash
p-flash ist offline   Mit Zitat antworten
Alt 25-12-2004, 09:36   #6 (permalink)
[Ernst Reiter]
 
Benutzerbild von Scrawer
 
Registriert seit: Jul 2001
Ort: austria
Beiträge: 3.691
ActionScript:
  1. // constructor
  2. function EnemyClass()
  3. {
  4.     this.__isInitialize = false;
  5. }
  6.  
  7. // extends MovieClip Class
  8. EnemyClass.__proto__ = MovieClip.prototype;
  9.  
  10. // init methode
  11. EnemyClass.prototype.init = function(x, y, energy)
  12. {   
  13.     if (!this.__isInitialize)
  14.     {
  15.         // __isInitialize stellt sicher das die init methode nur einmal ausgeführt wird
  16.         this.__isInitialize = true;
  17.  
  18.         this._x = x;
  19.         this._y = y;
  20.         this.__energy = energy;
  21.  
  22.         return this;
  23.     }
  24. }
  25.  
  26. // methode
  27. EnemyClass.prototype.moveRight = function()
  28. {   
  29. }
  30.  
  31. //----
  32.  
  33. // class registrieren
  34. Object.registerClass("ENEMY_MOVIECLIP", EnemyClass);
  35.  
  36. // instanz erstellen
  37. var enemy = _root.attachMovie("ENEMY_MOVIECLIP", "enemyA", 1).init(0, 0, 100);
  38. enemy.moveRight();
__________________
Das Gesetz des Lebens liegt im Notwendigen. Der Reiz des Lebens liegt im Überflüssigen
m.f.g Scrawer (www.thinkspace.at)
Scrawer ist offline   Mit Zitat antworten
Alt 25-12-2004, 11:44   #7 (permalink)
Waffe==Verstand
 
Benutzerbild von p-flash
 
Registriert seit: Jul 2004
Ort: Düsseldorf
Beiträge: 724
GENIAL!! Vielen Dank!

p-flash
p-flash 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:27 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele