medianer
Hallo Leute!
Seit ca. 2 Wochen bastel ich an meinem Moorhuhn-Klon als Projektarbeit. Bin sehr gut vorangekommen und finde AS 3 ziemlich cool. Es ist eigentlich schon fast alles fertig: Wechsel zwischen Szenen, Musik abspielen und stoppen, Trefferquotient ausgeben, Sonnenbewegung auf elliptischer Bahn, eine komplette Funktion für das Nachladen nach 6 Schuss. Ich bin stolz. Aber auf eine Sache, die mir zum Ende fehlt (und die das wichtigste ist!) komme ich einfach nicht.
Ich habe nun sehr lange an der addChild Funktion für meine Viecher gesessen, eh ich das verstanden habe.
Diese habe ich nun erfolgreich eingebunden und mir dann eine Bewegung für die Viecher erstellt. Hier der Code:
addEventListener (Event.ENTER_FRAME, handleMakillaCreation);
function handleMakillaCreation (event:Event):void
{
//Gegner werden neben der Bühne hinzugefügt
if (enemyTime < enemyLimit) {
enemyTime ++;
} else {
var newMakilla = new GraphicMakillaAlive();
newMakilla.x = -1 * newMakilla.width;
newMakilla.y = int(Math.random()*(stage.stageHeight - newMakilla.height));
addChild (newMakilla);
//damit Fadenkreuz und Menüleiste nicht von Makillas verdeckt werden
MovieClip(root).setChildIndex (newMakilla,MovieClip(root).numChildren-17);
enemyTime = 0;
var speedX:Number = Math.random()*1+3;
var startY:Number = Math.random()*250;
var flightRadiusY:Number = Math.random()*250+70;
var flightAmplitude:Number = 0;
addEventListener(Event.ENTER_FRAME, makillaMovement);
function makillaMovement (event:Event):void
{
newMakilla.x = newMakilla.x + speedX;
newMakilla.y = startY + Math.sin(flightAmplitude)*flightRadiusY;
flightAmplitude += Math.random()*0.005+0.012;
}
newMakilla.addEventListener (MouseEvent.CLICK, handleMakillaHit);
function handleMakillaHit (event:MouseEvent):void
{
trace ("handleMakillaHit()");
handleMakillaDeath ();
}
function handleMakillaDeath ():void
{
newMakilla.gotoAndPlay ("death");
handleHitCounter ();
soundDead.play ();
//damit man ein Makilla nicht mehrmals abschießen kann
newMakilla.removeEventListener (MouseEvent.CLICK, handleMakillaHit);
}
function handleHitCounter ():void
{
hits ++;
hits_txt.text = "HITS: "+hits;
}
}
}
so. mein PROBLEM ist:
da ich ja "gezwungen" bin, die Variable "newMakilla" innerhalb der funktion zu definieren, kann ich diese ja nicht außerhalb verwenden.
ich hatte aber schonmal außerhalb bereits funktionen definiert, die wenn die "munition=0" ist, den EventListener für den Abschuss entfernt, und wenn der Nachladevorgang abgeschlossen ist, wird er wieder hinzugefügt. das kann ich jetzt nicht mehr machen. man soll ja die biester nicht auch abknallen können, wenn die kanone alle ist. und nach dem reload sollte das schon wieder ordentlich klappen.
Ich wollte das nun auch schon da rein schreiben in die Funktion, aber das läuft nicht korrekt, da ja dann immer "onEnterFrame" der Eventlistener hinzugefügt wird.
Hat jemand einen Vorschlag wie ich das in Angriff nehmen kann?
Vielen Dank im Voraus.
pd
Seit ca. 2 Wochen bastel ich an meinem Moorhuhn-Klon als Projektarbeit. Bin sehr gut vorangekommen und finde AS 3 ziemlich cool. Es ist eigentlich schon fast alles fertig: Wechsel zwischen Szenen, Musik abspielen und stoppen, Trefferquotient ausgeben, Sonnenbewegung auf elliptischer Bahn, eine komplette Funktion für das Nachladen nach 6 Schuss. Ich bin stolz. Aber auf eine Sache, die mir zum Ende fehlt (und die das wichtigste ist!) komme ich einfach nicht.
Ich habe nun sehr lange an der addChild Funktion für meine Viecher gesessen, eh ich das verstanden habe.
Diese habe ich nun erfolgreich eingebunden und mir dann eine Bewegung für die Viecher erstellt. Hier der Code:
addEventListener (Event.ENTER_FRAME, handleMakillaCreation);
function handleMakillaCreation (event:Event):void
{
//Gegner werden neben der Bühne hinzugefügt
if (enemyTime < enemyLimit) {
enemyTime ++;
} else {
var newMakilla = new GraphicMakillaAlive();
newMakilla.x = -1 * newMakilla.width;
newMakilla.y = int(Math.random()*(stage.stageHeight - newMakilla.height));
addChild (newMakilla);
//damit Fadenkreuz und Menüleiste nicht von Makillas verdeckt werden
MovieClip(root).setChildIndex (newMakilla,MovieClip(root).numChildren-17);
enemyTime = 0;
var speedX:Number = Math.random()*1+3;
var startY:Number = Math.random()*250;
var flightRadiusY:Number = Math.random()*250+70;
var flightAmplitude:Number = 0;
addEventListener(Event.ENTER_FRAME, makillaMovement);
function makillaMovement (event:Event):void
{
newMakilla.x = newMakilla.x + speedX;
newMakilla.y = startY + Math.sin(flightAmplitude)*flightRadiusY;
flightAmplitude += Math.random()*0.005+0.012;
}
newMakilla.addEventListener (MouseEvent.CLICK, handleMakillaHit);
function handleMakillaHit (event:MouseEvent):void
{
trace ("handleMakillaHit()");
handleMakillaDeath ();
}
function handleMakillaDeath ():void
{
newMakilla.gotoAndPlay ("death");
handleHitCounter ();
soundDead.play ();
//damit man ein Makilla nicht mehrmals abschießen kann
newMakilla.removeEventListener (MouseEvent.CLICK, handleMakillaHit);
}
function handleHitCounter ():void
{
hits ++;
hits_txt.text = "HITS: "+hits;
}
}
}
so. mein PROBLEM ist:
da ich ja "gezwungen" bin, die Variable "newMakilla" innerhalb der funktion zu definieren, kann ich diese ja nicht außerhalb verwenden.
ich hatte aber schonmal außerhalb bereits funktionen definiert, die wenn die "munition=0" ist, den EventListener für den Abschuss entfernt, und wenn der Nachladevorgang abgeschlossen ist, wird er wieder hinzugefügt. das kann ich jetzt nicht mehr machen. man soll ja die biester nicht auch abknallen können, wenn die kanone alle ist. und nach dem reload sollte das schon wieder ordentlich klappen.
Ich wollte das nun auch schon da rein schreiben in die Funktion, aber das läuft nicht korrekt, da ja dann immer "onEnterFrame" der Eventlistener hinzugefügt wird.
Hat jemand einen Vorschlag wie ich das in Angriff nehmen kann?
Vielen Dank im Voraus.
pd