Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Zastavení javascriptu

Mám kód a po kliknutí na klávesu X se změní obrázky. Problém je že když kliknu několikrát na klávesu X vždy se změní znova. Jak to udělat aby se změnili jednou po zmáčknutí X a vícekrát ne. Děkuji za každou radu (Prostě když kliknu třeba 5x na klávesu X, tak aby se počítalo pouze 1 kliknutí a vícekrát to nešlo).

var texture1 : Texture2D;
var texture2 : Texture2D;

function Update() {
if (Input.GetKey(KeyCode.X))
{
RenderSometing();
}
}
function RenderSometing() {

yield WaitForSeconds(9);
renderer.material.mainTexture = texture1;

yield WaitForSeconds(9);
renderer.material.mainTexture = texture2;
}
Předmět Autor Datum
Nastavíš si nějakou bool proměnnou a pak ji kontroluješ.
Wikan 26.09.2013 14:52
Wikan
Aha, a nešlo by něco napsat do tohoto scriptu, aby se to vícekrát neprovedlo? Nevím třeba něco jako…
Dáda456 26.09.2013 14:58
Dáda456
No to co jsem psal, jsi měl právě dopsat do toho scriptu.
Wikan 26.09.2013 15:24
Wikan
Omlouvám se, ale nemůžu nic najít, nemůžeš mě prosím ještě poradit?
Dáda456 26.09.2013 15:46
Dáda456
var texture1 : Texture2D; var texture2 : Texture2D; var alreadyUpdated = false; function Update() {…
Wikan 26.09.2013 15:57
Wikan
Děkuji to funguje dobře, můžeš mi to prosím ještě ukázat na tomto? To mi nejde, taky aby se spustilo…
Dáda456 26.09.2013 16:14
Dáda456
Tady to uděláš úplně stejně... Já Actionscript neumím vůbec a v Javascriptu taky nijak nevynikám, al…
Wikan 26.09.2013 16:21
Wikan
Udělal jsem to takto, ale nejde to: var AudioFile : AudioClip; var alreadyUpdated = false; function…
Dáda456 26.09.2013 16:33
Dáda456
var AudioFile : AudioClip; var alreadyUpdated = false; function Update() { if (!alreadyUpdated && In…
Wikan 26.09.2013 16:37
Wikan
Paráda, díky moc. Jsi hodnej.
Dáda456 26.09.2013 16:40
Dáda456
Můžu se ještě na něco zeptat? Opravdu poslední dotaz. Nešlo by to udělat aby se to provedlo jednou z…
Dáda456 26.09.2013 18:44
Dáda456
var texture1 : Texture2D; var texture2 : Texture2D; var alreadyUpdated = false; function Update() {…
Flash_Gordon 26.09.2013 19:02
Flash_Gordon
Dík, ale píše to: Unknown identifier: 'setTimeout'.
Dáda456 26.09.2013 19:07
Dáda456
Hu... co to je ]:( var texture1 : Texture2D; var texture2 : Texture2D; var alreadyUpdated = false;…
Flash_Gordon 26.09.2013 19:13
Flash_Gordon
Teď to píše: Unknown identifier: 'window'.
Dáda456 26.09.2013 19:19
Dáda456
No toto. var texture1 : Texture2D; var texture2 : Texture2D; var alreadyUpdated = false; var udelat…
Flash_Gordon 26.09.2013 19:23
Flash_Gordon
To samé : Unknown identifier: 'window'.
Dáda456 26.09.2013 19:26
Dáda456
Tak to window dej pryč i s tou tečkou zatím.
Flash_Gordon 26.09.2013 19:27
Flash_Gordon
Odstranil jsem window i s tou tečkou a píše to : Unknown identifier: 'setTimeout'.
Dáda456 26.09.2013 19:29
Dáda456
pisem ti ze kecas. Nechces sem dat cely zdrojak? Spustas to v com? prehliadaci z roku 1985?
MM.. 26.09.2013 19:37
MM..
To není do prohlížeče , je to v programu StencylWorks (to je program na tvorbu her).
Dáda456 26.09.2013 19:38
Dáda456
to ked takymto sposobom chces vytvorit hru, tak to ani do penzie nestihnes.
MM.. 26.09.2013 19:53
MM..
No ty totiž máš sice v nadpise Javascript, ale jedná se o trochu odlišný unity javascript. var text…
Flash_Gordon 26.09.2013 19:40
Flash_Gordon
Jo máš pravdu. Tento script mi to načte, ale když zmáčknu klávesu třeba každou vteřinu, tak se to sp…
Dáda456 26.09.2013 19:51
Dáda456
InvokeRepeating("povolKlavesu", 30, 30);
MM.. 26.09.2013 19:55
MM..
Inac to InvokeRepeating neni vobec dobre pre teba, ptz to potom bude spustat furt dookola po 30sekun…
MM.. 26.09.2013 19:58
MM..
Díky moc, funguje to. Nedělám nic velkého, jenom tak skouším udělat jednoduchou hru. Ono to asi stej…
Dáda456 26.09.2013 20:03
Dáda456
BTW. normalny clovek by dal alreadyUpdated = false; na koniec funkcie RenderSometing, a nerobil tam… poslední
MM.. 26.09.2013 20:14
MM..
var texture1 : Texture2D;
var texture2 : Texture2D;
var alreadyUpdated = false;

function Update() {
    if (!alreadyUpdated && Input.GetKey(KeyCode.X)) {
        alreadyUpdated = true;
        RenderSometing();
    }
}

function RenderSometing() {
    yield WaitForSeconds(9);
    renderer.material.mainTexture = texture1;

    yield WaitForSeconds(9);
    renderer.material.mainTexture = texture2;
}

Děkuji to funguje dobře, můžeš mi to prosím ještě ukázat na tomto? To mi nejde, taky aby se spustilo pouze 1x naráz.

var AudioFile : AudioClip;

function Update() {
if (Input.GetKeyDown ("x"))
{
    audio.clip = AudioFile;
    audio.Play();
}
}

PS. Jakou knížku si mám koupit, abych to uměl jako ty? Javascript? Actionscript?

Udělal jsem to takto, ale nejde to:

var AudioFile : AudioClip;
var alreadyUpdated = false;

function Update() {
    if (!alreadyUpdated && Input.GetKey(KeyCode.X)) {
        alreadyUpdated = true;
    }
}

{
    audio.clip = AudioFile;
    audio.Play();
}
 

Píše to chybu expecting :, found '='.

var AudioFile : AudioClip;
var alreadyUpdated = false;

function Update() {
    if (!alreadyUpdated && Input.GetKeyDown("x")) {
        alreadyUpdated = true;    
        audio.clip = AudioFile;
        audio.Play();
    }
}

Přijde mi, že jenom lepíš kusy kódu, bez toho aby jsi alespoň trochu tušil, co vlastně děláš. Nechceš si nejdřív projít nějaké tutoriály na webu?

Můžu se ještě na něco zeptat? Opravdu poslední dotaz. Nešlo by to udělat aby se to provedlo jednou za 30 vteřin? Ně to takto není moc platné. Prostě když zmáčknu X tak aby se nedalo dalších 30 vteřin zmáčknout. Šlo by to prosím?

var texture1 : Texture2D;
var texture2 : Texture2D;
var alreadyUpdated = false;

function Update() {
    if (!alreadyUpdated && Input.GetKey(KeyCode.X)) {
        alreadyUpdated = true;
        RenderSometing();
    }
}

function RenderSometing() {
    yield WaitForSeconds(9);
    renderer.material.mainTexture = texture1;

    yield WaitForSeconds(9);
    renderer.material.mainTexture = texture2;
}

Protože ono když zmáčknu X, tak už ho potom nemůžu zmáčknout, tak aby to zase za 30 vteřin šlo.

var texture1 : Texture2D;
var texture2 : Texture2D;
var alreadyUpdated = false;

function Update() {
    if (!alreadyUpdated && Input.GetKey(KeyCode.X)) {
        alreadyUpdated = true;
        RenderSometing();
        setTimeout(function(){alreadyUpdated = false;},30000);
    }
}

function RenderSometing() {
    yield WaitForSeconds(9);
    renderer.material.mainTexture = texture1;

    yield WaitForSeconds(9);
    renderer.material.mainTexture = texture2;
}




Hu... co to je ]:(

var texture1 : Texture2D;
var texture2 : Texture2D;
var alreadyUpdated = false;
var udelat;

function Update() {
    if (!alreadyUpdated && Input.GetKey(KeyCode.X)) {
        alreadyUpdated = true;
        RenderSometing();
        udelat =  window.setTimeout(function(){alreadyUpdated = false;},30000);
    }
}

function RenderSometing() {
    yield WaitForSeconds(9);
    renderer.material.mainTexture = texture1;

    yield WaitForSeconds(9);
    renderer.material.mainTexture = texture2;
}

No toto.

var texture1 : Texture2D;
var texture2 : Texture2D;
var alreadyUpdated = false;
var udelat;

function Update() {
    if (!alreadyUpdated && Input.GetKey(KeyCode.X)) {
        alreadyUpdated = true;
        RenderSometing();
       
    }
}

function RenderSometing() {
    yield WaitForSeconds(9);
    renderer.material.mainTexture = texture1;

    yield WaitForSeconds(9);
    renderer.material.mainTexture = texture2;
 udelat =  window.setTimeout(function(){alreadyUpdated = false;},30000);
}

No ty totiž máš sice v nadpise Javascript, ale jedná se o trochu odlišný unity javascript.

var texture1 : Texture2D;
var texture2 : Texture2D;
var alreadyUpdated = false;
var udelat;

function Update() {
    if (!alreadyUpdated && Input.GetKey(KeyCode.X)) {
        alreadyUpdated = true;
        RenderSometing();
       InvokeRepeating("povolKlavesu", .01, 30.0);
    }
}

function RenderSometing() {
    yield WaitForSeconds(9);
    renderer.material.mainTexture = texture1;

    yield WaitForSeconds(9);
    renderer.material.mainTexture = texture2;
 
}

function povolKlavesu () {

   alreadyUpdated = false;

}

Zpět do poradny Odpovědět na původní otázku Nahoru