[AS3] Flash twee buttons met dezelfde functie.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo allemaal,

Ik heb kleine quiz gemaakt in flash.
Telkens als je correct antwoord, wordt je score in de output met 1 opgeteld.

Nu, om de (meerkeuze) vragen te beantwoorden heb je voor elk antwoord 2 buttons. Eén gewoon en één op een controller. (zie afbeelding)
Afbeeldingslocatie: http://i52.tinypic.com/11rb3w0.png

Telkens als je op eender welke button klikt, gaat hij naar de volgende vraag op de tijdlijn.

Probleem: vanaf de tweede vraag, krijg ik in mijn output een dubbele melding als ik op een button klik. Vermoedelijk door mijn twee buttons... Maar die hebben niet dezelfde naam. Kan iemand mij dit uitleggen?

EDIT: ik heb twee andere functies gemaakt voor de tweede reeks buttons, maar dit lost niks op. :(

Flash ActionScript 3:
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
stop();

var answerResult:String;
var melding:String;
var score:Number = 0;

function onCorrectClick(evt:MouseEvent):void {
    answerResult = "Correct antwoord!";
    score++;
    melding = "Uw score bedraagt :  " + score + "/4";
    trace(answerResult);
    trace("");
    trace(melding);
    trace("------------------------------");
}

function onFalseClick(evt:MouseEvent):void {
    answerResult = "Foutief antwoord!";
    melding = "Uw score bedraagt :  " + score + "/4";
    trace(answerResult);
    trace("");
    trace(melding);
    trace("------------------------------");
}

function gotoSport(evt:MouseEvent):void {
    gotoAndStop("sport");
}

redBtnAgain.addEventListener(MouseEvent.CLICK, onAgainClick);

btnBlue.addEventListener(MouseEvent.CLICK, onFalseClick);
btnBlue.addEventListener(MouseEvent.CLICK, gotoSport);
conBtnBlue.addEventListener(MouseEvent.CLICK, onFalseClick);
conBtnBlue.addEventListener(MouseEvent.CLICK, gotoSport);
btnOrange.addEventListener(MouseEvent.CLICK, onCorrectClick);
btnOrange.addEventListener(MouseEvent.CLICK, gotoSport);
conBtnOrange.addEventListener(MouseEvent.CLICK, onCorrectClick);
conBtnOrange.addEventListener(MouseEvent.CLICK, gotoSport);
btnGreen.addEventListener(MouseEvent.CLICK, onFalseClick);
btnGreen.addEventListener(MouseEvent.CLICK, gotoSport);
conBtnGreen.addEventListener(MouseEvent.CLICK, onFalseClick);
conBtnGreen.addEventListener(MouseEvent.CLICK, gotoSport);
btnYellow.addEventListener(MouseEvent.CLICK, onFalseClick);
btnYellow.addEventListener(MouseEvent.CLICK, gotoSport);
conBtnYellow.addEventListener(MouseEvent.CLICK, onFalseClick);
conBtnYellow.addEventListener(MouseEvent.CLICK, gotoSport);

Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 14:52
worden die eventlisteners niet toevallig nog een keer toegevoegd bij het binnenkomen van de volgende frame?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ja, natuurlijk, bij de volgende vraag ziet mijn code er zo uit:

Flash ActionScript 3:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
stop();

function gotoAardrijkskunde(evt:MouseEvent):void {
    gotoAndStop("aardrijkskunde");
}

btnBlue.addEventListener(MouseEvent.CLICK, onFalseClick);
btnBlue.addEventListener(MouseEvent.CLICK, gotoAardrijkskunde);
conBtnBlue.addEventListener(MouseEvent.CLICK, onFalseClick);
conBtnBlue.addEventListener(MouseEvent.CLICK, gotoAardrijkskunde);
btnOrange.addEventListener(MouseEvent.CLICK, onFalseClick);
btnOrange.addEventListener(MouseEvent.CLICK, gotoAardrijkskunde);
conBtnOrange.addEventListener(MouseEvent.CLICK, onFalseClick);
conBtnOrange.addEventListener(MouseEvent.CLICK, gotoAardrijkskunde);
btnGreen.addEventListener(MouseEvent.CLICK, onCorrectClick);
btnGreen.addEventListener(MouseEvent.CLICK, gotoAardrijkskunde);
conBtnGreen.addEventListener(MouseEvent.CLICK, onCorrectClick);
conBtnGreen.addEventListener(MouseEvent.CLICK, gotoAardrijkskunde);
btnYellow.addEventListener(MouseEvent.CLICK, onFalseClick);
btnYellow.addEventListener(MouseEvent.CLICK, gotoAardrijkskunde);
conBtnYellow.addEventListener(MouseEvent.CLICK, onFalseClick);
conBtnYellow.addEventListener(MouseEvent.CLICK, gotoAardrijkskunde);


Maar toen ik maar met één reeks buttons werkte, ging het wel hoor.. Er zijn gewoon nieuwe EventListeners bijgekomen met een andere butten-instance-name...
Alleen de "conBtn..." zijn toegevoegd.

Hoe zou ik dit dan het beste oplossen?

Voor de tweede reeks buttons een andere functienaam geven heeft niet geholpen..

Bedankt

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik weet al wat er scheelt... :(

Toen het nog werkte, had ik geen buttons, maar tekst-instancies, met telkens een andere naam. Daarom werkte het toen wel... logisch!

Dus de enige oplossing zou zijn om allemaal aparte buttons te maken? :s

Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 14:52
Verwijderd schreef op vrijdag 07 januari 2011 @ 19:16:
ja, natuurlijk, bij de volgende vraag ziet mijn code er zo uit:
Mja het is alweer een behoorlijk tijdje geleden dat ik met AS3 heb mogen werken.
Ik weet iig wel dat objecten over meerdere frames kunnen bestaan, afhankelijk van wat je in flash zelf doet. (ik ga er even vanuit dat je geen flex gebruikt). Eventlisteners die op de ene frame worden toegevoegd zijn ook op een andere frame actief, tenzij je ze zelf verwijdert. Dit gaat volgens mij ook op voor wanneer je via een goto statement opnieuw naar dezelfde frame gaat.
Wat je kunt proberen om dit uit te sluiten is voordat je naar een andere frame heen gaat eerst even alle eventlisteners te verwijderen. Mocht dit niet helpen zul je toch moeten wachten op iemand anders die het antwoord heeft :)


*edit*
Verwijderd schreef op vrijdag 07 januari 2011 @ 19:25:
Dus de enige oplossing zou zijn om allemaal aparte buttons te maken? :s
Dat zou niet uit moeten maken, zolang ze allemaal een unieke naam hebben en dus ook daadwerkelijk aparte instanties zijn.

[ Voor 14% gewijzigd door Caelorum op 07-01-2011 19:32 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Caelorum schreef op vrijdag 07 januari 2011 @ 19:31:
*edit*

[...]

Dat zou niet uit moeten maken, zolang ze allemaal een unieke naam hebben en dus ook daadwerkelijk aparte instanties zijn.
Die aparte instanties heb ik dus over het hoofd gezien! :O
Die heb ik dus allemaal hetzelfde genoemd 8)7

Mijn probleem is opgelost :9

hartelijk dank voor de harde hint! ;)

[ Voor 5% gewijzigd door Verwijderd op 07-01-2011 19:39 ]

Pagina: 1