| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Jan 2009
Beiträge: 12
| as3 und vererbung
guten morgen @all und ein frohes neues jahr. seit wochen habe ich mich jetzt mit as3 beschäfftigt. ich habe vor ein kleines privates projekt zu schreiben. bisher bin ich ganz gut voran gekommen. aber irgendwie komme ich mit der oop und vererbung von as3 noch nicht zurecht. in meiner main timeline importiere ich eine klasse wakeup. diese initialisiere ich über new. in meiner klasse wakeup importiere ich eine weitere klasse obj sie erbt von wakeup. jetzt möchte ich auf die variablen von wakeup zugreifen. aber genau da scheitert es. google und co habe bis jetzt nicht wirklich helfen können. code in der main timeline: Code: import starting.wakeup; var cmd = new wakeup(); cmd.init(); Code: package starting{
import flash.display.MovieClip;
import starting.obj;
public class wakeup extends MovieClip{
protected var app:Object = new Object;
public function init(){
starting.obj.build();
//restlicher code
}
}
} Code: package starting{
import starting.wakeup;
public class obj extends starting.wakeup{
public static function build() {
//hier habe ich alles versucht um auf die variable von wakeup.app zu kommen. entweder erhalte ich fehlermeldungen oder undefined oder null.
}
}
} |
| | |
| | #3 (permalink) |
| Flasher Registriert seit: Aug 2010 Ort: Stuttgart
Beiträge: 360
|
Und wenn du damit durch bist: Coding Conventions. Außerdem: Wenn du kannst, dann lass die Finger von der Timeline. Wenn du unbedingt mit Flash arbeiten willst, dann kannst du auch einen Dokumentenklasse angeben und in der den Code reinwerfen, denn du jetzt auf dem ersten Frame hast. Ist sauberer, übersichtlicher und... naja, machs einfach! Was NOCH BESSER wäre: Flash gar nicht mehr für Programmiergeschichten nehmen, sondern eine richtige Entwicklungsumgebung, wie FlashDevelop (Windows) oder FDT (Mac). Damit entwickelt es sich angenehmer und übersichtlicher.Zu deinem eigentlichen Problem: Bei der Nutzung von Klassen in der Definition einer Funktion werden prinzipiell keine Package-Pfade angegeben. Diesen Pfad brauchst du NUR für die import-Anweisung. Auch nicht später bei Variablen oder so. In deiner build-Funktion brauchst du "app" auch nicht über "Wakeup.app" aufrufen, sondern nur direkt über ihren Bezeichner! Du sagst weiterhin, dass du eine Fehlermeldung bekommst. Es ist immer unheimlich hilfreich, wenn du die Fehlermeldung auch hier postest, dann kann man dir meistens direkt sagen, wo der Hund begraben liegt. Der Link von sodiac sollte allerdings ultra hilfreich sein ![]() Liebe Grüße!
__________________ Erwähne NIEWIEDER das Wort "Klickdummy"! |
| | |
| | #4 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Das Problem ist, dass die Variable protected ist, sie muss public sein um darauf zugreifen zu können. Aber auch das macht die Sache im ersten Augenblick nicht einfacher, da du eine Instanz der Klasse wakeup brauchst, um auf die Variable zugreifen zu können.
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #5 (permalink) | |
| Flasher Registriert seit: Aug 2010 Ort: Stuttgart
Beiträge: 360
| Zitat:
__________________ Erwähne NIEWIEDER das Wort "Klickdummy"! | |
| | |
| | #6 (permalink) |
| Neuer User Registriert seit: Jan 2009
Beiträge: 12
|
oh man und ich mach wie ein gaskranker mit flash herum. FlashDevelop ist genau das was ich gesucht habe. ![]() ja stimmt. die fehlermeldungen wären von vorteil gewesen. da waren fehler meldungen wie: 1120 zugriff auf nicht definierte eigenschaft app oder TypeError: Error #1009: Der Zugriff auf eine Eigenschaft oder eine Methode eines null-Objektverweises ist nicht möglich. @Ouroborus23 danke für den link. |
| | |
| | #7 (permalink) | |
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 6.162
| @sodiac: Das ist schon eine ziemlich seltsame Konstruktion, die Du da zusammengezimmert hast. Und eine gefährliche noch dazu: Wenn Du nun obj aus wakeup heraus instanziiert würdest (statt nur eine statische Methode aufzurufen) hättest Du eine formitable Endlosschleife gebaut: Vererbung heißt ja nichts anderes als, das eine Klasse all das ist, was ihre Superklasse auch ist. Instanziert man nun die Klasse, instanziiert man automatisch auch alle ihre Superklassen. Und wenn eine der Superklassen im Konstruktor wiederum eine ihrer eigenen Unterklassen instanziiert, nimmt diese Instanziiererei gar keine Ende mehr... Irgendwie hab ich das Gefühl, dass Dir noch nicht so ganz klar ist, wozu es überhaupt sowas wie Vererbung gibt und was in diesem Zusammenhang der Unterschied zwischen Klassen und ihren Instanzen ist?! Vielleicht beschreibst Du uns mal, was Du ereichen möchtest:
P.S.: Auch wenn's Ouroborus23 schon erwähnt hat: Zitat:
__________________ Viele Grüße // Martin Martin Kraft // Interaktionsdesign Hilfreiche Websites: // Hilfe zur Adobe Flash Plattform // ActionScript 2 Referenz // ActionScript 3 Referenz // ActionScript 3 Arbeitshandbuch // weitere Flash Ressourcen Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da! Geändert von Martin Kraft (04-01-2012 um 10:57 Uhr) | |
| | |
| | #8 (permalink) |
| Neuer User Registriert seit: Jan 2009
Beiträge: 12
|
um ehrlich zu sein komme ich aus dem php bereich. dort habe ich bereits objekt orientiert programmiert. jetzt wollte ich als herausforderung in flash und as3 einsteigen. ich lerne gerne neues dazu. ![]() mir ist klar das die erbende klasse alle eigenschaften und methoden von der vererbenden klasse bzw von der elternklasse enthält. ich bin es von php gewohnt das eine erbende klasse die informationen einer variable nutzen kann oder für den weiteren programmablauf ändern kann. das ist auch so ziemlich mein vorhaben. ich möchte in einer basisklasse alle variablen deklarieren die ich brauche. diese möchte ich im weiteren programmablauf in den unterklassen nutzen und oder ändern können. was as3 angeht bin ich offenkundig etwas unbeholfen. was man an meiner anwesenheit hier und frage mit sicherheit merkt. ![]() das mit dem konstruktor leuchtet ein. das habe ich gleich mal ausgebessert. |
| | |
| | #9 (permalink) | |
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 6.162
| Zitat:
Du musst zwischen Klassen und ihren Instanzen unterscheiden. Eine Klasse ist nur ein Bauplan mit dem man beliebig viele Instanzen bauen kann. Diese Instanzen sind dann aber autark. D.h. sie haben jeweils ihre eigenen Variablen und überschreiben sich nicht gegenseitig. Da es also beliebig viele Instanzen einer Klasse geben kann, benötigt man eine Referenz (Variable) auf die Instanz, auf deren Variablen und Methoden man gerade zugreifen will. Anders sieht das bei static deklarierten Variablen und Methoden aus. Diese gehören direkt zur Klasse, können aus jeder Instanz angesprochen werden, haben aber selbst keinen Zugriff auf die Instanzvariablen (wie auch - da es 0-x Instanzen geben kann wäre der ja nicht eindeutig). Wenn Du also etwas über Klassen, Instanzen und Vererbung lernen möchtest, würde ich Dir empfehlen, erst mal auf static zu verzichten, bis Du richtig mit den Instanzen klarkommst: Vielleicht wird das Ganze ja an Hand eines Beispiels deutlicher: Klasse: ActionScript:
ActionScript:
__________________ Viele Grüße // Martin Martin Kraft // Interaktionsdesign Hilfreiche Websites: // Hilfe zur Adobe Flash Plattform // ActionScript 2 Referenz // ActionScript 3 Referenz // ActionScript 3 Arbeitshandbuch // weitere Flash Ressourcen Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da! | |
| | |
| | #10 (permalink) | |
| Neuer User Registriert seit: Jan 2009
Beiträge: 12
|
OK. anhand des beispiels wird mir klar warum ich überhaupt so viele probleme habe. Zitat:
in vergleich gesehen zu dem wie ich es von php gewohnt bin. ist es zwar merkwürdig ungewohnt. aber bietet mehr sicherheit. würde ich jetzt, mit dem ersten eindruck den ich gewonnen habe, sagen. danke. das ist eine basis auf der ich bauen kann. da kann man doch fast auf extends verzichten? | |
| | |
| | #11 (permalink) |
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 6.162
| Vererbung brauchst Du nur, wenn wirklich etwas geerbt werden soll – also ein Objekt ein anderes plus X ist. Mit dem Zugriffe auf die Variablen und Methoden anderer Instanzen hat Vererbung hingegen nichts zutun.
__________________ Viele Grüße // Martin Martin Kraft // Interaktionsdesign Hilfreiche Websites: // Hilfe zur Adobe Flash Plattform // ActionScript 2 Referenz // ActionScript 3 Referenz // ActionScript 3 Arbeitshandbuch // weitere Flash Ressourcen Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da! |
| | |
| | #13 (permalink) |
| Neuer User Registriert seit: Jan 2009
Beiträge: 12
|
mein fazit nach fast 24 stunden experimentieren mit as3. ich habe mich verliebt. anfangs habe ich as3 und seine syntax für kompliziert und umständlich gehalten. jetzt jedoch, gerade durch die voran gegangenen beispiele, kann ich nur sagen das as3 richtig genial gemacht ist. für einen eingefleischten phpler wie eine revulution. |
| | |
| | #14 (permalink) | |
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 6.162
| Zitat:
![]() Schön, dass sich auch PHPler über soviel Stringenz und und eine konsequente API freuen können ![]() Intensiv erst seit 3 Jahren - bin aber schon seit über 10 Jahren mit Flash unterwegs...
__________________ Viele Grüße // Martin Martin Kraft // Interaktionsdesign Hilfreiche Websites: // Hilfe zur Adobe Flash Plattform // ActionScript 2 Referenz // ActionScript 3 Referenz // ActionScript 3 Arbeitshandbuch // weitere Flash Ressourcen Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da! | |
| | |
| | #15 (permalink) |
| Neuer User Registriert seit: Jan 2009
Beiträge: 12
|
guten morgen. ![]() bis gestern oder vielmehr seit heute morgen war ich noch darüber bestürzt wenn ich zu hören bekam php sei nichts weiter als spagetticode. jetzt bin ich der selben meinung. ![]() ![]() ![]() ![]() lange rede kurzer sinn. ich werde mein hobby wechseln. ![]() daher auch die nächste frage. hier |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| AS3 Vererbung ... | hedgehog | ActionScript 3 | 1 | 19-06-2007 23:21 |
| vererbung? | DJ-Sonix | Flash 8 | 3 | 06-01-2006 15:33 |
| vererbung | warrantmaster | Softwarearchitektur und Entwurfsmuster | 13 | 05-10-2003 22:21 |
| Vererbung | bluna | ActionScript 1 | 6 | 03-04-2002 14:33 |
| vererbung | ebnf | Softwarearchitektur und Entwurfsmuster | 1 | 05-07-2001 22:59 |