vinTagesworld Flash forum
Ik heb een memory game met verschillende levels.
In level 1 heb je 6 kaarten. De score en tijd beginnen bij 0. Als ik echter in level 2 terechtkomt dan begint level 2 ook terug bij een score en tijd van 0
Wat doe ik verkeerd?
Hieronder mijn code van beide as bestanden
package {
import flash.display.*;
import flash.events.*;
import flash.text.*;
import flash.utils.getTimer;
import flash.utils.Timer;
import flash.media.Sound;
import flash.media.SoundChannel;
public class MemoryObject01 extends MovieClip {
// aantal kolommen, rijen, ruimte tussen de kaarten, extra ruimte
private static const aantalRijen:uint = 3;
private static const aantalKolommen:uint = 2;
private static const kaartHorizontaleWitruimte:Number = 130;
private static const kaartVerticaleWitruimte:Number = 130;
private static const bordAfstandX:Number = 190;
private static const bordAfstandY:Number = 150;
private static const puntenVoorMatch:int = 100;
private static const puntenVoorMis:int = -5;
private var eersteKaart:Kaart;
private var tweedeKaart:Kaart;
private var kaartenOver:uint;
private var spelScore:int;
private var spelStartTijd:uint;
private var spelTijd:uint;
private var spelScoreVeld:TextField;
private var spelTijdVeld:TextField;
// timer om de kaarten terug om te draaien
private var omDraaiTimer:Timer;
// geluiden definiëren
var eersteKaartGeluid:EersteKaartGeluid = new EersteKaartGeluid();
var hetFouteGeluid:FouteGeluid = new FouteGeluid();
var hetCorrecteGeluid:CorrecteGeluid = new CorrecteGeluid();
public function MemoryObject01():void{
// maakt een array van kaarten
var kaarten:Array = new Array();
for(var i:uint=0;i<aantalRijen*aantalKolommen/2;i++) {
kaarten.push(i);
kaarten.push(i);
}
kaartenOver = 0;
// maakt alle kaarten, zet ze op de juiste positie
for(var x:uint=0;x<aantalRijen;x++) { // horizontaal
for(var y:uint=0;y<aantalKolommen;y++) { // verticaal
var k:Kaart = new Kaart(); // kopieer de movie clip
k.stop(); // stopt op het 1ste frame
k.x = x*kaartHorizontaleWitruimte+bordAfstandX; // bepaalt positie
k.y = y*kaartVerticaleWitruimte+bordAfstandY;
var r:uint = Math.floor(Math.random()*kaarten.length); // een random logo
k.kaartgezicht = kaarten[r]; // logo aan kaart hangen
kaarten.splice(r,1); // voorkant van array verwijderen
// addMouseListeners
k.addEventListener(MouseEvent.CLICK,klikKaart);
addChild(k); // toont de kaart
kaartenOver++;
}
}
// score
spelScoreVeld = new TextField();
spelScoreVeld.x = 350;
addChild(spelScoreVeld);
spelScore = 0;
toonSpelScore();
// tijd
spelTijdVeld = new TextField();
spelTijdVeld.x = 450;
addChild(spelTijdVeld);
spelStartTijd = getTimer();
spelTijd = 0;
addEventListener(Event.ENTER_FRAME,toonTijd);
}
public function klikKaart(event:MouseEvent) {
var k:Kaart = (event.currentTarget as Kaart); // welke kaart?
if (eersteKaart == null) { // eerste kaart in paar
eersteKaart = k; // onthoud de kaart
eersteKaart.startFlip(k.kaartgezicht+2); // draai de kaart om
speelGeluid(eersteKaartGeluid);
} else if (eersteKaart == k) { // terug op de eerste kaart klikken
eersteKaart.startFlip(1); // draai de kaart terug om
eersteKaart = null;
speelGeluid(hetFouteGeluid);
} else if (tweedeKaart == null) { // tweede kaart in het paar
tweedeKaart = k; // onthoud de kaart
tweedeKaart.startFlip(k.kaartgezicht+2); // draai de kaart om
// vergelijk de twee kaarten
if (eersteKaart.kaartgezicht == tweedeKaart.kaartgezicht) {
// twee identieke kaarten verwijderen
removeChild(eersteKaart);
removeChild(tweedeKaart);
// selectie resetten
eersteKaart = null;
tweedeKaart = null;
// punten toekennen
spelScore += puntenVoorMatch;
toonSpelScore();
speelGeluid(hetCorrecteGeluid);
//game over
kaartenOver -= 2;
if(kaartenOver == 0) {
//MovieClip(root).spelScore = spelScore;
//MovieClip(root).spelTijd = klokTijd(spelTijd);
//MovieClip(root).gotoAndStop("level2");
MovieClip(root).gotoAndStop("level2");
}
}
else {
spelScore += puntenVoorMis;
toonSpelScore();
speelGeluid(hetFouteGeluid);
omDraaiTimer = new Timer(2000,1);
omDraaiTimer.addEventListener(TimerEvent.TIMER_COMPLETE,kaartenTerug);
omDraaiTimer.start();
}
} else { // een volgend paar kiezen
kaartenTerug(null);
speelGeluid(eersteKaartGeluid);
// eerste kaart selecteren in volgend paar
eersteKaart = k;
eersteKaart.startFlip(k.kaartgezicht+2);
}
}
// kaarten terug omdraaien
public function kaartenTerug(event:TimerEvent) {
if (eersteKaart != null)eersteKaart.startFlip(1);
if (tweedeKaart != null) tweedeKaart.startFlip(1);
eersteKaart = null;
tweedeKaart = null;
omDraaiTimer.removeEventListener(TimerEvent.TIMER_COMPLETE,kaartenTerug);
}
public function toonSpelScore() {
spelScoreVeld.text = "Score: "+String(spelScore);
}
public function toonTijd(event:Event) {
spelTijd = getTimer()-spelStartTijd;
spelTijdVeld.text = "Tijd: "+klokTijd(spelTijd);
}
public function klokTijd(ms:int) {
var seconds:int = Math.floor(ms/1000);
var minutes:int = Math.floor(seconds/60);
seconds -= minutes*60;
var tijdString:String = minutes+":"+String(seconds+100).substr(1,2);
return tijdString;
}
public function speelGeluid(soundObject:Object) {
var channel:SoundChannel = soundObject.play();
}
}
}
package {
import flash.display.*;
import flash.events.*;
import flash.text.*;
import flash.utils.getTimer;
import flash.utils.Timer;
import flash.media.Sound;
import flash.media.SoundChannel;
public class MemoryObject02 extends MovieClip {
// aantal kolommen, rijen, ruimte tussen de kaarten, extra ruimte
private static const aantalRijen:uint = 4;
private static const aantalKolommen:uint = 3;
private static const kaartHorizontaleWitruimte:Number = 130;
private static const kaartVerticaleWitruimte:Number = 130;
private static const bordAfstandX:Number = 190;
private static const bordAfstandY:Number = 150;
private static const puntenVoorMatch:int = 100;
private static const puntenVoorMis:int = -5;
private var eersteKaart:Kaart;
private var tweedeKaart:Kaart;
private var kaartenOver:uint;
private var spelScore:int;
private var spelStartTijd:uint;
private var spelTijd:uint;
private var spelScoreVeld:TextField;
private var spelTijdVeld:TextField;
// timer om de kaarten terug om te draaien
private var omDraaiTimer:Timer;
// geluiden definiëren
var eersteKaartGeluid:EersteKaartGeluid = new EersteKaartGeluid();
var hetFouteGeluid:FouteGeluid = new FouteGeluid();
var hetCorrecteGeluid:CorrecteGeluid = new CorrecteGeluid();
public function MemoryObject02():void{
// maakt een array van kaarten
var kaarten:Array = new Array();
for(var i:uint=0;i<aantalRijen*aantalKolommen/2;i++) {
kaarten.push(i);
kaarten.push(i);
}
kaartenOver = 0;
// maakt alle kaarten, zet ze op de juiste positie
for(var x:uint=0;x<aantalRijen;x++) { // horizontaal
for(var y:uint=0;y<aantalKolommen;y++) { // verticaal
var k:Kaart = new Kaart(); // kopieer de movie clip
k.stop(); // stopt op het 1ste frame
k.x = x*kaartHorizontaleWitruimte+bordAfstandX; // bepaalt positie
k.y = y*kaartVerticaleWitruimte+bordAfstandY;
var r:uint = Math.floor(Math.random()*kaarten.length); // een random logo
k.kaartgezicht = kaarten[r]; // logo aan kaart hangen
kaarten.splice(r,1); // voorkant van array verwijderen
// addMouseListeners
k.addEventListener(MouseEvent.CLICK,klikKaart);
addChild(k); // toont de kaart
kaartenOver++;
}
}
// score
spelScoreVeld = new TextField();
spelScoreVeld.x = 350;
addChild(spelScoreVeld);
spelScore = 0;
toonSpelScore();
// tijd
spelTijdVeld = new TextField();
spelTijdVeld.x = 450;
addChild(spelTijdVeld);
spelStartTijd = getTimer();
spelTijd = 0;
addEventListener(Event.ENTER_FRAME,toonTijd);
}
public function klikKaart(event:MouseEvent) {
var k:Kaart = (event.currentTarget as Kaart); // welke kaart?
if (eersteKaart == null) { // eerste kaart in paar
eersteKaart = k; // onthoud de kaart
eersteKaart.startFlip(k.kaartgezicht+2); // draai de kaart om
speelGeluid(eersteKaartGeluid);
} else if (eersteKaart == k) { // terug op de eerste kaart klikken
eersteKaart.startFlip(1); // draai de kaart terug om
eersteKaart = null;
speelGeluid(hetFouteGeluid);
} else if (tweedeKaart == null) { // tweede kaart in het paar
tweedeKaart = k; // onthoud de kaart
tweedeKaart.startFlip(k.kaartgezicht+2); // draai de kaart om
// vergelijk de twee kaarten
if (eersteKaart.kaartgezicht == tweedeKaart.kaartgezicht) {
// twee identieke kaarten verwijderen
removeChild(eersteKaart);
removeChild(tweedeKaart);
// selectie resetten
eersteKaart = null;
tweedeKaart = null;
// punten toekennen
spelScore += puntenVoorMatch;
toonSpelScore();
speelGeluid(hetCorrecteGeluid);
//game over
kaartenOver -= 2;
if(kaartenOver == 0) {
MovieClip(root).spelScore = spelScore;
MovieClip(root).spelTijd = klokTijd(spelTijd);
MovieClip(root).gotoAndStop("level3");
}
}
else {
spelScore += puntenVoorMis;
toonSpelScore();
speelGeluid(hetFouteGeluid);
omDraaiTimer = new Timer(2000,1);
omDraaiTimer.addEventListener(TimerEvent.TIMER_COMPLETE,kaartenTerug);
omDraaiTimer.start();
}
} else { // een volgend paar kiezen
kaartenTerug(null);
speelGeluid(eersteKaartGeluid);
// eerste kaart selecteren in volgend paar
eersteKaart = k;
eersteKaart.startFlip(k.kaartgezicht+2);
}
}
// kaarten terug omdraaien
public function kaartenTerug(event:TimerEvent) {
if (eersteKaart != null)eersteKaart.startFlip(1);
if (tweedeKaart != null) tweedeKaart.startFlip(1);
eersteKaart = null;
tweedeKaart = null;
omDraaiTimer.removeEventListener(TimerEvent.TIMER_COMPLETE,kaartenTerug);
}
public function toonSpelScore() {
spelScoreVeld.text = "Score: "+String(spelScore);
}
public function toonTijd(event:Event) {
spelTijd = getTimer()-spelStartTijd;
spelTijdVeld.text = "Tijd: "+klokTijd(spelTijd);
}
public function klokTijd(ms:int) {
var seconds:int = Math.floor(ms/1000);
var minutes:int = Math.floor(seconds/60);
seconds -= minutes*60;
var tijdString:String = minutes+":"+String(seconds+100).substr(1,2);
return tijdString;
}
public function speelGeluid(soundObject:Object) {
var channel:SoundChannel = soundObject.play();
}
}
}
Je moet
aangemeld zijn om te kunnen reageren.