Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 18-03-2010, 14:51   #1 (permalink)
Neuer User
 
Benutzerbild von Timyy
 
Registriert seit: Nov 2009
Beiträge: 223
Question OOP trace

Hallo,

Versuche mich grade mit OOP doch bei den einfachsten dingen scheitere ich leider schon. In meiner AS-datei, welche im gleichem Ordner liegt wie die fla-datei in die sie importiert wird, steht folgender code:

PHP-Code:
package{
    public class 
meineKlasse{
        public var 
eigenschaft:String "Wert";
        public function 
methode(para1:String):String{
            return 
"Rückgabe der Methode: " para1;
        }
    }

Der dateiname der AS-datei ist auch meineKlasse. Anschließend habe ich die AS-datei in meine fla-datei importiert und wollte, mit folgendem Code, in einem trace methoden abrufen.

PHP-Code:
import meineKlasse;

var 
meinObjekt:meineKlasse = new meineKlasse();
trace(meinObjekt.eigenschaft);
trace(meinObjekt.methode("Parameter")); 
Wenn ich es teste bekomme ich aber zwei fehlermeldungen die beide fast gleich ausssehen:

1119: Zugriff auf eine möglicherweise nicht definierte Eigenschaft eigenschaft über einen Verweis mit statischem Typ meineKlasse

Verstehe einfach nicht was ich falsch mache. Habe alles genauso gemacht wie es in meinem Buch steht.

Hoffe ihr könnt mir helfen und bedanke mich schonmal im vorraus
Timyy ist offline   Mit Zitat antworten
Alt 18-03-2010, 15:15   #2 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
hi,
bei deiner klasse fehlt einfach der konstruktor wenn ich das auf die shcnelle richtig sehe und klassennamen sollten immer mit einem großbuchstaben anfangen.

PHP-Code:
package {
    
    public class 
MeineKlasse {
        
        public var 
eigenschaft:String "Wert";
        
        public function 
MeineKlasse():void { }
        
        public function 
methode(para1:String):String{
            return 
"Rückgabe der Methode: " para1;
        }
    }

PHP-Code:
import MeineKlasse;

var 
meineKlasse:MeineKlasse = new MeineKlasse();
trace(meineKlasse.eigenschaft);
trace(meineKlasse.methode("Parameter")); 
cheers,
sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Alt 18-03-2010, 15:21   #3 (permalink)
ChronoGuard
 
Benutzerbild von SpecOps-12
 
Registriert seit: Mar 2002
Ort: Saarbrücken
Beiträge: 2.649
@Salazar

Hab ich auch gedacht.
Hab aber grad festgestellt, dass man in AS3 auch Instanzen von konstruktorlosen Klassen bilden kann.
Was eigentlich dämlich ist.

Und ich hab festgestellt, dass man gar keine privaten Konstruktoren bilden darf. Wodurch man keine klassischen Singletons anlegen kann, wenn ich das richtig sehe, oder?
War mir vorher auch nicht bewusst.
__________________
we will stop enhancing the truth in 3, 2, ...
SpecOps-12 ist offline   Mit Zitat antworten
Alt 18-03-2010, 15:24   #4 (permalink)
Neuer User
 
Benutzerbild von Timyy
 
Registriert seit: Nov 2009
Beiträge: 223
Super!

Danke für die hilfe, es klappt jetzt
Timyy ist offline   Mit Zitat antworten
Alt 18-03-2010, 15:31   #5 (permalink)
zimmer 101
 
Benutzerbild von ricobeck
 
Registriert seit: Jul 2003
Ort: LE
Beiträge: 1.581
Zitat:
Zitat von SpecOps-12 Beitrag anzeigen
@Salazar

Hab ich auch gedacht.
Hab aber grad festgestellt, dass man in AS3 auch Instanzen von konstruktorlosen Klassen bilden kann.
Was eigentlich dämlich ist.

Und ich hab festgestellt, dass man gar keine privaten Konstruktoren bilden darf. Wodurch man keine klassischen Singletons anlegen kann, wenn ich das richtig sehe, oder?
War mir vorher auch nicht bewusst.
wenn kein constructor vohanden ist, dann wird automatisch einer mit aufruf des superconstructors erstellt.
private sind tatsächlich nicht zulässig. allerdings gibt es da schon eine möglickeit, eine intantiierung von außen zu verhindern:
gskinner.com: gBlog: AS3: Singletons
__________________
Illogical comparison with NaN. Any comparison operation involving NaN will evaluate to false because NaN != NaN.
ricobeck.de
ricobeck ist offline   Mit Zitat antworten
Alt 18-03-2010, 16:10   #6 (permalink)
ChronoGuard
 
Benutzerbild von SpecOps-12
 
Registriert seit: Mar 2002
Ort: Saarbrücken
Beiträge: 2.649
Danke für die Info.

Aber was war dann timmyys fehler?
Großschreibung ist schließlich keine Pflicht, nur gängige Praxis.
__________________
we will stop enhancing the truth in 3, 2, ...
SpecOps-12 ist offline   Mit Zitat antworten
Alt 18-03-2010, 16:18   #7 (permalink)
Neuer User
 
Benutzerbild von Timyy
 
Registriert seit: Nov 2009
Beiträge: 223
Ich habe einfach nur das

PHP-Code:
        public function MeineKlasse():void { } 
hinzugefügt. Und dann gings
Timyy ist offline   Mit Zitat antworten
Alt 18-03-2010, 16:29   #8 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
wenn man den konstruktor weglässt klappt das nur wenn man aus der public function eine public static function macht....

cheers,
sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Alt 18-03-2010, 16:33   #9 (permalink)
ChronoGuard
 
Benutzerbild von SpecOps-12
 
Registriert seit: Mar 2002
Ort: Saarbrücken
Beiträge: 2.649
@salazar

Kann ich so nicht bestätigen.

PHP-Code:
// TIMELINE:
var test:Test = new Test();
trace(test.helloWorld()); // Ausgabe: "Hello World";

// KLASSE:
package {
    public class 
Test {
        public function 
Test() {
        }
        public function 
helloWorld():String {
            return 
"Hello World";
        }
    }

und
PHP-Code:
// TIMELINE:
var test:Test = new Test();
trace(test.helloWorld()); // Ausgabe: "Hello World";

// KLASSE:
package {
    public class 
Test {
        public function 
helloWorld():String {
            return 
"Hello World";
        }
    }

__________________
we will stop enhancing the truth in 3, 2, ...
SpecOps-12 ist offline   Mit Zitat antworten
Alt 18-03-2010, 16:37   #10 (permalink)
ChronoGuard
 
Benutzerbild von SpecOps-12
 
Registriert seit: Mar 2002
Ort: Saarbrücken
Beiträge: 2.649
PS: Wie ricobeck gepostet hatte, der Superkonstruktor wird benutzt. Bei nicht erbenden Klassen ist das dann immer Object.


PHP-Code:
//TIMELINE
var test:Test2 = new Test2();
trace(test.helloWorld());

// KLASSE 1
package {
    public class 
Test {
        public function 
Test() {
            
trace("Ich bin der Superkonstruktor");
        }
        public function 
helloWorld():String {
            return 
"Hello World";
        }
    }
}

// KLASSE 2
package {
    public class 
Test2 extends Test {
        
override public function helloWorld():String {
            return 
"Hello World 2";
        }
    }
}

// AUSGABE:
// Ich bin der Superkonstruktor
// Hello World 2 
__________________
we will stop enhancing the truth in 3, 2, ...
SpecOps-12 ist offline   Mit Zitat antworten
Alt 18-03-2010, 16:37   #11 (permalink)
zimmer 101
 
Benutzerbild von ricobeck
 
Registriert seit: Jul 2003
Ort: LE
Beiträge: 1.581
ich auch nicht:
PHP-Code:
package  
{
    public class 
Test 
    
{
        public var 
prop String;
    }

PHP-Code:
package  
{
    
import flash.display.MovieClip;

    public class 
Main extends MovieClip 
    
{

        public function 
Main()
        {
            var 
test Test = new Test();
            
test.prop 'foo';
            
trace(test.prop);
        }
    }

Code:
[Info] Connection to player established.
foo
__________________
Illogical comparison with NaN. Any comparison operation involving NaN will evaluate to false because NaN != NaN.
ricobeck.de
ricobeck ist offline   Mit Zitat antworten
Alt 18-03-2010, 16:45   #12 (permalink)
zimmer 101
 
Benutzerbild von ricobeck
 
Registriert seit: Jul 2003
Ort: LE
Beiträge: 1.581
Zitat:
Zitat von salazar Beitrag anzeigen
wenn man den konstruktor weglässt klappt das nur wenn man aus der public function eine public static function macht....

cheers,
sal
dann aber nicht über eine instanz der klasse.
__________________
Illogical comparison with NaN. Any comparison operation involving NaN will evaluate to false because NaN != NaN.
ricobeck.de
ricobeck ist offline   Mit Zitat antworten
Alt 18-03-2010, 16:56   #13 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
nee... dann nur über:
PHP-Code:
// TIMELINE:
trace(Test.helloWorld()); // Ausgabe: "Hello World"; 
aber das passt zu dem bsp von oben nicht so gut....

cheers,
sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Alt 18-03-2010, 17:42   #14 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.139
Müsste ich raten würde ich sagen, du hast nicht gespeichert als du die Klasse editiert hattest.
Omega Psi ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
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
Trace ist tot! Derm Flash MX 2004 3 24-02-2006 11:58
[stuff] trace station ---> in jeder umgebung trace´n! salazar Stuff 10 05-05-2005 19:50
Bug? trace in oEF Tango2k3 Softwarearchitektur und Entwurfsmuster 3 07-03-2005 11:17
trace () Xelat2000 Flash 4 und Flash 5 6 16-03-2003 18:55
where' the trace??? timsh ActionScript 1 1 05-07-2002 00:56


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:08 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele