Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 03-02-2011, 14:06   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2010
Beiträge: 52
Zugriff auf Variable/Funktion in Vaterklasse

Hallo,
ich will in ein bestehendes Programm eine Erweiterung einbauen. Diese Erweiterung lege ich als extra Klasse ein um später im Hauptprogramm nur ein import + Instanz erstellen muss. Im Hauptprogramm gibt es jetzt allerdings Variable und Funktionen, die ich gerne benutzen würde. Diese sind schon als public/static definiert.

Der Aufbau ist wie folgt:

Hauptprogramm
PHP-Code:
...
import com.firma.Modul;
...
public static var 
_version:String="1b";
...
// Stelle wo das neue Modul aufgerufen werden soll
new Modul("mach was"); 
com.firma.Modul
PHP-Code:
package com.firma {
    
    public class 
Modul  extends Sprite {
        public function 
Modul (_txt:String) {
            
trace(_txt " " _version)  // wie bekomme ich hier die Version aus der Vaterklasse
        
}
    }

Was muss ich ändern um in der Modul Klasse auf meine Vaterklasse (hier _version) zuzugreifen?
__________________
Panoramen | Flashentwicklung | 3D Animation | visionsbox
miga ist offline   Mit Zitat antworten
Alt 03-02-2011, 14:18   #2 (permalink)
Achim Math.PI
 
Benutzerbild von bloba
 
Registriert seit: Jul 2001
Ort: cool Colonia
Beiträge: 11.642
zu einem muss es heissen
PHP-Code:
var myModulInstanz:Modul =new Modul("mach was"); 

und zum anderen wenn du die variable " _version" in der klasse Modul verwendst, musst du diese auch dort deklariert haben
__________________
gruß bloba

2 x onkel² b_d
bloba ist offline   Mit Zitat antworten
Alt 03-02-2011, 14:24   #3 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
@miga: Mir ist nicht so ganz klar, worauf Du eigentlich hinaus möchtest, aber ließ Dir mal das Kapitel über die Vererbung im AS3-Handbuch durch, vielleicht wird dann einiges klarer...
__________________
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 (03-02-2011 um 14:34 Uhr)
Martin Kraft ist offline   Mit Zitat antworten
Alt 03-02-2011, 14:33   #4 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.141
static deklarierte Eigenschaften gehören zur Klasse, nicht der Instanz und werden nicht vererbt.
Omega Psi ist offline   Mit Zitat antworten
Alt 03-02-2011, 14:53   #5 (permalink)
Neuer User
 
Registriert seit: Jan 2010
Beiträge: 52
@Martin: Danke, das les ich gleich nochmal genauer durch!

mit dem Static hab ich dann wohl falsch verstanden.

Was ich will ist auf die Variable bzw. Funktionen meiner Vaterklasse drauf zugreifen. Die gibt es schon im Hauptprogramm (Vaterklasse) und ich will in meinem Modul nur den Wert haben (bzw. von Modul aus auf Funktionen der Main zugreifen).

einen Ansatz den ich noch probiert habe war ein Instanz zu erzeugen, diese dann per addChild in der Vaterklasse auch hinzuzufügen und in der Modulklasse im ADDED Event per main(parent)._version auf die Variable zu kommen. Das geht soweit auch, aber geht das nicht auch ohne addChild?
__________________
Panoramen | Flashentwicklung | 3D Animation | visionsbox
miga ist offline   Mit Zitat antworten
Alt 03-02-2011, 14:59   #6 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Mir ist immer noch unklar, was Du eigentlich vorhast?
  • Möchtest Du in einer Klasse, die eine andere erweitert (also von ihr erbt) auf deren Eigenschaften zugreifen?
    Das ist das, was die meisten hier unter Vaterklasse verstehen.
    PHP-Code:
    package {
      class 
    Klasse extends BasisKlasse{}

  • Oder willst Du einfach von einer Instanz auf die Eigenschaften einer anderen Instanz oder Klasse (z.B. von Main) zugreifen?
    Die Klasse Main wäre aber in diesem Fall nicht die "Vaterklasse" sondern die "Dokumentklasse"!
__________________
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 (03-02-2011 um 15:02 Uhr)
Martin Kraft ist offline   Mit Zitat antworten
Alt 03-02-2011, 15:28   #7 (permalink)
Neuer User
 
Registriert seit: Jan 2010
Beiträge: 52
Mein Vorhaben:

Es gibt Main.as (fertiges Programm) und dieses soll um Funktionen erweitert werden.
Diese Funktionen will ich extern halten und irgendwie in Main.as einbinden, so dass ich auf bestimmte Variablen bzw. Funktionen der Main.as wieder zugreifen kann. Wenn ich Main.as nachher kompiliere greift an einer bestimmten stelle dann mein neuer Code benutzt aber schon vorhandene Werte im Programm.

Vielleicht bin ich auch mit meiner rangehensweise auf dem falschen Weg. In PHP würde ich es z.B. einfach mit includes machen
__________________
Panoramen | Flashentwicklung | 3D Animation | visionsbox
miga ist offline   Mit Zitat antworten
Alt 03-02-2011, 15:43   #8 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Du willst also eigentlich Änderungen an der Klasse Main vornehmen, diese aber (aus mir unerfindlichen Gründen) in eine andere .as-Datei auslagern

Da das nicht mehr viel mit OOP zutun hat, sollte man IMHO auch gar nicht erst versuchen das über Klassen zu lösen. Stattdessen könnte man z.B. mit include arbeiten, dass es auch in AS3 noch gibt.

Allerdings halte ich dieses Vorgehen grundsätzlich nicht für sinnvoll und finde, dass es bessere Alternativen gibt:
  • Wenn Du einfach nur die Klasse Main überarbeiten möchtest: Mach eine Kopie und arbeite direkt in der Klasse.

  • Sollte hingegen die Klasse Main zu groß und unübersichtlich geworden ist, würde ich versuchen Funktionszusammenhänge zu kapseln und in eigenständige Klassen auszulagern. Diese Klassen können natürlich interagieren, sollten aber grundsätzlich unabhängig von einander funktionieren, weshalb man nach lockern Bindungen (z.B. über das Event-System) streben sollte!
__________________
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 (03-02-2011 um 15:47 Uhr)
Martin Kraft ist offline   Mit Zitat antworten
Alt 03-02-2011, 16:31   #9 (permalink)
Neuer User
 
Registriert seit: Jan 2010
Beiträge: 52
ok verstehe! Ich hatte vor das ganze als "Plug-in" Lösung zu benutzen und wollte so später in den extra Modulen so arbeiten können, als gehören sie zur Main, man könnte diese aber auch ohne Module starten.

Aber ich glaube ich war da so auf dem Holzweg. Werde mir das ganze nochmal durch den Kopf gehen lassen.

Danke nochmals!
__________________
Panoramen | Flashentwicklung | 3D Animation | visionsbox
miga ist offline   Mit Zitat antworten
Alt 03-02-2011, 21:45   #10 (permalink)
Neuer User
 
Registriert seit: Jan 2010
Beiträge: 52
das hier bringt den gewünschten Effekt, aber ist das ein guter Stil?

class_main
PHP-Code:
package {
    
import class_child;
    
import flash.text.TextField;
    
import flash.display.Sprite;
    
    public class 
class_main extends Sprite {
    
        public var 
_version:String="test";
        private var 
_tf:TextField = new  TextField();
        
        
        public function 
class_main():void{
            
addChild(_tf);
            var 
_child:class_child = new class_child(this);
        }
        
        public function 
setText(_str:String):void{
            
_tf.text=_str;
        }
      
    }

class_child
PHP-Code:
package {
  public class 
class_child  {
    private var 
main:class_main;


    public function 
class_child(main:class_main):void{
        
this.main main;
        
call();
    }
        
    private function 
call():void{
        
main.setText(main._version);  // ruft Funktion von class_main auf und liest auch die Variable
    
}
  }

wenn ich jetzt class_main kompiliere und ausführe steht in der Textbox der "_version" String.
Ich werde mir jetzt erst Mal das PDF was Martin verlinkt hat drucken und binden, dann hab ich Lesestoff
__________________
Panoramen | Flashentwicklung | 3D Animation | visionsbox
miga ist offline   Mit Zitat antworten
Alt 03-02-2011, 22:27   #11 (permalink)
+ Zimt & Zucker
 
Registriert seit: Mar 2006
Ort: hinterm Mond gleich links
Beiträge: 2.041
Ich hab mal gehört Seesterne essen, indem sie ihren Magen hervorwürgen, das Essen reintun und dann alles wieder verschlucken.
Geht. Man kann aber auch einfach nur das Essen zu sich nehmen.

Zitat:
Zitat von miga Beitrag anzeigen
main.setText(main._version);
Also, warum fummelt die externe Klasse da umständlich in main rum?
Versuch mal dein Modul mit etwas zu nutzen das kein "class_main" ist
Klassennamen gern auch groß geschrieben.

Ohne ein konkretes Beispiel, was du nun genau machen willst, bleibt fraglich, was die beste Heransgehensweise wäre.

Man könnte zB ein Event feuern, wenn die Unterklasse etwas an sich ändert.
__________________
anbei Grüße vom milchreis: Viva la [Silb]

[Von null auf Flash in einem Klick.] <<< klick
milchreis ist gerade online   Mit Zitat antworten
Alt 04-02-2011, 09:15   #12 (permalink)
Crème brûlée
 
Registriert seit: Jan 2006
Ort: Düsseldorf
Beiträge: 719
Zitat:
Zitat von milchreis Beitrag anzeigen
Ich hab mal gehört Seesterne essen, indem sie ihren Magen hervorwürgen, das Essen reintun und dann alles wieder verschlucken.
Geht. Man kann aber auch einfach nur das Essen zu sich nehmen.
Für mich ganz klar das Zitat des Tages!
laxersaz ist offline   Mit Zitat antworten
Alt 04-02-2011, 09:47   #13 (permalink)
Neuer User
 
Registriert seit: Jan 2010
Beiträge: 52
Zitat:
Zitat von milchreis Beitrag anzeigen
Ohne ein konkretes Beispiel, was du nun genau machen willst, bleibt fraglich, was die beste Heransgehensweise wäre.
In meinem Fall ist es so:
- Main lädt eine XML und in ihr werden einige Dinge geladen und festgesetzt
- ich will nachher eine "Plug-in" Struktur aufbauen, die nachher in extra Dateien stehen (also nicht in Main.as)
- die "Plug-ins" sollen wieder auf XML und verschiedene Variablen zugreifen, OHNE das ich alles übergeben muss


wusste gar nicht, dass Seesterne so was können
__________________
Panoramen | Flashentwicklung | 3D Animation | visionsbox
miga ist offline   Mit Zitat antworten
Alt 04-02-2011, 10:08   #14 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Dann bau Dir doch einfach für jedes dieser Module eine Klasse, der Du das nötige XML übergibst?!

Edit: Mit diesem "Beitrag" habe ich mal wieder eine Schnapszahl erreicht: 2222 Post
__________________
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-02-2011 um 10:13 Uhr)
Martin Kraft ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
klassen, oop

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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Zugriff aus Event-Listener-Funktion? marcoiS ActionScript 3 2 12-03-2010 15:07
Zugriff auf Funktion, die nirgendwo enthalten ist weis-nix ActionScript 3 5 25-08-2009 10:32
zugriff auf eine funktion in dokumentenklasse hobbit20001 ActionScript 3 1 24-07-2007 14:08
Zugriff auf variable aus sortierungs-funktion k3nnymc71 PHP und MySQL 1 02-05-2005 14:56
Zugriff auf Funktion - diese Funktion deleten? pomz ActionScript 1 9 23-12-2004 17:19


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:48 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele