Comander_Keen
Erfahrenes Mitglied
Abend zusammen,
ich versuche mich gerade (mehr oder weniger) an dem thema isometrie in flash mx. Meine quellen dazu sind eigentlich nur die "pocket page - tips und tricks für multimediadesigner" ausgabe.
hier gibts erstmal die .fla bzw. die .swf
Wie ihr sehen könnt will ich die graue fläche in zwei räume unterteilen. Es gibt 4 arten von linien (welche alle mc sind).. linie0, linie1, linie2 und linie3. Jede dieser linien ist einer seiten(art) in diesen zwei räumen zugewiesen.
und da isn screenshot von dem ganzen salat:
mein problem: - ich kann mich als "user" nicht nach unten bewegen
- es gelten jeweils nur die "root"-linien, und nicht ihre nachträglich eingefügten "klone".
sicherlich sind dies ganz einfache (fatale) fehler .. bitte helft sie mir zu beseitigen!
greetz 3k!
ich versuche mich gerade (mehr oder weniger) an dem thema isometrie in flash mx. Meine quellen dazu sind eigentlich nur die "pocket page - tips und tricks für multimediadesigner" ausgabe.
hier gibts erstmal die .fla bzw. die .swf
Wie ihr sehen könnt will ich die graue fläche in zwei räume unterteilen. Es gibt 4 arten von linien (welche alle mc sind).. linie0, linie1, linie2 und linie3. Jede dieser linien ist einer seiten(art) in diesen zwei räumen zugewiesen.
und da isn screenshot von dem ganzen salat:

mein problem: - ich kann mich als "user" nicht nach unten bewegen
- es gelten jeweils nur die "root"-linien, und nicht ihre nachträglich eingefügten "klone".
Code:
// diese Funktion wird unsere Linien initialisieren
initLinie = function(mc){
//erstellt einen neuen leeren MovieClip im linie MovieClip
mc.createEmptyMovieClip("empty",1);
mc.empty._x = 100;
mc.empty._y = 100;
// errechnet die Koordinaten des empty MovieClips, relativ zur Hauptzeitleiste
mc.punkt = new Object();
mc.punkt.x = mc.empty._x;
mc.punkt.y = mc.empty._y;
mc.localToGlobal(mc.punkt);
// m, die Steigung der Linie wird errechnet
mc.m=(mc.punkt.y-mc._y)/(mc.punkt.x-mc._x);
// b, der y-Achsenabschnitt wird errechnet
mc.b=mc._y-mc.m*mc._x;
};
// diese Funktion testet ob sich mc über oder unter der linie befindet.
below = function(linie,mc){
mc.yLinie = mc._x*linie.m+linie.b;
if(mc._y >= mc.yLinie){
return true;
}else{
return false;
}
};
//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
// die Anzahl der Linien wird festgelegt und diese werden in einen Array geschrieben
anzahlLinien = 12;
linien = new Array();
for(i=0;i<anzahlLinien;i++){
linien[i] = this["linie"+i];
}
//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
// Initialisierung der linie MovieClips
for(i=0;i<linien.length;i++){
initLinie(linien[i]);
}
//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
// Geschwindigkeit der Box
player.speed = 6;
// Der Text im zweiten Bild soll am Anfang noch nicht angezeigt werden
player.stop();
//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
// Wir testen ob sich der Ball innerhalb der Fläche befindet
// und erlauben Bewegungen nur dann, wenn sich die Box noch
// innerhalb befindet
this.onEnterFrame = function(){
// wir testen mit Hilfe der Geradengleichung,
// ob sich die Box unter der Linien oder über ihnen befindet
if(Key.isDown(Key.LEFT) && !below(linie0,_root.player)){
player._x-=player.speed;
player._y+=player.speed/2;
}
if(Key.isDown(Key.UP) && below(linie1,_root.player)){
player._x-=player.speed;
player._y-=player.speed/2;
}
if(Key.isDown(Key.RIGHT) && below(linie2,_root.player)){
player._x+=player.speed;
player._y-=player.speed/2;
}
if(Key.isDown(Key.DOWN) && !below(linie3,_root.player)){
player._x+=player.speed;
player._y+=player.speed/2;
}
};
stop();
sicherlich sind dies ganz einfache (fatale) fehler .. bitte helft sie mir zu beseitigen!
greetz 3k!
Zuletzt bearbeitet: