Mijn vorige "game" in flash is af. Waarvoor jullie dank al. Nu wil ik hem echter zo maken, dat als alle ballen op zijn, hij automatisch naar het volgende level ( frame ) gaat. ( Bij mijn vorige game, stond er een tijd op geplakt. Maar als je alle ballen hebt weggeklikt voordat de tijd om was, moest je nog wachten. Daarom wil ik nu een controle.) Ik heb al opgezocht, en heb al iets gevonden, alleen werkt het niet. Dit is mijn code nu ( het is een soort van test ( niet het echte bestand ) om te zien, hoe ik op objecten kan reageren als ze weg zijn. ) :
import flash.events.*;
tekst.text = "De 1ste bal is er.";
tekst2.text = "De 2de bal is er.";
bal.addEventListener(MouseEvent.CLICK, hit);
bal2.addEventListener(MouseEvent.CLICK, hit);
function hit (event:MouseEvent):void{
if(bal){
removeChild(getChildByName(event.currentTarget.name))
bal.removeEventListener(MouseEvent.CLICK, hit);
}else{
tekst.text = "De 1ste bal is weg.";
}
if(bal2){
removeChild(getChildByName(event.currentTarget.name))
bal2.removeEventListener(MouseEvent.CLICK, hit);
}else{
tekst2.text = "De 2de bal is weg.";
}
}
De ballen verdwijnen, de eventlistener is weg, alleen past de tekst zich niet aan, er blijft bij de 2 ballen gewoon de tekst " de bal is er." staan. nochtans, als ik die code doorloop, en als ik de sites waar ik op gezocht heb moet geloven, zou alles perfect moeten gaan. Weet iemand wat hier fout is ?
je kan bij dit soort dynamische meuk veel beter ook de "ballen" dynamisch tonen, zo heb je altijd een referentie waarop je kan controleren (in plaats van hardcoded ballen maken op de scene)
Als je dat doet kan je gewoon een tellertje maken (var aantalBallen = 3) en die 3 kan je dus door je hele script gebruiken.
Na elke RAKE click doe je gewoon
owja, zo had ik nog niet gedacht. Jij bent echt wel goed in flash. Ik ga het direct proberen. Als jij niet had gereageerd (ook op mijn vorige topics.) zat ik nu nog te knoeien. Hiervoor erg bedankt !!
EDIT :
Het lukt toch niet, er wijzigt niets. Het is toch zo dat je het bedoelde hé ?
var ballen:Number = 3
for(var i:Number = 0; i < ballen; i++)
{
var bal:Ball = new Ball();
bal.name = "bal"+i
bal.x = Math.random() * xxx;
bal.y = Math.random()* xxx;
bal.addEventListener(MouseEvent.CLICK, hit);
addChild(bal);
}
//Met dit stukje code heb je dus 3 ballen op de stage en hebben ook gelijk een listener mee gekregen
var ballen:Number = 3
for(var i:Number = 0; i < ballen; i++)
{
var bal:Ball = new Ball();
bal.name = "bal"+i
bal.x = Math.random()* xxx;
bal.y = Math.random()* xxx;
bal.addEventListener(MouseEvent.CLICK, hit);
addChild(bal);
}
//Met dit stukje code heb je dus 3 ballen op de stage en hebben ook gelijk een listener mee gekregen
Maar ik ben toch niet met klassen aan het werken ?
Ah, ok snap wat je bedoelt. De naam van die movieclip in de bibliotheek. Maar die is exact het zelfde.
var ballen:Number = 3
for(var i:Number = 0; i < ballen; i++)
{
var bal:bal = new bal();
bal.name = "bal"+i
bal.x = Math.random() * xxx;
bal.y = Math.random()* xxx;
bal.addEventListener(MouseEvent.CLICK, hit);
addChild(bal);
}
var ballen:Number = 3
for(var i:Number = 0; i < ballen; i++)
{
var bal:bal = new bal();
bal.name = "bal"+i
bal.x = Math.random()* xxx;
bal.y = Math.random()* xxx;
bal.addEventListener(MouseEvent.CLICK, hit);
addChild(bal);
}
EDIT :
De bal geeft geen probleem meer, alleen krijg ik nu bij uitvoer dit te zien :
TypeError: Error #1007: Er is geprobeerd een instantie te maken op een element dat geen constructor is.
at testje_fla::MainTimeline/frame1()
gelukt !!!
Ik had bij het symboolvenster, vergeten om op geavenceerd te klikken, en exporteren voor actionscript aan te vinken. Dit heb ik gelezen in die tuto ! Alles werkt nu perfect. Bedankt !