Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 02-10-2008, 21:37   #1 (permalink)
öcher flasher
 
Benutzerbild von rady
 
Registriert seit: Feb 2008
Beiträge: 266
fragen zur oop,konstruktor,flex

Hi

1.Arbeite mich immer besser in die OOP ein und will auch Flex mit Flash kombinieren, da Flex eindeutig besser für AS ist. Also wie ich es bisher verstanden habe, kann man die Dokumentklasse verwenden, anstatt wie früher den Code in den 1. Frame der flv zulegen.
Lieg ich soweit richtig???

2.Den Konstruktor der Dokumentklasse benutzt man, um die EventListener für den kompletten Film zu deklarieren. Welche Aufgaben übernimmt er noch??

3.Dazu habe ich noch eine Frage zu Flex. Bei www.gotoandlearn.com gibt es ein schönes Video Tutorial, wie man die Dokumentklasse in Flex erstellt.
In meinem Buch steht, das der Konstruktor von der Movieclip-Klasse erbt. Jedoch erstellt Flex, wenn man ein neues As Projekt anlegt, die Sprite Klasse, also bei Flex erbt der Konstruktor von der Sprite-Klasse.
Wo ist der Unterschied? Ist es egal,ob von der Movieclip Klasse oder der Sprite. Die einzige Erklärung ist für mich, das die Movieclip-Klasse ja sowieso von der Sprite erbt.

4.ich habe mir zum Lernen einen kleinen Code geschrieben:

ActionScript:
  1. package {
  2.     import flash.display.MovieClip;
  3.     import flash.display.SimpleButton;
  4.     import flash.text.*;
  5.     import flash.events.*;
  6.  
  7.     public class DocumentClass extends MovieClip {
  8.  
  9.         public function DocumentClass():void {
  10.             text_txt.x = 200;
  11.             text_txt.border = true;
  12.             text_txt.text = "hallo";
  13.  
  14.             button_btn.addEventListener(MouseEvent.CLICK, goto);
  15.         }
  16.         private function goto(evt:MouseEvent):void {
  17.             this.play();
  18.         }
  19.     }
  20. }

Mein Film hat 2 Frames, im ersten das Dynamische Textfeld, das mit "Hallo" gefüllt wird. Wenn ich jetzt auf den Button klicke,komme ich in den 2 Frame.Wenn ich nochmal klicke, wieder in den 1, aber das "Hallo" steht nicht mehr da.Wieso??

Hoffe ihr könnt mir diese Frage beantworten.

gruss
rady ist offline   Mit Zitat antworten
Alt 02-10-2008, 22:12   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
Also wie ich es bisher verstanden habe, kann man die Dokumentklasse verwenden, anstatt wie früher den Code in den 1. Frame der flv zulegen.
Du meinst sicher die "fla", nicht die "flv", oder? Aber ganz so ist es nicht, denn du kannst ja auch weiterhin alle Frames nutzen. Die Dokumentklasse ist wie der Name schon sagt eine eigene Klasse, ein entsprechender Eintrag im Eigenschaftenbedienfeld erspart dir aber, eine Instanz der Klasse mit new zu erzeugen.

Zitat:
Den Konstruktor der Dokumentklasse benutzt man, um die EventListener für den kompletten Film zu deklarieren.
Nein, das wäre ja schlimm und würde dem Gedanken der OOP widersprechen, dass Klassen bzw. Objekte gekapselt werden können. Jedes Objekt kann seine eigenen Listener nutzen.

Zitat:
Welche Aufgaben übernimmt er noch??
Alles was du willst. Oder auch nichts... Hängt davon ab, was du vorhast. Du kannst einen Konstruktor auch leer lassen. Oder ihn bei statischen Klassen ganz weglassen.

Zitat:
Jedoch erstellt Flex, wenn man ein neues As Projekt anlegt, die Sprite Klasse
Nein, das stimmt absolut nicht. Du kannst dir die Klasse, von der geerbt wird, frei wählen. Du kannst bspw. von eigenen Customklassen erben oder von Eventklassen usw. Das hängt immer davon ab, welche Funktionalitäten deine Klasse sofort haben soll. Bei MovieClips hast du bspw. die Möglichkeit, mit dynamischen Variablen und Zeitleisten zu arbeiten. Diese Möglichkeit haben andere Klassen meist nicht.

Zitat:
aber das "Hallo" steht nicht mehr da.Wieso??
Flex hat einen hervorragenden Debugger und Einzelschrittsimulator. Einfach mal testen...
  Mit Zitat antworten
