Uso Timer, Scritte Ti Ed Altri Effetti

  • October 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Uso Timer, Scritte Ti Ed Altri Effetti as PDF for free.

More details

  • Words: 696
  • Pages: 16
Salahzar Stenvaag ALI - Accademia delle Land Italiane Script Base Uso Eventi: Timer Giugno 2008 ~1~

Prerequisiti: - sapete rezzare un oggetto - sapete costruire lo script Hello Avatar - sapete cosa sono gli eventi touch_start e state_entry - sapete editare uno script

~2~

0. L'uso del timer è spesso essenziale negli script per fare moltissime cose: • lanciare eventi ogni x secondi • aspettare un certo ammontare di tempo prima di eseguire una operazione • creare animazioni su scritte / immagini / movimenti • dare un intervallo di tempo massimo per eseguire operazioni (timeout) • altre (...) ~3~

1. La teoria: Come tutti o quasi gli eventi è sempre spezzato in due: l'impostazione e la ricezione: Impostazione: llSetTimerEvent(float numerosecondi); evento: timer(){

..... }

dopo numerosecondi scatta l'evento (ma attenzione, l'evento si ripete ANCHE dopo se non disabilitato). • se numerosecondi è zero, il timer è disabilitato • ci può essere un solo timer anche se con qualche trucco possiamo crearcene di "virtuali" •

~4~

• visto che l'evento timer() è "povero" ci si basa molto su variabili globali Costruite un oggetto e chiamatelo con il vostro nome + il nome dell'esercizio ed inserite gli script come indicato qui sotto facendo new script e copiando ed incollando dalla notecard. Ogni volta che cambiate esercizio fate "take" dell'oggetto vecchio nel vostro inventory e rezzatene uno nuovo.

~5~

Sezione 2. Lanciare eventi ogni x secondi. Questo script dice qualcosa ogni 10 secondi accumulando i secondi. • non scatta subito ma aspetta 10 secondi prima di partire. lo script se toccato si "spegne" o si accende in modo da poter "controllare" il suo comportamento. • Notate l'uso dei colori e della "scrittura muta" llsettext per avere una rappresentazione visiva dell'oggetto. •

~6~

float fTOTALE=0; float fINTERVALLO=5; integer iATTIVO=1; vector vROSSO=<1,0,0>; vector vGIALLO=<1,1,0>; vector vVERDE=<0,1,0>; // per semplificare la scrittura muta info(string str){ llSetText(str,vGIALLO,1);}

default { ~7~

state_entry() { info("Sezione 2\nLancio eventi ogni x secondi"); llSetTimerEvent(fINTERVALLO); iATTIVO=1; llSetColor(vVERDE,ALL_SIDES); // il cubo è verde } timer() { llSetColor(vGIALLO,ALL_SIDES); llSleep(0.1); // lo sleep è essenziale per vedere il giallo fTOTALE+=fINTERVALLO; info("Evento scattato, \nsono passati \n"+(string)fTOTALE+" secondi"); llSetColor(vVERDE,ALL_SIDES); touch_start(integer count) { if(iATTIVO==1) { ~8~

}

iATTIVO=0; llSetTimerEvent(0); // toglie il timer llSetColor(vROSSO,ALL_SIDES); // verde info("Eventi disattivati"); // informa } else { iATTIVO=1; llSetTimerEvent(fINTERVALLO); // timer llSetColor(vVERDE,ALL_SIDES); // stoppato info("Eventi attivati"); } }}

3. Variante che "scatta subito" Questo è un piccolo trucco per fare sì che l'evento scatti subito e poi si disponga all'intervallo voluto: ~9~

float fTOTALE=0; float fINTERVALLO=5; integer iATTIVO=1; vector vROSSO=<1,0,0>; vector vGIALLO=<1,1,0>; vector vVERDE=<0,1,0>; // per semplificare la scrittura muta info(string str){ llSetText(str,vGIALLO,1); } default { state_entry() { info("Sezione 3\nLancio eventi subito"); //************************************(1) iATTIVO=0; llSetTimerEvent(0.1); // <----- SCATTA SUBITO ~ 10 ~

llSetColor(vVERDE,ALL_SIDES); } timer(){ //*************************************(2) if(iATTIVO==0){ llSetTimerEvent(fINTERVALLO); iATTIVO=1; } else fTOTALE+=fINTERVALLO; // l'incremento non lo fa all'inizio llSetColor(vGIALLO,ALL_SIDES); llSleep(0.1); info("Evento scattato, \nsono passati \n"+(string)fTOTALE+" secondi"); llSetColor(vVERDE,ALL_SIDES); } touch_start(integer count){ if(iATTIVO==1) { iATTIVO=0; ~ 11 ~

llSetTimerEvent(0); // toglie il timer llSetColor(vROSSO,ALL_SIDES); // verde info("Eventi disattivati"); // informa }else{ //*******************************(3) llSetTimerEvent(0.1); // info("Eventi attivati");

}}}

Le modifiche rispetto allo script precedente: (1): Nello state entry si mette attivo=0 e si mette un timer a 0.1 (scatta subito) (2): nel timer, se era precedentemente spento allora imposta il timer, stato messo attivo. ~ 12 ~

L'incremento del contatore lo fa solo al secondo scatto (il primo serve solo per dare l'avvio). (3): nel touch_start sfruttiamo il fatto che il timer() adesso sa "accendersi".

Sezione 4. Animazioni di scritte con un timer Usiamo un contatore ed un timer per produrre degli effetti sulle scritte (es. lampeggiante). float fALPHA=1; string sNOME="Frase che lampeggia"; default { state_entry(){ llSetText(sNOME,<1,1,0>,fALPHA); ~ 13 ~

llSetTimerEvent(0.5); } timer(){ if(fALPHA==0) fALPHA=1; else fALPHA=0; llSetText(sNOME,<1,1,0>,fALPHA); }}

La stessa cosa la potete fare sull'intero prim per avere un prim che lampeggia. Sezione 5. Frase che cambia colore string sNOME="Frase che cambia colore"; // gli 8 colori fondamentali list lCOLORS=[ <0,0,0>, <0,0,1>, <0,1,0>, <0,1,1>, <1,0,0>, <1,0,1>, <1,1,0>, <1,1,1> ]; integer iCURSORE=0; // va da 0 a 7 mostra() ~ 14 ~

{ vector colore=(vector)llList2String(lCOLORS,iCURSORE); llSetText(sNOME,colore,1); } default { state_entry() { iCURSORE=0; mostra(); llSetTimerEvent(0.5); } timer() { iCURSORE++; ~ 15 ~

if(iCURSORE>7) iCURSORE=0; // cicla sui colori mostra(); }}

~ 16 ~

Related Documents

Uso Del Timer
October 2019 10
Effetti
December 2019 7
12) Calcio E Altri Ti Nv
November 2019 7
Timer 555
May 2020 10
Exam Timer
November 2019 23