Klasseninstanz kann nicht erstellt werden [Flash 8]
| 21.04.2009, 14:12 | | 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:12 | Re1 | Beiträge: 89 Registriert: Mar 2009
| Hallo,
versuch mal die Klasse 'Player' statt 'player' zu benamsen.
servus,
giraffa | |
| 21.04.2009, 15:50 | Re2 | 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:26 | Re3 | 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
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:26 | Re4 | Beiträge: 18 Registriert: Dec 2008
Themenautor/in
| Vielen Dank für die ausführlich Antwort! | |
| | Themen Ähnliche Beiträge zum Thema | 15.02.2012 - maresi 28.07.2010 - Deathkiller 15.11.2010 - Xoltec 22.01.2010 - longCrew |
|
Flashhilfe.de Flash Platform Tipps & Tutorials Flash Platform Andere Programmiersprachen Jobangebote Diskussionen
Flashhilfe News 
Regeln & Bedingungen
|