ActionScript:
/*
Author: Michael Wendeln
Datei: Bricklist.as
Zweck:
Diese Datei beinhaltet die Klasse für die Bricks des Spiels.
Das sind die Steine die man mit dem Ball treffen muss. In
der XML Datei stehen sie unter "stones".
*/
package {
// Importieren benötigter Bibliotheken
import flash.display.MovieClip;
import flash.display.Loader;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
// Importieren eigener Bibliotheken
import Brick;
// Klassenrumpf
// :
public class Bricklist extends MovieClip{
// Debug
private var debugMeldungen: int = 0;
// Spielsteine
private var AnzahlSteine: int = 0;
private var Spielsteine: Array = new Array();
// Konstruktor dieser Klasse
// : Liste für die Spielsteine anlegen
public function Bricklist() {
if (debugMeldungen) {
trace ("[DEBUG - Bricklist.as] Konstruktor wurde aufgerufen.");
}
}
// Spielstein hinzufügen
// : Einen Spielstein hinzufügen
public function addBrick(posX:int, posY:int, hoehe:int, breite:int, credits:int, bgImgUrl:String) {
if (debugMeldungen) {
trace ("[DEBUG - Bricklist.as] Spielstein[] hinzugefügt.");
}
var newBrick:Brick = new Brick(AnzahlSteine, posX, posY, hoehe, breite, credits, bgImgUrl);
newBrick.addEventListener("brick.ready", onBrickReady);
newBrick.addEventListener("brick.error", onBrickError);
}
// Spielstein wurde geladen
// : Wenn alle Steine geladen wurden, Event dispatchen
private function onBrickReady(event:Event): void {
if (debugMeldungen) {
trace ("[DEBUG - Bricklist.as] Spielstein[] geladen.");
}
AnzahlSteine++;
addChild(event.target);
}
// Spielstein konnte nicht geladen werden
// : Event dispatchen um aufrufende Klasse zu informaieren
private function onBrickError(event:Event): void {
trace ("[ERROR - Bricklist.as] Fehler beim laden des Spielsteins[].");
dispatchEvent(new Event("bricklist.error"));
}
}
}
ActionScript:
/*
Author: Michael Wendeln
Datei: Brick.as
Zweck:
Diese Datei beinhaltet die Klasse für einen Spielstein.
*/
package
{
// Importieren benötigter Bibliotheken
import flash.display.MovieClip;
import flash.display.Loader;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
// Klassenrumpf
// :
public class Brick extends MovieClip {
// Debug
private var debugMeldungen:int = 0;
// Übergebene Parameter
private var brNdx: int;
private var brPosX: int;
private var brPosY: int;
private var brHoehe: int;
private var brBreite: int;
private var brCredits: int;
private var brImgUrl: String;
// Konstruktor dieser Klasse
// : Liste für die Spielsteine anlegen
public function Brick(ndx:int, posX:int, posY:int, hoehe:int, breite:int, credits:int, bgImgUrl:String) {
if (debugMeldungen) {
trace("[DEBUG - Brick.as] Konstruktor wurde aufgerufen mit Parametern:");
trace("[DEBUG - Brick.as] ndx: "+ndx);
trace("[DEBUG - Brick.as] posX: "+posX);
trace("[DEBUG - Brick.as] posY: "+posY);
trace("[DEBUG - Brick.as] Hoehe: "+hoehe);
trace("[DEBUG - Brick.as] Breite: "+breite);
trace("[DEBUG - Brick.as] Credits: "+credits);
trace("[DEBUG - Brick.as] bgImgUrl: "+bgImgUrl);
}
// Konstruktorparameter sichern
brNdx = ndx;
brPosX = posX;
brPosY = posY;
brHoehe = hoehe;
brBreite = breite;
brCredits = credits;
brImgUrl = bgImgUrl;
// Angegebenes Hintergrundbild laden
var bgImgLoader: Loader = new Loader();
bgImgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, brickImgLoaded)
bgImgLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, brickImgError);
bgImgLoader.load( new URLRequest(brImgUrl) );
}
// Hintergrundbild geladen
// : Das Hintergrundbild wurde geladen, also einfügen
private function brickImgLoaded(event:Event): void {
if (debugMeldungen) {
trace ("[DEBUG - Brick.as] Hintergrundbild geladen.");
}
addChild(event.target.content);
dispatchEvent(new Event("brick.ready"));
}
// FEHLER: Hintergrundbild konnte nicht geladen werden
// : Liste für die Spielsteine anlegen
private function brickImgError(event:Event): void {
trace ("[ERROR - Brick.as] Fehler beim laden des Hintergrundbilds: " + brImgUrl);
dispatchEvent(new Event("brick.error"));
}
}
}
ich habe das ganze jetzt n bisschen umgeschrieben und mal ne Frage zu Events... Ich habe jetzt eine Klasse als Liste für alle Spielsteine und eine für einen Spielstein selber. Allerdings habe ich jetzt 2 Fragen...
1.) Wie füge ich den Spielstein der Liste (und damit der Anzeige) hinzu? event.target scheint nicht zu funktinieren. Zeile in Bricklist.onBrickReady();
2.) Wie mache ich das am besten das ich sehe wann alle Spielsteine geladen wurden? Ein Event dispatchen und merken welche Bricks bereits den Event gesendet haben?
Wäre für jede Hilfe sehr dankbar!