Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 27-07-2003, 13:51   #1 (permalink)
filmtip: snatch
 
Registriert seit: Oct 2001
Beiträge: 1.562
methode aus einem mc auf _root nicht aufrufbar

hallo

ich habe auf frame 1 eines movieclips (verknüpfung 'clip')
folgendes script:
ActionScript:
  1. #initclip
  2.  
  3. Class.prototype=new MovieClip();
  4. Object.registerClass('clip',Class)
  5.  
  6. Class=function(){}
  7.  
  8. Class.prototype.talk=function(){
  9.     trace('talk');
  10. }
  11. #endinitclip

auf der maintimeline möchte ich nun talk aufrufen:

ActionScript:
  1. c = _root.attachMovie('clip', 'clip', 1);
  2. c.talk();

geht leider nicht. etwas übersehen

gruss & thx
skyla
Skyla ist offline   Mit Zitat antworten
Alt 27-07-2003, 14:07   #2 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Ja,
du versuchst den prototype zuzuweisen,
bevor es die Klasse überhaupt gibt.

mfg r.
bokel ist offline   Mit Zitat antworten
Alt 27-07-2003, 14:46   #3 (permalink)
filmtip: snatch
 
Registriert seit: Oct 2001
Beiträge: 1.562
ziemlich dämlich, hab das aus dem ameisen-beispiel
von carlo blatz rüberkopiert- warum das bei ihm trotzdem
klappt weiss der teufel. egal. vielen Dank.
Skyla ist offline   Mit Zitat antworten
Alt 27-07-2003, 15:08   #4 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Das dachte ich mir schon
Carlo hat das auch im PF-Buch drin, meines Erachtens kein guter Stil.
Der Unterschied ist der, dass er die Funktion nicht wie du zuweist, sondern normal deklariert, also so:

ActionScript:
  1. //Carlo
  2. function TestClass(){
  3. }
  4. // du
  5. TestClass = function(){}

Alle solchermassen deklarierten Funktionen werden vom Compiler quasi nach oben verschoben und deshalb stehen sie zur Verfügung, bevor der eigentliche Code beginnt.

Ich kann keinen Vorteil darin sehen, diesen Effekt auszunutzen, ausser vielleicht sowas wie einen "Stil" etablieren zu wollen, der vielleicht eigen, aber m.E. schlecht ist.

mfg r.
bokel ist offline   Mit Zitat antworten
Alt 27-07-2003, 17:50   #5 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
Manchmal ist es vom Überblick einfacher, wenn eine Funktion direkt bei einer anderen steht, weil diese sich gegenseitig aufrufen o.ä.
Janoscharlipp ist offline   Mit Zitat antworten
Alt 27-07-2003, 18:25   #6 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
@Janosch

ja, das ist aber hier nicht das Problem, sondern vielmehr das hier:

ActionScript:
  1. // das funktioniert zwar, ist aber nicht empfehlenswert
  2. // Zuwesiung des prototypes bevor die Klasse deklariert wurde
  3. Class.prototype=new MovieClip();
  4. function Class(){}

Die Zuweisung an den prototype funktioniert hier nur, weil der Compiler die Deklaration der Funktion Class vorzieht. Deshalb exisitiert Class quasi schon bevor es da steht und wir können Eigenschaften von Class wie z.B. prototype definieren.

Anderherum ist es besser, weil man sich dann nicht darauf verlässt, dass der Compiler die Reihenfolge des Codes ändert.

ActionScript:
  1. function Class(){}
  2. Class.prototype=new MovieClip();

Das funktioniert nämlich auch dann noch, wenn man die Klasse über eine Zuweisung definiert:

ActionScript:
  1. Class = function (){}
  2. Class.prototype=new MovieClip();

mfg r
bokel ist offline   Mit Zitat antworten
Alt 27-07-2003, 23:00   #7 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
ich meinte ja eben, dass die Vorgehensweise mit "function balbal(){...}" manchmal angebracht ist, (bzw. praktischer ist) um der Strukturierung Willen.
Janoscharlipp 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 21:56 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele