Zugriff auf Klassenvariable

bigfella

Erfahrenes Mitglied
Hi,
folgend Frage:

Habe zwei Klassen: A und B

In Klasse B hab ich folgenden Funktionen:
PHP:
public function abspielen()

Nun möchte ich von der Klasse A aus, auf diese Funktion "abspielen" zugreifen.
Habe deshalb folgendes gemacht:
PHP:
import B
class A 
{
public var ZugriffB:A;

public construktor {

ZugriffB.abspielen();
}

Beim Ausführen bekomme ich die Meldung "Die Eigenschaft, auf die verwiesen wird, verfügt nicht über das Attribut "static".
Selbst wenn ich schreib:
PHP:
static public var ZugriffB:A
funktioniert nichts..

Woran liegt das?
 
Hi,
wenn es sich nicht um eine statische Methode handelt, brauchst Du eine Instanz der Klasse B:
Code:
import B;

class A {
  private var b:B;

  public function A() { // Konstruktor muss wie Klasse benannt werden
    b = new B(); // Instanz von B erstellen
    b.abspielen();
  }
}

Wenn es sich um eine statische Methode handelt, musst Du diese auch in der Klasse B als statisch deklarieren:
Code:
class B {
  public static function abspielen(Void):void {
    // mach was
  }
Code:
import B;

class A {
  public function A() {
    B.abspielen(); // statische Methode aufrufen
  }
}

Gruß
.
 
Wundere mich jedesmal das Du (Tobias) immer so schnell antwortest..
Echt klasse von Dir.

Komme leider trotzdem nicht weiter.
Wäre super, wenn Du Zeit hättest und vielleicht kurz mal nen Blick rein werfen könntest.
Hier mal mein File.


Komme einfach nicht weiter. DANKE
 
Hi,

Du darfst (in der Klasse "Application") der Instanz von "Soundfile" nicht den selben Namen geben, wie die Klasse (Soundfile).

Der Anfang der Klasse "Application" könnte so aussehen:
Code:
class Application extends MovieClip
{
	public var i:Number = 0;
	private var aktiv:Boolean = false;	
	public var soundfile:Soundfile; // "soundfile" wird die Instanz, "Soundfile" heißt die Klasse
	
	public function Application()
	{
		trace("Application class");
		soundfile = new Soundfile(); // Instanz von "Soundfile" erstellen
		
		_root.button_play_mc.onRelease = function()
		{
			trace("_play");
			
			
			_root.abspielkopf_mc.onEnterFrame = function()
			{
				this._x +=3;
				
				if(this._x >= 665)
				{
					this._x = 20;
					stopAllSounds();
					this.onEnterFrame = undefined;
				}
				
				if(this.hitTest(_root.bass_mc) && aktiv == false)
				{
					trace("getroffen");
					//sound_bass.start();
					aktiv = true;
					// ***HIER ZUGRIFF auf SOUNDFILE
					soundfile.abspielen(); // <-- hier abspielen
...

Gruß
.
 
Zurück