Zurück   Flashforum > Flash > ActionScript > Softwarearchitektur und Entwurfsmuster

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 14-09-2005, 11:51   #1 (permalink)
:Void
 
Benutzerbild von janoshnosh
 
Registriert seit: Jun 2005
Ort: börlin
Beiträge: 931
funktion in klasse aufrufen [?]

hello,
kann mir hier vielleicht jemand sagen, wieso meine function "traceIt()" in meiner klasse nicht aufgerufen wird? ich mache gerade meine ersten schritte mit klassen und oop, ein zweizeiler als antwort könnte die dinge also schon fast lösen . hier die klasse:
ActionScript:
  1. class traceIt {
  2.     // Constructor
  3.     function classTest() {
  4.         create();
  5.     }
  6.     private function create() {
  7.             var main:MovieClip = _root.createEmptyMovieClip('main_mc', 0);
  8.                 main._x = main._y = 200;
  9.                 main.attachMovie('frame_mc', 'frame_mc', 4);
  10.                 main.frame_mc._alpha = 50;
  11.             main._width = main._height = 50;
  12.  
  13.             main.onRollOver = function () {
  14.                 traceIt('rollOver');
  15.             }
  16.             main.onRollOut = function () {
  17.                 traceIt('rollOut');
  18.             }
  19.        }
  20.     private function traceIt(a) {
  21.         trace(a);
  22. }
  23. }
  24. //***********************
  25. //klassen aufruf in der fla:
  26. var b = new traceIt();
der MC main_mc wird erfolgreich erstellt, an ihn erfolgreich der MC frame_mc attached, auch RollOver und RollOut events werden angehängt. dazu soll dann die funktion aufgerufen werden und ich weiß nicht wie ichs richtig mache.
würd mich seeehr über hilfe freuen!
gruß janosch
janoshnosh ist offline   Mit Zitat antworten
Alt 14-09-2005, 12:03   #2 (permalink)
a.k.a maddin79
 
Benutzerbild von madflanderz
 
Registriert seit: Jul 2003
Ort: berlin f-hain
Beiträge: 1.693
eine funktion die den selben namen hat wie die klasse nennt man konstruktor. dieser wird IMMER automatisch beim instanzieren der klasse aufgerufen.
wenn du also ein var b = new traceIt("hallo"); schreibst kommt im trace fenster "hallo".

den konstruktor ruft man im allgemeinen nie selbst auf. mach es lieber so:
ActionScript:
  1. class TraceIt {
  2.         // Constructor wird automatisch aufgerufen
  3.         function TraceIt() {
  4.                create();
  5.         }
  6.      
  7.         private function create() {
  8.                 var main:MovieClip = _root.createEmptyMovieClip('main_mc', 0);
  9.                 main._x = main._y = 200;
  10.                 main.attachMovie('frame_mc', 'frame_mc', 4);
  11.                 main.frame_mc._alpha = 50;
  12.                 main._width = main._height = 50;
  13.  
  14.                 main._ref = this; //referenz auf klasse geht sonst verloren, bzw. es ist nicht eindeutig wo die funktion myTrace gerufen werdn soll
  15.                
  16.                 main.onRollOver = function () {
  17.                         this._ref.myTrace('rollOver');
  18.                 }
  19.                 main.onRollOut = function () {
  20.                         this._ref.myTrace('rollOut');
  21.                 }
  22.         }
  23.         private function myTrace(t)
  24.        {
  25.              trace(t);
  26.        }
  27.        
  28. }
  29. //***********************
  30. //klassen aufruf in der fla:
  31. var b = new TraceIt();

und noch was, klassen sollte man immer groß schreiben, funktionen klein.

gruß maddin
__________________
www.madflanderz.de

ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°` _ addicted to bass _ `°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø
madflanderz ist offline   Mit Zitat antworten
Alt 14-09-2005, 12:12   #3 (permalink)
:Void
 
Benutzerbild von janoshnosh
 
Registriert seit: Jun 2005
Ort: börlin
Beiträge: 931
hi,
tausend dank für die schnelle hilfe! main._ref = this; das wars, so geht datt .
mein script oben hab ich in der allgemeinen verwirrung total falsch gepostet, aber ich hab nochmal glück gehabt -> hast genau richtig verstanden wie es sein sollte, ich hab da beim einfügen ein paar namen verdreht [shaem] [/shaem].

also vielen dank nochmal!
gruß janosch
janoshnosh ist offline   Mit Zitat antworten
Alt 14-09-2005, 17:11   #4 (permalink)
a.k.a maddin79
 
Benutzerbild von madflanderz
 
Registriert seit: Jul 2003
Ort: berlin f-hain
Beiträge: 1.693
yo alta !
__________________
www.madflanderz.de

ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°` _ addicted to bass _ `°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø
madflanderz 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 15:27 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele