login  Naam:   Wachtwoord: 
Registreer je!
 Forum

object verdwijnen. (Opgelost)

Offline lolll - 02/02/2010 19:24 (laatste wijziging 02/02/2010 19:25)
Avatar van lolllLid Hoe moet ik een object in actionscript laten "verdwijnen", het object moet niet weg zijn, maar het mag niet meer zichtbaar zijn, en de EventListener die er aan verbonden is, moet weg zijn. Die listener is dat als erop geklikt wordt, de score met 1 verhoogd moet worden. Het is dus de bedoeling dat de bal weg gaat als erop geklikt is en de score met 1 verhoogd. Dit laatste heb ik al, alleen vind ik geen optie om de bal te laten verdwijnen en dat de listener weg is. Dit is de code :
  1. punten.text = "0";
  2. var score = "1";
  3. bal1.addEventListener(MouseEvent.CLICK, hit);
  4. bal2.addEventListener(MouseEvent.CLICK, hit);
  5. function hit (event:MouseEvent):void{
  6. punten.text = score++;
  7. //hoe moet ik die bal laten verdwijnen ?
  8. }

Ik heb al gedacht om een gotoandstop te doen en daar op de stage van de filmclip bal, een witte frame te zetten, maar dan gaat de bal eigenlijk gewoon door, en zou je eigenlijk nog op de bal kunnen klikken. Hij moet dus weg gaan, maar het object zelf moet bewaard blijven. Ik heb al op internet gezocht, maar heb niet echt iets duidelijk gevonden. Ik denk dat dit toch moet bestaan ?

14 antwoorden

Gesponsorde links
Offline Abbas - 02/02/2010 19:33 (laatste wijziging 02/02/2010 19:36)
Avatar van Abbas Gouden medaille

Crew .NET
Je kan removeEventListener() gebruiken om een EventListener te verwijderen die je niet meer nodig hebt. Parameters zijn de eventnaam en listener-parameters.

Het object kan je verwijderen met removeChildAt(), via getChildIndex() kan je de index van het gewenste object ophalen om dan te gebruiken in die eerste methode.
Offline lolll - 02/02/2010 19:47 (laatste wijziging 02/02/2010 19:50)
Avatar van lolll Lid zo dus ?
  1. bal1.removeEventListener(MouseEvent.CLICK, hit);
  2. bal1.removeChildAt();
  3. bal2.removeEventListener(MouseEvent.CLICK, hit);
  4. bal2.removeChildAt();


EDIT :
Het werkt niet.
Offline Abbas - 02/02/2010 20:05
Avatar van Abbas Gouden medaille

Crew .NET
Tussen de haakjes van die removeChildAt moet wel de index van je object komen. Die index haal je op aan de hand van de functie getChildIndex(). Heb je wel alles gelezen in m'n vorige post? Anders moet je eens verder zoeken op Google hierover.
Offline lolll - 03/02/2010 15:27
Avatar van lolll Lid Lukt niet hoor. Ik krijg deze foutmelding als ik op een bal klik :

RangeError: Error #2006: De opgegeven index is buiten de grenzen.
at flash.display::DisplayObjectContainer/removeChildAt()
at klikgame2_fla::MainTimeline/hit()
Offline Abbas - 03/02/2010 17:26
Avatar van Abbas Gouden medaille

Crew .NET
Dan zal de index van je object buiten de toegelaten indexen liggen.
Offline lolll - 03/02/2010 18:11
Avatar van lolll Lid En hoe moet ik dat veranderen zodat het wel binnen die indexen ligt ?
Offline vinTage - 03/02/2010 18:41
Avatar van vinTage Nieuw lid
  1. function hit (event:MouseEvent)
  2. {
  3. removeChild(getChildByName(event.currentTarget.name))
  4. }
Offline lolll - 03/02/2010 20:35 (laatste wijziging 05/02/2010 17:25)
Avatar van lolll Lid Het werkt met deze code ( dit is niet de oorspronkelijke code, ik heb een nieuw bestand gemaakt, om uit te zoeken wat het probleem was. ) :
  1. import flash.events.*;
  2. var punten = "1";
  3. score.text = "0";
  4. this.bal_mc.addEventListener(MouseEvent.CLICK, hit);
  5. this.bal1_mc.addEventListener(MouseEvent.CLICK, hit1);
  6. function hit (Event:MouseEvent):void{
  7. score.text = punten++;
  8. this.bal_mc.removeEventListener(MouseEvent.CLICK, hit);
  9. removeChild(this.bal_mc);
  10. }
  11. function hit1 (Event:MouseEvent):void{
  12. score.text = punten++;
  13. this.bal1_mc.removeEventListener(MouseEvent.CLICK, hit);
  14. removeChild(this.bal1_mc);
  15. }


Alleen vind ik dit een beetje omslachtig om voor elke bal een andere functie te maken. Ik kan het niet in één functie zetten, omdat dan als je op 1 bal klikt, de andere ook weg is. Is er geen mogelijkheid om dit op te lossen in 1 functie ? want nu is het maar met 2 ballen, maar het is de bedoeling om er in elk level ( ook al is de game nog niet af. ) 1 bal bij te doen. En als ik dan aan level 10 zit, moet ik al 12 verschillende functies maken, met bijna dezelfde code.

Lolll
Offline vinTage - 05/02/2010 17:46
Avatar van vinTage Nieuw lid mijn code voorbeeldje werkt gewoon, ik had het getest voordat ik het poste.
Offline lolll - 05/02/2010 17:51 (laatste wijziging 05/02/2010 17:54)
Avatar van lolll Lid zal nog is proberen.
Moet bij name de naam van de filmclip staan ?
Of moet dat voor die removechild ?
Offline vinTage - 05/02/2010 17:57
Avatar van vinTage Nieuw lid gewoon zo copy/pasten.

stad tijd nu 
Offline lolll - 05/02/2010 19:17
Avatar van lolll Lid Sorry hoor, maar het werkt niet, er komt bij compilerfouten dit te staan : "1120: Gebruik van niet-gedefinieerde eigenschap event."
Offline vinTage - 06/02/2010 00:03
Avatar van vinTage Nieuw lid event....die geef je gewoon mee als param in de functie "hit"
En het werkt 100% zeker te weten wel 
Offline lolll - 06/02/2010 09:26 (laatste wijziging 06/02/2010 09:28)
Avatar van lolll Lid Nu werkt het, maar als ik op een bal klik, verdwijnt hij wel, maar komt er een venster met uitvoer, en daar staat het volgende in :
TypeError: Error #2007: Parameter child mag niet null zijn.
at flash.display::DisplayObjectContainer/removeChild()
at balverdwijn2_fla::MainTimeline/hit()
TypeError: Error #2007: Parameter child mag niet null zijn.
at flash.display::DisplayObjectContainer/removeChild()
at balverdwijn2_fla::MainTimeline/hit()


Maakt niet uit, als ik het als swf publiceer, komt die foutmelding niet. BEDANKT !
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.248s