Alt 02-10-2008, 22:37   #3 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.139
  1. Nicht Flex und FlexBuilder in einen Topf werfen. Das führt zu einigen Verwirrungen.
  2. Konstruktoren dienen dazu Objekte zu initialisieren. Was das im konkreten bedeutet, hängt von der Klasse selbst ab, wie Holger schon andeutete.
  3. Du solltest dir so manche Zeile noch mal durchlesen, du hast da einiges nicht richtig verstanden...
Omega Psi ist offline   Mit Zitat antworten
Alt 03-10-2008, 01:01   #4 (permalink)
öcher flasher
 
Benutzerbild von rady
 
Registriert seit: Feb 2008
Beiträge: 266
ja sorry.ich mein natürlich fla.

und ich mein auch den flex builder,nicht flex.

also beim erstellen eines neues as projekt im flex builder.da erstellt flash eine klasse,die vom sprite erbt.deswegen frag ich,ob das egal ist,ob die klasse von der sprite oder movieclip klasse erbt
rady ist offline   Mit Zitat antworten
Alt 03-10-2008, 02:12   #5 (permalink)
undefined
 
Benutzerbild von mildesign
 
Registriert seit: Jul 2001
Ort: Stuttgart
Beiträge: 1.839
MovieClip hat eine Zeitleiste Sprite nicht.

Die Stammklasse für eine Dokumentenklasse die mit Flash kompiliert wird muss MovieClip sein.

Klassen die mit dem Flex SDK kompiliert werden müssen (mindestens) von Sprite abgeleitet werden.
__________________
mfg Frank
mildesign ist offline   Mit Zitat antworten
Alt 03-10-2008, 08:59   #6 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.139
In Flash kann es auch ein Sprite sein, sofern es keine Zeitlisten Animation gibt. Wenn es Symbole durch Draggen aus der Library auf der Bühne gibt, muss die von Sprite erbende Klasse als dynamic deklariert sein.
Omega Psi ist offline   Mit Zitat antworten
Alt 03-10-2008, 11:13   #7 (permalink)
öcher flasher
 
Benutzerbild von rady
 
Registriert seit: Feb 2008
Beiträge: 266
ich möchte aber gern,das flex bei anlegen eines neues as projekt, die klasse von der movieclip klasse erbt. kann ich dies voreinstellen oder muss ich das immer manuell ändern.
rady ist offline   Mit Zitat antworten
Alt 03-10-2008, 11:14   #8 (permalink)
Crème brûlée
 
Registriert seit: Jan 2006
Ort: Düsseldorf
Beiträge: 719
Das ist auch nicht ganz richtig. Lass das dynamic lieber weg und erstelle in der Dokumentenklasse private variablen, die als Namen den Instanznamen der auf der Bühne vorhandenen MovieClips tragen.

Wenn du z.B. eine MovieClip-Instanz auf der Bühne hast, die "mein_mc" heißt, kannst du in der Dokumentenklasse ein Attribut mein_mc vom Typ MovieClip anlegen:

ActionScript:
  1. private var mein_mc:MovieClip;
laxersaz ist offline   Mit Zitat antworten
Alt 03-10-2008, 11:23   #9 (permalink)
öcher flasher
 
Benutzerbild von rady
 
Registriert seit: Feb 2008
Beiträge: 266
also soll ich einfach bei anlegen eines neues as projekt im flex builder, die voreinstellung lassen, also das die klasse von der sprite erbt?mich hat es nur irritiert,da sonst die movieclip klasse in tutorials verwendet wurde, wenn man in flash die dokumentklasse erstellt hat.verstehste?
rady ist offline   Mit Zitat antworten
Alt 03-10-2008, 11:29   #10 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.139
ActionScript:
  1. package {
  2.  
  3.     import flash.display.Sprite;
  4.  
  5.     public class DocumentClass extends Sprite {
  6.  
  7.         private var _mySymbol:MySymbol;
  8.  
  9.         public function DocumentClass() {
  10.             super();
  11.             this.initialize();
  12.         }
  13.  
  14.         protected function initialize():void {
  15.             this._mySymbol = MySymbol(this.getChildByName("mySymbolInstance"));
  16.             trace(this._mySymbol.x, this._mySymbol.y,
  17.                     this._mySymbol.width, this._mySymbol.height);
  18.         }
  19.     }
  20. }
Minimaler hab ich es nciht hinbekommen. Mit dem dynamic hast du Recht - leider zieht das beim Flex Component Kit for Flash nicht. Da bekam ich bei meinen Klassen immer eine Fehlermeldung, wenn sie nicht dynamic waren.
Angehängte Dateien
Dateityp: zip Archiv.zip (5,5 KB, 3x aufgerufen)
Omega Psi 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:08 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele