Tällä hetkellä on työn alla pieni pelintapainen, jossa olisi tarkoitus ohjailla pelihahmoa nuolinäppäimillä. Tuossa koodaillessa huomasin että jos vaikka painaa oikean nuolinäppäimen pohjaan, jolloin hahmoin tulisi liikkua koko näppäimen painalluksen ajan oikealle, ohjelma lukee aluksi yhden "nuolen" , eli liikuttaa ukkelia nykäyksen, odottaa sitten n. sekunnin, ja sitten vasta alkaa syöttämään nuolta yhtäjaksoisesti.
Tämä ei siis kuitenkaan ole kovin toivottu ilmiö, vaan tuo "viive" pitäisi saada pois. Onko tätä mahdollista kiertää/poistaa ohjelmoimalla, vai onko ainut vaihtoehto BIOS:n näppäimistöasetusten muuttaminen. Käytössä on VB6.0
Mihinkäs proseduuriin sitä on koodi tungettu?
Kokeileppas vaikka keydown proseduuria..
On keydown:lla tehty, mutta se kun ei tahdo lukea syötettä yhtäjaksoisesti. Koodi ei ole nyt käsillä kun oon töissä, mikäli se nyt asiaan mitää auttaa.
Laita muuttujataulukko (vaikka Booleaneja), aseta tiettyyn muuttujaan True Keydownissa ja False Keyupissa (kai VB:ssä on sellainen?), ja tarkista jatkuvasti, mikä on näppäimen tila.
Parempi olisi tehdä tarkistus suoraan GetAsyncKeyState -funktiolla.
Reaaliaikaisissa peleissä yleensä luetaan näppäimet aina ennen piirtovaihetta ja liikutetaan tyyppiä oikeaan suuntaan kuluneen ajan mukaan; piirtämisen kesto voi vaihdella.
Viestin loppuun ei muuten tarvita tyhjiä rivejä...
Pahoittelut tyhjistä riveistä.
Ja kiitokset noista vinkeistä ,pitää kokeilla noita kunhan pääsee koodin ääreen.
edit: kirjootusvirhe
GetAsyncKeyState funktioita voi tietysti käyttää mutta se ei ole suositeltavaa koska se palauttaa näppäinten painalluksia globaalisti vaikka ikkunalla ei olisikaan fokusta. Eli mieluummin noilla KeyDown ja KeyUp (tjsp) eventeillä. Tietysti voit käyttää myös esim. DirectInputtia jos väännät laajempaa peliä ja tarvetta ilmenee.
GetAsyncKeyState-funktioon voi vielä liittää Booleanin, joka on False tai True sen mukaan, onko ikkuna aktiivinen. Sen taas saa varmasti jostakin onActivate / OnDeactivate-jutuista.
Helppo tapa on ainaskin, esim:
if näppäintä painetaan pohjaan then liikutetaan elseif emme paina enään nappia then emme liikuta end if
Ääh, Fawks ehti jo selittää, sen mihin pyrin...
Mutta kyllä pitäytyisin ennemmin, GetAsyncKeyState-funktiossa, niinkuin Metabolix jo kertoi :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.