Array ganz entfernen [Flash 11]
| Beiträge: 10 Registriert: Dec 2011
| 09.12.2011, 23:50
Hallo zusammen,
ich versuche mich hier gerade an einer Mini-Version des Spiels Breakout.
Leider habe ich folgendes Problem: wenn der Ball verloren geht, also die Bühne in Richtung Y verlässt, soll auf Frame 3 gesprungen werden,wo dann Game Over erscheint. Es werden mir dann aber immer noch meine Ziegel,der Ball und der Balken angezeigt, ich möchte aber natürlich,dass sie verschwinden. Ich habe es schon mit removeChild versucht,aber so verschwinden nur der Ball und der Balken aber nicht die Ziegel. Ein weiteres Problem ist,dass ich auf Frame 3 wieder die Möglichkeit zum Neustart anbieten möchte. Wie kann ich das realisieren?
Hier mein Versuch:
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 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | //Balken erstellen
var balken:Sprite = new Sprite();
balken.graphics.beginFill(0x666666);
balken.graphics.drawRect(0,0,90,15);
balken.graphics.endFill();
//Startposition des Balken angeben
balken.x = 10;
balken.y = stage.stageHeight - 20;
//Balken erscheint auf Bühne
addChild(balken);
var deltaX:Number = 5;
var deltaY:Number = 5;
var isBallActive:Boolean = false;
//Variablen für Startposition des Balls deklarieren
var ballStartX:uint = 100;
var ballStartY:uint = 200;
var ballRadius:uint = 6;
//Ball erstellen
var ball:Sprite = new Sprite();
ball.graphics.beginFill(0x999999);
ball.graphics.drawCircle(0,0,ballRadius);
ball.graphics.endFill();
//Startposition für Ball angeben
ball.x = ballStartX;
ball.y = ballStartY;
//Ball erscheint auf Bühne
addChild(ball);
//Mauszeiger auf Bühne nicht anzeigen
Mouse.hide();
stage.frameRate = 31;
//bei Mausklick wird Funktion starteBall aufgerufen
stage.addEventListener(MouseEvent.CLICK,starteBall);
//bei Mausbewegung wird Funktion bewegeBalken aufgerufen
stage.addEventListener(MouseEvent.MOUSE_MOVE,bewegeBalken);
var ziegel2:Array = [];
function starteBall(e:MouseEvent):void {
stage.addEventListener(Event.ENTER_FRAME,updateBall);
stage.removeEventListener(MouseEvent.CLICK,starteBall);
}
//Ziegel erstellen
function ziegelErstellen():void {
var reihen:uint = 5;
var spalten:uint = 8;
var ziegelBreite:uint = 30;
var ziegelHöhe:uint = 10;
var startX:Number = (stage.stageWidth - spalten*(ziegelBreite+abstand))/2;
var startY:Number = 10;
var abstand:uint = 3;
var i:uint;
var j:uint;
for(i=0; i<reihen; i++) {
for(j=0; j<spalten; j++) {
var ziegel:Sprite = new Sprite();
var ziegelMatrix:Matrix = new Matrix();
ziegelMatrix.createGradientBox(ziegelBreite, ziegelHöhe, Math.PI/2);
ziegel.graphics.beginGradientFill(GradientType.LINEAR,[ 0x990066, 0xFF0099 ],[1,1],[0,255],ziegelMatrix);
ziegel.graphics.drawRect(0,0,ziegelBreite,ziegelHöhe);
ziegel.graphics.endFill();
ziegel.x = startX + (j*(ziegelBreite+abstand));
ziegel.y = startY + (i*(ziegelHöhe+abstand));
addChild(ziegel);
ziegel2.push(ziegel);
}
}
}
ziegelErstellen();
//Balken wird mit Mausbewegung gesteuert
function bewegeBalken(e:MouseEvent):void {
balken.x = e.stageX - balken.width;
}
function updateBall(e:Event):void {
//Test ob Ball Balken berührt
if(balken.hitTestObject(ball)) {
var bumperCenterPoint:Number = balken.x + (balken.width/2);
deltaX = (ball.x - bumperCenterPoint)/2;
deltaY *= -1;
}
var i:uint;
var totalBricks:uint = ziegel2.length;
for(i=0; i<totalBricks; i++) {
var ziegel:Sprite = ziegel2[i];
//Test ob BallZiegel berührt
if(ziegel.hitTestObject(ball)) {
//Ziegel entfernen
ziegel2.splice(i,1);
removeChild(ziegel);
deltaY *= -1;
break;
}
}
if(ball.x <= ballRadius/2) deltaX *= -1;
else if(ball.x >= stage.stageWidth - ballRadius/2) deltaX *= -1;
ball.x += deltaX;
ball.y += deltaY;
if(ball.y <= ballRadius/2) deltaY *= -1;
else if(ball.y >= stage.stageHeight - ballRadius/2) {
gotoAndStop(3);
ziegel2.splice(i,0);
stage.removeEventListener(Event.ENTER_FRAME,updateBall);
stage.removeEventListener(Event.ENTER_FRAME,starteBall);
}
}
|
| Geändert von FlashNewie am 09.12.11 um 23:58 Uhr | |
| | Beiträge: 3000 Wohnort: Köln Registriert: Oct 2007
| 10.12.2011, 10:45
|
|