Toon posts:

[AS2.0] if statement?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Met flash 8 ben ik bezig een spelletje te maken.
Flash laat om de beurt 1 van de 4 hotspots zien...

code:
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
function randomhotspot(){
var hotswitch1 = false;
var hotswitch2 = false;
var hotswitch3 = false;
var hotswitch4 = false;
    
 if(random(4) == 0){
    hotswitch1 = true;
    hotspot1();
 }
 
 if(random(4) == 1){
  hotswitch2 = true;
  hotspot2();
 }
 
 if(random(4) == 2){
  hotswitch3 = true;
  hotspot3();
 }
 
 if(random(4) == 3){
  hotswitch4 = true;
  hotspot4();
 }
}


en daarna kijkt Flash wanneer er gericht wordt met je muis,
en waarneer de spatie balk ingedrukt wordt, en dan op het laatst
of de schakelaar van de hotspot aan staat:

code:
1
2
3
4
5
 //hotspot1
if (Key.isDown(Key.SPACE) && _root.visier.hitTest(_root.flesjes) && hotswitch1 == true) {
ontploffing();
trace("raak");
}


Volgens mij doe ik bij dit laatste iets fout;
aangezien flash weergeeft dat er nooit raak geschoten wordt,
(terwijl dit wel zo is.)

Kan iemand mijn scriptje even doorlezen en kijken wat ik fout doe?

Groetjes
Leonie

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Sowieso lijkt het me dom om telkens een nieuw random getal te berekenen. Doorgaans zet je dat in een tussenvariabele:
Flash ActionScript:
1
2
3
4
5
6
var rnd = random(4);

if (rnd == 0) {
} else if (rnd == 1) {
...
}

Daarnaast hoort ActionScript in Webdesign, Markup & Clientside Scripting, zoals je ook zelf had kunnen lezen in onze stickies: Waar hoort mijn topic?. Als je in het vervolg een topic wil openen, lees dan eerst even de stickies van het betreffende subforum door.

PRG>>WEB

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
Sorry. ik dacht dat ActionScript 2.0 en Java samen gaat dus onder het zelfde
programmeer board hoorde.

Maar goed. Dit lost mijn probleem
met de hotswitch1 == true && spatiebalk indrukken niet op???

  • sanderb
  • Registratie: November 2000
  • Laatst online: 01:30
Je declareert je variables hotswitch1 t/m 4 in je functie..
Die variables bestaan dan alleen in die functie.

Vervolgens gebruik je 4 keer random(4) achter elkaar. Dus er wordt dan 4 keer opnieuw een random getal genomen.

bovendien is het gebruik van random() deprecated en kun je beter Math.random() gebruiken.
je functie zou er dan zo uitzien:

Flash ActionScript:
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
var hotswitch1:Boolean;
var hotswitch2:Boolean;
var hotswitch3:Boolean;
var hotswitch4:Boolean;
//
function randomHotspot() {
    hotswitch1 = false;
    hotswitch2 = false;
    hotswitch3 = false;
    hotswitch4 = false;
    var rnd = Math.round(Math.random()*4);
    switch (rnd) {
    case 1 :
        hotswitch1 = true;
        hotspot1();
        break;
    case 2 :
        hotswitch2 = true;
        hotspot2();
        break;
    case 3 :
        hotswitch3 = true;
        hotspot3();
        break;
    case 4 :
        hotswitch4 = true;
        hotspot4();
        break;
    }
}


die switch mag je ook met een if/else statement doen als je dat wil...

" A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools. " - Douglas Noel Adams


Verwijderd

Topicstarter
ja tof het werkt!

verder had ik nog een klein foutje in het visier.onEnterFrame script;
daardoor werkte de ontploffing nietmeer.
Maar het is opgelost.

Thanks