Toon posts:

[Lingo] actie na knoppen volgorde

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hi,

Ik ben een beginnende programmeur en zit met het volgende probleem. Ik ben bezig in Director en wat ik wil lukt niet.

De volgende code zorgt ervoor dat wanneer er twee toetsen tegelijk ingedrukt worden, er een bepaalde actie plaatsvindt.

on keyDown

if keyPressed("q") and KeyPressed("a") then _movie.go("speler2")
end

Nu wil ik dat er opnieuw een actie plaatsvindt, maar dan als eerst knop q ingedrukt wordt en daarna pas knop a, dus achter elkaar en niet tegelijk.

Ik heb van alles geprobeerd (lastkey, keydown, keyup etc.) maar ik kom er niet uit.

Iemand een oplossing?

Bedankt,

Tjendol

  • GrimaceODespair
  • Registratie: December 2002
  • Laatst online: 24-05 19:43

GrimaceODespair

eens een tettenman, altijd ...

Laat je movie naar frame x gaan na keyPressed("q"), en gebruik op frame x een andere behavior, namelijk keyPressed("a") die naar frame "speler2" gaat.;

Wij onderbreken deze thread voor reclame:
http://kalders.be


Verwijderd

Topicstarter
Bedankt voor de snelle reply, ik ga het proberen!

  • GrimaceODespair
  • Registratie: December 2002
  • Laatst online: 24-05 19:43

GrimaceODespair

eens een tettenman, altijd ...

Btw, op die manier introduceer je een 'status' in je programma. Dat wil zeggen dat, eenmaal op 'q' gedrukt, je in een bepaalde status zit (namelijk frame x). Je programma reageert dan anders (namelijk niet meer op 'q', maar wel op 'a'). Het kan erg ingewikkeld gaan worden als je meer toetsencombinaties wilt gaan registreren.

Afhankelijk van hoe complex je programma nog gaat worden kan je daarom beter als volgt werken:

Houd in een fifo queue constant de 2 laatst ingedrukte toetsen bij en check hun waardes om te bepalen wat je programma moet doen.

Wij onderbreken deze thread voor reclame:
http://kalders.be


Verwijderd

Topicstarter
Ok, nou je eerste oplossing heb ik werkend gekregen...jay..lol!. Wat je met je laatste reply bedoelt weet ik nog niet maar ik ga het proberen uit te zoeken. Thnx again!

  • MaxxRide
  • Registratie: April 2000
  • Laatst online: 09-01 10:13

MaxxRide

Surf's up

Je kunt ook besluiten om b.v. je engine als parent script te definieren en hierin de state van de engine in een bepaalde staat te zetten (state = #qPressed). Als het gaat om b.v. een speler kun je dat ook bij deze op dezelfde manier doen. Mogelijkheden zijn eindeloos :P

Maareh afhankelijk van wat je precies wil kun je een van de drie manieren proberen (du: tussenframe, queue, of engine in een bepaalde state zetten (b.v. het pauzeren van een movie en later weer starten kan prima in de engine)

If you are not wiping out you are nog pushing enough...


Verwijderd

Topicstarter
Hey bedankt weer. Helaas ben ik waarschijnlijk (nog) niet in staat om deze twee laatste alternatieven toe te passen. Proberen is natuurlijk altijd de moeite waard. In ieder geval werkt het. Het spel zal uiteindelijk wel door 4 spelers gespeeld moeten worden dus wellicht moet ik het 1 en ander aanpassen.

Ik moet volgens mij sowieso een efficiëntere manier gaan vinden om via een script 1 object in een scherm bij bijvoorbeeld verandering van speler te vervangen. Op dit moment gebeurt het gewoon door te jumpen naar een totaal ander frame met alle informatie nogmaals in dat frame. Niet echt ideaal volgens mij...maar ja, voorlopig kan ik weer even verder.

Bedankt allemaal! :)

  • MaxxRide
  • Registratie: April 2000
  • Laatst online: 09-01 10:13

MaxxRide

Surf's up

Tip: verdiep je een beetje in parent scripts. Hierdoor kun je in 1 frame een soort engine schrijven die zich na ieder frame update (je blijft als het ware in 1 frame hangen en iedere cycle kun je updates doen, b.v. het verandere van sprites, het verplaatsen van sprites etc).

b.v.:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
on exitframe me
  go to the frame -- spring terug naar huidige frame
end

on stepframe me
  if ToDo = #actie1 then
     doe actie 1
  else
   .
   .
  end if
-- evt is voor deze constructieook een case te gebruiken
end


In de stepframe pas je telkens je sprites aan waardoor je het "engine" effect krijgt.

If you are not wiping out you are nog pushing enough...


Verwijderd

Topicstarter
Cool, dat klinkt als iets dat ik goed gebruiken kan. Ik ga weer even aan de slag :) Thnx again!

  • MaxxRide
  • Registratie: April 2000
  • Laatst online: 09-01 10:13

MaxxRide

Surf's up

anytime :)

If you are not wiping out you are nog pushing enough...

Pagina: 1