Livecode: un linguaggio di programmazione gratuito, semplice e completo per: Windows, Mac, Linux, Android, iOS, Raspberry Pi, oppure pagina web interattiva (HTML 5).
Come Vedete è possibile creare dei fantastici effetti con livecode, ma come è possibile?
Basta utilizzare poche righe di codice, infatti per creare l'effetto dei pixel basta rimpicciolire l'immagine, salvarla piccola e poi ringrandirla. Ingrandendola si sgrana mostrando i pixel, ma se impostiamo la proprietà resizeQuality su best, livecode proverà a sistemare i pixel creando l'effetto sfocato.
Immaginiamo che l'immagine originale sia 1 e sopra abbiamo un'immagine copia (2) che di volta in volta sarà sempre più pixellosa, mente V è quanto pixelosa volgiamo l'immagine. Il codice per l'effetto pixel quindi è:
putwidthofthiscard * V * 0.01into W putheightofthiscard * V * 0.01into H exportsnapshotfromimg1atsize W,H toimg2
mentre per l'effetto sfocato:
settheresizeQualityofimg2to"best" putwidthofthiscard * V * 0.01into W putheightofthiscard * V * 0.01into H exportsnapshotfromimg1atsize W,H toimg2
Segnalo l'esistenza di un a finestra per la scelta della data: scaricabile qui
Funziona così: lo fate diventare un substack del vostro programma di nome, ad esempio calendarWidget100 e poi ogni volta che volete mettere un pulsante che faccia aprire la finsetra di scelta della data, mettete nel codice del pulsante:
on mouseUp put"2016"into anno put"3"into mese put"25"into giorno startusingstack"calendarWidget100" get altAnswerDate(anno, mese, giorno) stopusingstack"calendarWidget100" if it isemptythenexit mouseUp put it intofield"campo dove mettere la data" end mouseUp
Per farlo diventare un substack di un altro programma, basta andare sul property inspector dello stack CaldarWidget e modificare il main stack dal menu a tendina impostando come main stack il nostro programma.
Ringrazio francof per la segnalazione.
Una proprietà interessante dei caratteri è il metadato che livecode può associarci. In pratica in un campo di testo possiamo associare ad ogni carattere o gruppo di caratteri dei dati aggiuntivi, chiamati metadati.
Si può scrivere così:
Le applicazioni sono varie, dai correttori ortografici a testi interattivi. Soprattutto in congiunzione con la funzione Mousechunk.
Ad esempio, cosa fa questo codice?
on MouseWithin set the tooltip of me to ( the metadata of the mouseChunk) end MouseWithin
Pubblico qui un annuncio di lavoro apparso sul forum. Se siete interessati scrivete a mtell@ngi.it
Ho un progetto che prevedo di metterci dai 20 ai 30 giorni a ricreare in livecode il un programma che avevo fatto su cdrom, ma basterebbe un piccolo imprevisto ad allungare i tempi, e sopratutto... non ho idea di cosa voglia dire lo sviluppo per iOS e Android
Non conosco i tool di sviluppo a cui livecode si deve interfacciare, non conosco i modelli di distribuzione, non ho idea di quali siano i tempi necessari per migrare un progetto nato su pc verso il mobile, e sopratutto non credo di avere il tempo per imparare...
QUINDI
c'è qualcuno in grado di aiutarmi (ovviamente retribuito) nell'ultima fase, vale a dire, una volta prodotto il progetto completo che giri su win, mac e linux a testare e produrre l'.app e l'.apk del progetto e mi spieghi come funziona la messa on line degli stessi?
L'ideale sarebbe qualcuno che abbia già esperienza di sviluppo di app multimediali per piattaforme mobile (o anche giochi, non penso che le skill necessarie siano molto diverse) ovviamente usando LiveCode e che magari si trovi nel triveneto (io vivo e lavoro a Udine), che possa già ora farmi un preventivo sul costo dell'operazione e che possa, verso la metà di aprile o poco dopo, dedicarmi il tempo necessario alla produzione dell' app/apk al suo debug ed alla sua distribuzione, e che magari possa emettere fattura. mtell@ngi.it
Se volessimo analizzare un file audio, dovremmo prima di tutto sapere come è fatto. Uno dei formati più semplici è il wav, che non è compresso e i dati partono dopo il byte 44.
Il formato WAV, stereo, dopo il byte 44, pone due byte per il canale sinistro, due byte per il canale destro, e poi ricomincia. Per questo motivo possiamo fare un grafico leggendo questi byte.
Facciamo uno stack con:
un bottone
un campo di testo
un grafico di tipo linea
A questo punto nel pulsante mettiamo il seguente codice:
on mouseUp putURL"binfile:C:\Users\MAX\Documents\fanhit.wav"into MioAudio #percorso dell'audio da analizzare put0into cont #contatore byte put0into cont2 #contatore canale sinistro put0into cont3 #contatore punti del grafico repeatforeachbyte theByte in mioAudio add1to cont if cont > 44then#dopo il byte 44 possiamo analizzare l'audio add1to cont2 #contiamo i byte dei canali, 1 e 2 sinistro, 3 e 4 destro switch cont2 case1#primo byte canale sinistro putbyteTonum(theByte) into temp break case2#secondo byte canale sinistro put temp + (256 * byteTonum(theByte)) into temp add1to cont3 #spostiamo lungo x sull'asse del grafico put cont3,byteTonum(theByte) & returnafter punti #aggiungiamo una riga di coordinate x,y per il grafico break case4 put0into cont2 #resettiamo il contatore dei canali endswitch endif endrepeat put punti intofield1#vediamo l'elenco dei punti setthepointsofgraphic"line"to punti #facciamo il grafico del canale sinistro end mouseUp
Premendo il pulsante otterremo questo:
Ovviamente questo è solo un esempio molto semplice, ma da qui potete proseguire voi a fare od aggiungere effetti.
Ho appena rilasciato la prima versione di un programma CVS (control version system) per file livecode , cioè di controllo della versione.
Grazie a questo sistema potete vedere le differenze fra due sorgenti livecode e notare le differenze (proprietà, codice, tutto).
Riesce a fare ciò trasformando un sorgente livecode, che è un file binario, in un file XML. A quel punto utilizza i normali strumenti di CVS per testi.
Potete scaricarlo da qui: https://www.dropbox.com/s/vicx2jecx98nqzk/LivecodeDiff.livecode?dl=0
Ecco alcune immagini del programma:
Oggi vediamo come personalizzare alcune colonne di un datagrid, in modalità tabella.
Prima di tutto creiamo uno stack con un datagrid di tre colonne:
Ora utilizziamo l'ispettore delle proprietà e alla voce colonne premiamo il pulsante + per le colonne 2 e 3 che vogliamo modificare.
Chiudete eventuali finestre che si aprono, perchè prima bisogna capire cosa sono.
Aprite l'application browser, come potete vedere, ogni volta che viene creato un datagrid, viene creato un substack relativo ad esso di nome "Data Grid Templates ..." seguito da un numero. Ora se vedete come è composto questo substack noterete due card: una con delle istruzioni contenente solo un gruppo chiamato DatagridTempaleInstrucion, e un'altra che contiene tutti gli oggetti utilizzati per il nostro datagrid.
Come vedete ci sono due gruppi chiamati col 2 e col 3, questi gruppi sono quelli che vengono creati quando abbiamo premuto il pulsante +, e vanno modificati se vogliamo personalizzare il nostro datagrid.
Selezioniamoli, levando il campo testo di cui sono composti e mettendoci dei pulsati:
Chiudiamo il substack e salviamo.
Ora dobbiamo aggiornare i rispettivi script di behavior che sono utilizzati per popolare le righe del nostro datagrid per le nostre colonne modificate. Se notate nell'application browser abbiamo anche i pulsanti col 2 behavior e col 3 behavior, modifichiamone i codici semplicemente sostituendo la parola field con la parola button, poichè noi abbiamo levato i field e messo un pulsante al loro posto. Questa sostituzione per ora va fatta solo nei messaggi: LayoutControl, FillInData, ResetData.
A seconda dei controlli utilizzati, lo script andrà modificato ulteriormente, ma nel nostro esempio queste modifiche sono sufficienti.
Abbiamo finito.
Ora possiamo creare un pulsante per aggiungere le righe con il seguente codice:
on mouseUp send"addLine 1"togroup1 end mouseUp
cliccandoci sopra ogni volta verrà aggiunta una riga con le modifiche volute:
I campi di testo hanno varie messaggi che si attivano quando l'utente ci scrive: closeField, exitField, keyDown, keyUp, pastekey e così via...
Ognuno di questi ha la sua particolarità, ma se a noi interessa sapere solo quando il testo cambia, nell'esatto istante i cui cambia, a prescindere dal moto (tasti, mouse, copia e incolla, ecc.), ci basta usare il messaggio textChanged.
Ad esempio:
on textChanged enable button "save" end textChanged
In questo modo non dovrete più alambiccarvi su quale utilizzare.
Quando lavoriamo con testi può esserci utile sapere a che riga si trova un certo carattere o a che carattere comincia una certa riga.
Ad esempio il campo "testo" seguente:
questa è la prima riga questa è la seconda riga
è composto da 47 caratteri. Per sapere a che carattere comincia la seconda riga basta scrivere:
putthecharIndexofline2offield"testo"
il cui risultato è 24.
Mentre se vogliamo sapere in che riga si trova un certo carattere basta usare lineIndex:
putthelineIndexofchar26offield"testo"
il cui risultato è 2.
Le proprietà charIndex e lineIndex possono essere utilizzati solo cui campi di testo (field).