Problem mit mehrdimensionalem Array

timäää

Erfahrenes Mitglied
Hi...
Mein Problem ist folgendes:
Ich hab diese Klasse geschrieben:
PHP:
class katInfo
{
	static var katArray = new Array();
	
	static function get kat():Array
	{
		return katArray;
	}
	function set kat(newKat:Array):Void
	{
		katArray = newKat;
	}
}
aber wenn ich jetzt im Film
PHP:
katInfo.kat[0] = new Array(0,0,7,47,86,52,100,27,175,42,135,8);
aufrufe, wird nichts in den Array geschrieben...Wisst ihr woran das liegt?
 
Zuletzt bearbeitet von einem Moderator:
Hi,

der Setter "kat" ist prinzipiell eine Funktion und selbst kein Array. Zudem wird in dieser Funktion Deinem privaten Array "katArray" das übergebene Array zugewiesen.

Was Du willst, ist einem bestimmten Index von "katArray" ein neues Array zuweisen. Dafür würde ich mir in etwa so eine Funktion schreiben:
PHP:
    public function setkatIndex(idx:Number, newKat:Array):Void
    {
        katArray[idx] = newKat;
    }
    // und vielleicht nochwas zum einfachen Anfügen:
    public function pushkat(newKat:Array):Void
    {
        katArray.push(newKat);
    }

Gruß
.
 
So. Hab den Fehler gefunden. Hab einfach nur das "static" vor der set function fergessen (kein wunder das das nich ging :) ). Jetzt gehts genau so wie ich mir das gedacht habe...

Und implizite get/set Methoden sehen von Außen (von einer anderen Klasse aus) prinzipiell wie eine Variable aus, also in diesem Fall wie ein Array..
 
Das geht? :eek:

Dann nehm ich alles zurück und behaupte das Gegenteil!

(ich gebe allerdings zu, es nicht "in situ" getestet zu haben)

Gruß

EDIT: So, ich habs nun mal ausprobiert: Mit statischen Eigenschaften und Methoden wird tatsächlich keine Fehlermeldung ausgegeben - allerdings wird der Setter nicht aufgerufen, wenn ich ihn als Arrayelement anspreche (eine trace-Aktion beweist es). Kannst Du bitte Deinen funktionieren Code oder die Dateien posten? Die Vorgehensweise interessiert mich wirklich, danke!
.
 
mh... Wie gesagt der Code is quasi der geleiche wie oben... Nur halt noch mit nem static vor dem Setter...

der Klassen code:
PHP:
class katInfo
{
	static var katArray = new Array();
	
	static function get kat():Array
	{
		return katArray;
	}
	static function set kat(newKat:Array):Void
	{
		katArray = newKat;
	}
}

der Aufruf:
PHP:
katInfo.kat[0] = new Array(0,0,7,47,86,52,100,27,175,42,135,8);
Funktioniert bei mir wunderbar... lässt sich auch alles über Trace abfragen...
 
Mal ne Frage: Ab welcher Version von Flash ist es möglich dermaßen objektorientiert zu proggen?
Ich wusste bisher garnet das es static usw. überhaupt gibt.

e Sache des.

MfG

Matthias
 
Joa externe klassendateien ist ab Flash 6 möglich, die nutze ich auch. Aber das man hier javalike proggen kann find ich echt klasse.
 
Zur Info mal den Text aus der Flash-Hilfe zu ActionScript 2.0:


Übersicht zum Erstellen von Klassen mit ActionScript 2.0
ActionScript 2.0 ist eine Erweiterung der Sprache ActionScript, die mehrere neue leistungsfähige Programmierfunktionen beinhaltet, die auch bei anderen Programmiersprachen wie z. B. Java üblich sind. ActionScript 2.0 unterstützt Programmstrukturen, die wiederverwendbar, skalierbar, stabil und verwaltbar sind. Außerdem werden mit ActionScript die Entwicklungszeiten verkürzt, da Benutzern Codierungshilfen und Debugging-Informationen zur Verfügung gestellt werden. ActionScript 2.0 entspricht den gängigen Standards und basiert auf den ECMAScript 4-Kriterien (http://www.mozilla.org/js/language/es4/). ActionScript 2.0 ist in Macromedia Flash MX 2004 und Macromedia Flash MX Professional 2004 erhältlich.

Die Funktionen von ActionScript 2.0 werden im Folgenden beschrieben.

Bekanntes OOP-Modell Das Hauptmerkmal von ActionScript 2.0 ist ein bekanntes Modell zum Erstellen objektorientierter Programme. Mit ActionScript 2.0 werden mehrere neue objektorientierte Konzepte und Schlüsselwörter eingeführt, wie z. B. Klasse, Schnittstelle und Pakete, die Ihnen sicherlich bekannt sind, wenn Sie bereits mit Java programmiert haben.

Das OOP-Modell von ActionScript 2.0 ist eine "syntaktische Formalisierung" der Prototypketten-Methode, die in früheren Versionen von Macromedia Flash verwendet wurde, um Objekte zu erstellen und Vererbung zu etablieren.

Strikte Datentypisierung Mit ActionScript 2.0 können Sie Datentypen für Variablen, Funktionsparameter und Funktionsrückgabetypen explizit festlegen. Der folgende Code legt beispielsweise die Variable mit dem Namen userName vom Typ "String" fest (integrierter ActionScript-Datentyp bzw. Klasse).

var userName:String = "";

Compiler Warn- und Fehlermeldungen Dank der beiden oben genannten Funktionen können vom Authoring-Tool und vom Compiler Warn- und Fehlermeldungen ausgegeben werden, mit denen Sie Fehler in Ihrer Anwendung schneller finden können.
 

Neue Beiträge

Zurück