Flashhilfe.de - Flash Community

Klasseninstanz kann nicht erstellt werden [Flash 8]

Forum > ActionScript 2.0 > Klasseninstanz kann nicht erstellt werden

 


AntwortenRegistrieren Seite1  

 21.04.2009, 14:12 
Benutzerbild von KonaKona
Beiträge: 18
Registriert: Dec 2008

Klasseninstanz kann nicht erstellt werden
Hallo liebe Flash Gemeinde, ich habe wieder mal ein Problem, dass ich auch nach langem Suchen nicht lösen kann und zwar kann ich mit Flash irgendwie nur eine Klasseninstanz erstellen.
Erst mal der Code:

test.swf

ActionScript:
1
2
3
var land = _root.createEmptyMovieClip('land', _root.getNextHighestDepth());
var player = new player('my', 'land', 'user', 50, 50);
var test  = new player('bla', 'land', 'user', 90, 50);


player.as

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
   /**
    *
    * Main player class
    *
    */

    class player
    {

        private var name = '';

        private var mc = null;

        private var speed = 5;

        private var active = 0;

        public function player ( user, main, pref, startx, starty )
        {
           name  = user;
           active = getTimer();
           mc    = _root[main].attachMovie('char', pref + '_' + user, _root[main].getNextHighestDepth());
           mc._x  = startx;
           mc._y  = starty;
        }

        public function move ( xcoo, ycoo )
        {
           mc._x = xcoo;
           mc._y = ycoo;
        }

        public function online ( )
        {
           active = getTimer();
        }

        public function get_active ( )
        {
           return active;
        }

        public function get_name ( )
        {
           return name;
        }

        public function check_coll ( newx, newy, tile )
        {
           var ok            = true;
            var obleftxcoo    = Math.round((newx - 10) / 30);
            var obleftycoo    = Math.round((newy - 10) / 30);
            var obrightxcoo  = Math.round((newx + 10) / 30);
            var obrightycoo  = Math.round((newy - 10) / 30);
            var downleftxcoo  = Math.round((newx - 10) / 30);
            var downleftycoo  = Math.round((newy + 10) / 30);
            var downrightxcoo = Math.round((newx + 10) / 30);
              var downrightycoo = Math.round((newy + 10) / 30);

            if ( _root[tile]['tile_' + obleftycoo + '_' + obleftxcoo].wakable == false || _root[tile]['tile_' + obrightycoo + '_' + obrightxcoo].wakable == false || _root[tile]['tile_' + downleftycoo + '_' + downleftxcoo].wakable == false || _root[tile]['tile_' + downrightycoo + '_' + downrightxcoo].wakable == false )
            {
              ok = false;
           }

            return ok;
        }

        public function get_speed ( )
        {
           return speed;
        }

        public function get_x ( )
        {
           return mc._x;
        }

        public function get_y ( )
        {
           return mc._y;
        }

        public function die ( )
        {
           mc.removeMovieClip();
        }

    }


Mein Problem ist nun, dass nur der Spieler 'player' erstellt wird, test wird gar nicht beachtet, es wird immer nur die erste Instanz erstellt. Leider weiss ich nicht an was es liegen könnte, aber ich hoffe ihr könnt mir weiterhelfen.

Schon mal jetzt vielen Dank
 21.04.2009, 15:12Re1
Beiträge: 89
Registriert: Mar 2009

Hallo,

versuch mal die Klasse 'Player' statt 'player' zu benamsen.

servus,
giraffa
 21.04.2009, 15:50Re2
Benutzerbild von KonaKona
Beiträge: 18
Registriert: Dec 2008

Themenautor/in

Super funktioniert, vielen vielen Dank! Kannst du mir noch sagen, warum man das so umbennen musste?
 
nicht sichtbar bei eingeloggten Mitgliedern
 22.04.2009, 10:26Re3
Beiträge: 89
Registriert: Mar 2009

Hallo,

ich denke es ist so: Du schreibst eine Klasse 'player'. Wenn Flash jetzt irgendwo in Deinem Code die Bezeichnung 'player' findet, dann weiss es, bzw. der Compiler, dass damit die Klasse gemeint ist und was er damit machen soll. Dann verwendest Du aber den eindeutigen "Identifizierer" 'player' zusätzlich als Variablennamen - dann ist er nicht mehr eindeutig. Jetzt weiss Flash nicht mehr was 'player' heissen soll. Wahrscheinlich hast Du damit
ActionScript:
1player = player();

die Klassendefinition einfach mit einem Objekt überschrieben.
Es wundert mich, dass es keine Fehlermeldung gibt. Genauer weiss ich's auch nicht.
Schreib einfach Klassennamen immer mit einem Großbuchstaben am Anfang und Variablennamen immer mit einem Kleinbuchstaben. Das ist auch üblich so, macht den Code besser lesbar und schützt vor solchen Problemen.

Servus,
giraffa
 22.04.2009, 20:26Re4
Benutzerbild von KonaKona
Beiträge: 18
Registriert: Dec 2008

Themenautor/in

Vielen Dank für die ausführlich Antwort!
 
Themen
Ähnliche Beiträge zum Thema
Logik aufbau Programm [Flash 9] 22.01.2010 - longCrew
 

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.
Partner Webseiten: DesignerInAction.de   Designnation.de   Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   PSD-Tutorials.de   Tutorials.de

Haftungsausschluss   Datenschutzerklärung   Hier Werben   Impressum
© 1999-2012 Sebastian Wichmann - Flashhilfe.de