giovedì 29 dicembre 2016

Compenso per aiuto programma

Ciao a tutti,
il Sig. Martini cerca aiuto per convertire un suo programma da Hypercard (il vecchio livecode) in livecode. Il programma è un traduttore particolare.
Il Sig. Martini è disposto a pagare per tale lavoro, se siete interessati, lo potete contattare alla email: martiniglm38@gmail.com

giovedì 22 dicembre 2016

Plugin per mobile

Il programmatore Ludovic ha creato un plugin per chi sviluppa per dispotivi mobili:
Questo plugin vi permette di fare diverse cose:
  • impostare il dispositivo bersaglio dell'app (iOS)
  • impostare la lingua (iOS)
  • attivare il beta test per TestFlight (iOS)
  • inserire degli intent filter personalizzati per Android
Potete scaricarlo da qui: http://forums.livecode.com/viewtopic.php?f=14&t=24200

martedì 20 dicembre 2016

Modificare il widget segmented control

Il widget segmented control non è altro che un controllo che permette di selezionare una o più scelte da un elenco orizzontale:
Possiamo sfruttarlo per creare un sistema di votazione con le stelle, per fare questo vi basta creare un segmented control, chiamarlo giudizio e poi digitare i seguenti comandi nel message box:

set the itemcount of widget "giudizio" to 5
set multiplehilites of widget "giudizio" to true
set the itemstyle of widget "giudizio" to "icons"
set the itemicons of   widget "giudizio" to "star,star,star,star,star"   
set the hiliteditemicons of   widget "giudizio" to "star,star,star,star,star"

Potreste farloanche dal pannello proprietà, ma così è più semplice spiegare quali proprietà modificare. Otterrete quindi questo:
Poi mettete questo codice nello script widget:

local srating
on hiliteChanged
   -- Find the rightmost item that changed. This is
   -- the segment that the user clicked
   put the hilitedItems of me into tHilited #esempio 1,2,3
   repeat with tSegment = 5 down to 1
      if tSegment is among the items of tHilited then
         if tSegment > sRating then
            put tSegment into sRating
            exit repeat
         end if
      else
         if tSegment <= sRating then
            put tSegment into sRating
            exit repeat
         end if
      end if   
   end repeat
   
   -- Highlight all the segments up to and
   -- including the one that was clicked
   repeat with tSegment = 1 to sRating
      put tSegment & comma after tNewHilite
   end repeat
   -- Remove trailing comma
   delete char -1 of tNewHilite
   set the hilitedItems of me to tNewHilite
end hiliteChanged

e avrete il controllo per le votazioni cercato:

Questo è solo un esempio delle possibilità che offre questo widget.

lunedì 19 dicembre 2016

Beneficienza e livecode

La società Livecode ha deciso di attivarsi per un opera di beneficenza, chiamata https://onebillion.org per sviluppare app in lingua nei paesi più poveri per imparare. L'obbiettivo iniziale è insegnare la matematica.
Per questo la società livecode ha deciso di donare $1 per ogni copia cartacea acquistata prima del 23 Dicembre:
Potete acquistarla da qui: https://livecode.com/limited-edition-dictionary-bundle/

venerdì 16 dicembre 2016

librerie

Il programmatore Charles Buchwald ha pubblicat delle librerie molto interessanti per livecode  sulla pagina http://buchwald.ca/developer-tools/
Vediamole insieme:

LcResTool

Si tratta di un plugin per la risoluzione dei programma, permette di impostare la grandezza e risoluzione del programma, passare dalla modalità orizzontale a quella verticale e molto altro:

LcHTML

Questo plugin permette di modificare e aggiornare la proprietà htmlText dei campi di testo, inerire i caratteri speciali e molto altro. (v. figura a sinistra)
In questo modo potete modificare i campi di testo nella maniera che preferite, utilizzando la sintassi HTML.

LcLipsum

Questo semplice plugin serve a riempire i campi di testo con del testo di prova per vedere l'effetto complessivo.
Semplice ed efficiente.
 

LcMover

Questo plugin serve per spostare le finestre facilmente con precisione.

LcRatios

Questo plugin serve a calcolare i rapporti tra altezza e larghezza per scalare correttamente gli oggetti.

mercoledì 14 dicembre 2016

Funzione getOpt

Livecode 9 (dp3) contiene una nuova funzione: getOpt.
Questa funzione vi permette di avere la liste delle opzioni da riga di comando date in pasto al vostro programma.
Ad esempio se il vostro programma viene lanciato così:

mioProgramma.exe -v -s 10x10 -n Max --bello -z=51

potete cercare di estrarre le opzioni così:

put GetOpt("v s n b,bello z") into tInfo
if the number of elements in tInfo["errors"] > 0 then
   write "ERROR:" && tInfo["errors"][1] to stderr
else if "v" is among the keys of tInfo["options"] then
   put "l'utente ha scelto l'opzione v"
else if "s" is among the keys of tInfo["options"] then
   put "s = " tInfo["options"]["s"]
else if "n" is among the keys of tInfo["options"] then
   put "n = " tInfo["options"]["n"]   
end i

Per più informazioni leggete: http://livecode.wikia.com/wiki/Getopt

martedì 13 dicembre 2016

Libreria oAuth2

Livecode 9 (dp3) ora implementa la libreria per le autenticazione oAuth2 utilizzata da twitter, facebook e altri siti.
Per utilizzarla, a causa di un bug, dovete prima specificare da qualche parte  

start using stack "oauth2"

e avrete a disposizione i comandi:
Cliccate sui relativi link per sapere come funzionano.

lunedì 12 dicembre 2016

Twitter e livecode


Le versioni a pagamento di livecode hanno una libreria per interagire con twitter, ma ora esiste anche una libreria gratuita che potete scaricare da qui:
http://codyssea.com/index.php/downloads/ 





giovedì 1 dicembre 2016

Javascript dentro livecode

Ora è possibile lanciare comandi javascript dentro le applicazioni HTML5 di livecode usando il codice:

do JScript as "JavaScript"

Per esempio si possono l'utente bhall2001 ha provato a creare un gioco del blackjack usando delle api javascript che si appoggiano a http://deckofcardsapi.com/ (poteva farlo anche sempliciemtente usando put URL). Il risultato è questo:

L'esempio è su http://bobhall.net/blackjack/index.html, mentre il sorgente è scaricabile da http://bobhall.net/blackjack/standalone.zip ed è il file "__boot.livecode".
Un altro esempio è cambiare lo sfondo di una pagina web utilizzando il codice javascript:
Module.canvas.parentNode.setAttribute("style","background: hsl(sHue,100%,50%)")
dove sHue varia continuamemnte da 0 a 360. Qui potete vedere un esempio: http://www.maxvessi.net/livecode/public/HTML5withJavascriptExample1

lunedì 28 novembre 2016

Generatore di chiavi per app

Il programmatore Kroka ha rilasciato il programma per generare facilmente e velocemente della chiavi valide per poter firmare le nostre app, un requisito obbligatorio per pubblicare le app su siti Google Play Store o SlideMe. Chiaramente questo programma lo ha fatto con livecode:

Ecco i link dove scaricarlo:
Per poterlo contattare potete scrivergli sul forum cliccando qui.

venerdì 25 novembre 2016

Cache di un'immagine

Quando creiamo un programma con delle immagini, senza che ce ne accorgiamo, al momento di visualizzare le immagini il nostro programma deve scompattarle dal formato utilizza (JPG, PNG, GIF, ecc.) e trasformarle in un dato pronto all'uso per lo schermo.
L'immagine scompattata pronta all'uso viene messa nella memoria cache.
Possiamo impostare la dimensione della memoria di cache con le immagini impostando la proprietà ImageCacheLimit. Il valore preimpostato per i sistemi mobili (Android, iOS) è 64Mb, mentre per i computer è 254Mb.
Se la cache si riempie, i dati più vecchi vengono cancellati per far spazio ai nuovi. Svuotare e riempire la cache rallenta il programma, quindi per avere delle prestazioni migliori, se usate tante immagini, valutate quanto vi serve grande la cache.
Per sapere quanto è piena la cache potete leggere la proprietà imageCacheUsage, che restituisce il valore in bit. Ad esempio 268435456 è 256Mb (basta dividere 1'048'576 per ottenere il valore in MegaByte).
Se volete che sia subito decompattata nella cache all'apertura della card, potete impostare la proprietà alwaysBuffer su true. Anche qui fate attenzione a non esagerare.
Se un qualunque momento volete forzare delle immagine a essere caricate nella cache, potete usare il comando prepare image.

giovedì 24 novembre 2016

Ordinare a caso una sequenza

Oggi vedremo una peculiarità del comando sort  molto sottovalutata.
Come esempio creiamo una sequenza e ordiniamola in modo casuale:
put "1,2,3,4,5,6" into temp
sort items of temp by random(6)

nell'esempio il codice usa comando sort con la funzione random(). Il comando sort per ogni elemento chiede ogni volta alla funzione dopo la parola by il valore per l'ordinamento. Poichè random() è una funzione che estrae un valore casuale, nell'esempio da 1 a 6, l'ordine dei numeri sarà casuale.
Questo sistema è comodissimo nel caso di estrazioni di numeri casuali, perchè creiamo prima l'elenco dei numeri gli ordiniamo a caso e prendiamo i primi n che ci servono!
Rispetto a tanti altri modi per estrarre dei numeri casuali, non dobbiamo fare alcuna verifica se il numero estratto è già contenuto nei numeri generati precedentemente.
Al posto di random() si può usare un funzione personalizzata e ottenere ordinamenti con logiche molto complesse.

mercoledì 23 novembre 2016

Rimuovere elementi duplicati

Molte volte ci capita di avere a che fare con una lista che contiene duplicati, qual è il modo più veloce per rimuovere i duplicati? Semplice passare per un array!
Ecco come in poche righe di codice si possono eliminare le linee duplicate di un testo, e potete applicare lo stesso codice anche ad altre code (parole, numeri, ecc.); per esempio la variabile theList contiene la lista da cui eliminare i doppioni:

split theList by return and return
combine theList by return and empty
delete the last char of theList

Vediamo che succede:
  • Il comando split trasforma la variabile theList in un array
  • l'array conterrà una cella per riga
  • ogni cella conterrà cosa c'è dopo il primo carattere di accapo (cioè nulla, visto che gli stiamo dando in pasto una riga alla volta)
  • ogni cella avrà un'etichetta pari al testo della riga.
  • Poichè non possono esistere due celle con la stessa etichetta, in questo modo si eliminano le righe uguali.
  • il comando combine rimette insieme le righe
  • poi eliminiamo l'ultimo carattere di accapo
Semplice, geniale e velocissimo. Che ne dite?

giovedì 17 novembre 2016

Livecode per FileMaker

Livecode ha appena lanciato una versione specificatamente creata per supportare il database FileMaker. Per ora è in versione beta.
Potete provarla per Mac gratuitamente da questa pagina: https://filemaker.livecode.com/
Tra le altre cose contiene:
  • integrazione con google drive
  • possibilità di selezionare, mostrare e editare solo alcune parti di un PDF
  • Cattura video da webcam

lunedì 14 novembre 2016

Risolvere il problema del browser e del dizionario in livecode 8 e 9

Finalmente è stato capito dove sia il problema che affliggeva livecode dalla versione 8 per quanto riguardava il browser e il dizionario su Linux.
Su questo sistema operativo, infatti, sia il dizionario che il widgert borwser rendevano inutilizzabile livecode.
Poichè entrambi sono basati su Chromium, l'utente Saa  ha scoperto che lo stesso bug affligge Steam su linux (che sia basato su livecode?) e gli utenti linux hanno trovato una soluzione. Prima di avviare livecode su linux, prima bisogna impostare le varabile LC_ALL e LC_NUMERIC su C.
In pratica, per lanciare livecode 8 o livecode 9 su linux, bisogna scrivere:

LC_ALL= LC_NUMERIC=C
/opt/livecode/livecodecommunity-9.0.0-dp-1.x86_64/livecodecommunity.x86_64


E tutto funzionerà perfettamente:

venerdì 11 novembre 2016

Python Vs Livecode

In giro ho trovato il seguente script python per aggiungere la filigrana (watermark) al centro di un'immagine:
import sys
import os
import Image

def modifica(filename, watermarkname):
        photo = Image.open(filename)
        watermark = Image.open(watermarkname)

        Pwidth = photo.size[0]
        Pheight = photo.size[1]

        Wwidth = watermark.size[0]
        Wheight = watermark.size[1]

        x = (Pwidth/2)-(Wwidth/2)
        y =  (Pheight/2)-(Wheight/2)

        photo.paste(watermark, (x, y), watermark)
        photo.save(filename.split(".")[0]+"_watermark.jpg")



if len(sys.argv) < 3:
    print "Esempio d'uso: python watermark.py foto.jpg watermark.png"
    sys.exit()

foto = os.path.abspath(sys.argv[1])
watermark = os.path.abspath(sys.argv[2])

if os.path.isdir(foto):
    for file in os.listdir(foto):
        modifica(foto+"/"+file, watermark)
else:
    modifica(foto, watermark)

Sono 28 righe di codice abbastanza semplice da capire.
In livecode si può fare come puro script con:

on OpenCard
   if $# <> 3 then
      put "Esempio d'uso: livecode -ui watermark.livecode foto.jpg   watermark.png"
      quit 64 #command line usage error
   end if
   import paint from file $2
   set the name of last image to watermark
   if last char of $1 is "/" then
      set the defaultFolder to $1
      put files() into lista      
   else
      put $1 into lista
   end if   
   repeat for each line tFile in lista
      applicaW tFile
   end repeat
   quit
end openCard

on applicaW tFile
   import paint from file tFile
   set the name of last image to foto
   set the loc of image watermark to the loc of image foto   
   set itemdel to "."
   put item 1 of tFile into tFile
   export snapshot from rect (the rect of image foto) of this card to file ( tFile & "_watermark.jpg") as JPEG
   delete image foto
end applicaW

Circa 27 righe. La gestione della posizione è più semplice in livecode, perchè la proprietà loc è il baricentro dell'oggetto e basta farli coincidere per mettere al centro di un'immagine la filigrana.
A sfavore del Python è il sistema di gestione dei blocchi di codice solo su indentazione, è un attimo fare degli errori. Al contrario in Livecode è l'indentazione è automatica, e i cicli sono racchiusi da delimitatori ben chiari tipo ON/END.
Voi che ne pensate?

giovedì 10 novembre 2016

Bash Vs Livecode

Ho trovato in giro il seguente script bash per catturare tutti i riferimenti esterni:

#!/bin/bash
pagina=$1
if [ ${pagina:0:4} = "http" ]; then
  #web
  curl $pagina | grep -o 'href=['"'"'"][^"'"'"']*['"'"'"]' | sed -e 's/^href=["'"'"']//' -e 's/["'"'"']$//' >> links.txt
else
  #locale
  less $pagina | grep -o 'href=['"'"'"][^"'"'"']*['"'"'"]' | sed -e 's/^href=["'"'"']//' -e 's/["'"'"']$//' >> links.txt
fi

Sono 7 righe di codice (ignorando i commenti). In pratica prende quello che c'è dopo "href=", solo che l'espressione di grep e sed sono veramente difficili da comprendere.
Ho provato a farlo in livecode e il risultato è questo:
 
put $1 into indirizzo
#web o locale?
if (char 1 to 4 of $1) is not "http" then put "file:" before indirizzo
put url indirizzo into pagina
set itemdel to "="
put the number of items of pagina into nn
repeat with i=1 to nn
   if (char -4 to -1 of item i of pagina ) = "href" then put word 1 of item (i+1) of pagina & return after listaLink
end repeat
put listaLink


Sono 9 righe, solo due di più di bash, ma forse molto più chiare. Voi che ne dite?

mercoledì 9 novembre 2016

Behavior concatenati

In livecode è possibile associare a più oggetti lo stesso codice. Questa operazione è fatta con il behavior.
Alcune delle novità delle ultime versioni consistono nel poter assegnare dei behavior concatenati e il codice del behavior può essere scritto sia nei pulsanti, sia nelle card.
La possibilità di concatenare i behavior riduce ancora di più le righe di codice necessari per scrivere un programma.
Un oggetto può avere del codice, ma se ha anche un behavior, poi esegue anche il codice del behavior e i messaggi passati col comando pass. Se anche l'oggetto contenete il codice behavior ha un behavior anch'esso, anche quest'ultimo passerà i messaggi al behavior successivo se vengono passati con pass.
Ecco un esempio:

venerdì 4 novembre 2016

Il dizionario su Linux 32 bit è tornato a funzionare

Il dizionario di Livecode dalla versione 8 è diventato una pagina HTML+Javascript, non è più un programma incorporato su livecode. Sfortunatamente su linux non ha mai funzionato.
Ora nella versione 9 almeno su Linux 32bit è tornato a funzionare!
Vi allego una schermata:
Se avete un linux a 64 bit potete utilizzare la guida non ufficiale: http://livecode.wikia.com/wiki/Livecode_Wiki
ha un motore di ricerca che funziona come (o meglio) del dizionario. Inoltre potete correggere o aggiungere voi stessi voci o guide.

venerdì 28 ottobre 2016

Prof. Cyril Pruszko

Oggi presentiamo il sito del Prof. Cyril Pruszko: https://sites.google.com/a/pgcps.org/livecode/
Questo professore appassionato di livecode ha creato un sito che spiega di tutto su livecode, dai primi passi agli strumenti avanzati come videogiochi, intelligenza artificiale, chatbot e big data (gestire quantità enormi di informazioni).
E' una risorsa preziosa e indispenzabile per qualunque programmatore di livecode.
Ogni giorno il suo sito si amplia sempre di più, è incredibile.

giovedì 27 ottobre 2016

Artwork

Siccome mancano degli artwork su livecode, adesso c'è questa sezione del forum italiano dove potete mettere le immagini che vi piacciono di più o le vostrecreazioni:
http://livecodeitalia.freeforums.org/artwork-f5.html
ad esempio tempo fa feci questo:

mercoledì 26 ottobre 2016

Hosting a vita

Livecode sta lanciando un'offerta di hosting a vita per € 499 con €7 l'anno di manutenzione.
Questo hosting contiene:
  • livecode server commercial
  • 500 GB di spazio
  • infinite email
  • infinite mailing list
  • spamassassin
  • MySQL
  • PHP
  • Ruby
  • Perl
  • Cron
  • CGI
  • FTP
  • Apache
  • backup
  • virus scanner
  • PGP/GPG
  • Statistiche
  • Vari pannelli di gestione e log
  • supporto email 24 ore al giorno, 7 giorni su 7
Se vi interessa andate su: https://livecode.com/hosting/special/

lunedì 24 ottobre 2016

Livecode 9

E' uscita livecode 9, scaricabile sempre da http://downloads.livecode.com/
Da questa versione cambierà in meglio la numerazione, non ci saranno più tre numeri, ma solo due. Il primo rappresenta la versione il secondo gli aggiornamento della versione. Quindi d'ora in poi avremo solo 9.1, 9.2, 10, 10.1, ecc.
Le novità di questa versione sono:
  • Migliorata la velocità del cerca nel codice
  • proprietà defaultNetworkInterface per accettare le connessioni da specifiche porte
  • tabalign nel htmlText
  • migliorati i messaggi di errori del compilatore dei widget
  • altre migliorie per l'integrazione con altri liguaggi, ma al momento non sono visibili all'utente (andate su GitHub per vederle)


venerdì 14 ottobre 2016

Nuova Guida

Le ultime versioni di livecode includono un nuovo PDF che è la versione aggiornata della guida. Potete trovarla, oltre che dentro Livecode, anche qui:

mercoledì 12 ottobre 2016

Gioco per bambini

Oggi presentiamo un gioco fatto con livecoe, per i bambini più piccoli, ma che interesserà anche i grandi: dog tales.

Questo gioco è stato pensato per i più piccoli, che di solito si distraggono con i comandi; toccando il lato sinistro dello schermo i protagonista si muove, mentre toccando il lato destro salta. Per interagire bisogna toccare gli oggetti sullo schermo. Che ne pensate?
Potete scaricarlo da qui: https://itunes.apple.com/us/app/dog-tales/id582763528?mt=8

martedì 11 ottobre 2016

App per malati di HIV

Oggi presentiamo una app per iOS creata da un medico per monitorare lo stato di salute dei malati di HIV e mantenere efficiente il cuore:
Questa app può essere usata o dai malati stessi o dai loro familiari per pianificare un'attività salutare, avere le ultime notizie su questa malattia e altro ancora, adatta sia per tablet, sia per cellulari:
 

Potete scaricarla da questa pagina: http://www.leftbrainmedia.com/hiv.html

venerdì 7 ottobre 2016

id3lib

La libreria per leggere i tag id3 degli MP3 è passata su github, poichè l'autore originale è morto, il nuovo programmatore che mantiene la libreria è Paul McClernan, potete scaricare la libreria da: https://github.com/PaulMcClernan/id3lib

giovedì 6 ottobre 2016

Compendium

Oggi vediamo una app per iOS fatta con livecode: compendium.
Questa app creata dal Dott. David Kwinter serve ad annotare i casi clinici dei paziente e mettere in condivisione con gli atri medici i dati che vuoi rendere pubblci, in questo modo si possono scambiare i dati tra medici ed arrivare ad un'analisi più accurata. Si possono condividere anche immagini, video e articoli.
In questo modo digitando anche poche parole sulla barra di ricerca, otterrete una lista di risultati incredibile.
Potete scaricarlo da qui:
https://itunes.apple.com/us/app/compendium/id879888201?mt=8

martedì 4 ottobre 2016

Inserire un nuovo widget: SVG Text

Oggi vedremo come inserire un nuovo widget e per farlo useremo ad esempio il widget per fare scritte vettoriali SVG.
I widget sono nuovi controlli personalizzati, e inserendoli nell'IDE avremo nuovi possibilità di programmare in maniera sempre più veloce..
Scarichiamo da http://livecodeshare.runrev.com/stack/810/LCB-widget%3A-SVGText il nuovo widget. Scompattae l'archivio e dovrebbe esserci un file con estensione lce.
Andiamo su Tools -> Extension manager e vi apparirà una finestra tipo questa:
Cliccate sul + in alto a sinistra e scegliete il file lce. Una volta fatto ciò il nuovo widget apparirà nella sezione dei widget di livecode:
Questo widget vi permette di scrivere del testo vettoriale che potete anche ruotare e trasformare come preferite:

 Usate il property inspector per vedere tutte le proprietà che potete modificare.

venerdì 30 settembre 2016

Importare ed esportare documenti word/excel/openOffice/LibreOffice

Il programmatore Curry Kenworthy ha creato una serie di plugin per importare ed esportare documenti office in livecode. Potete scaricarli per prova o comprarli da qui:

venerdì 16 settembre 2016

Animation builder

Oggi presentiamo un programma segreto dentro livecode: Animation Builder.

Si tratta di un programma che crea animazioni partendo da una finestra livecode, memorizza ogni modifica, che potete metter in qualsiasi punto del filmato, stabilire le varie velocità, in modo da creare l'animazione voluta.
Si trova in Development -> Plugins -> revAnimation, oppure lo potete scaricare da qui e metterlo nella vostra cartella Plugins.

giovedì 15 settembre 2016

Applicare le proprietà di un altro oggetto

Quando si fa un programma, capita che lo stile predefinito dei pulsanti o del testo non ci vada bene, e personalizziamo i nostri oggetti.
Se sono molti oggetti, personalizzarli uno per uno può richiedere molto tempo, per questo ho scritto il seguente plugin che permette di copiare le proprietà di un oggetto su altri oggetti, selezionando quali copiare e quali no.
In pratica copia l'array properties, in modo da applicarlo al nuovo oggetto, tutte le proprietà impostate a empty non modificheranno quelle già presenti.
Potete scaricarlo e analizzare il codice da qui: http://livecodeshare.runrev.com/stack/809/Style-Manager
Come tutti i plugin dovete copiarlo dento la vostra cartella Plugin, e poi lo troverete in Development->Plugins->StyleManager

mercoledì 14 settembre 2016

Animazione modificata in tempo reale

Mi è stato chiesto di spiegare il codice di questo video che ho fatto qualche tempo fa:



Si tratta di un pulsante che segue un tracciato fatto e modificato dall'utente continuamente dall'utente.
Per prima cosa creiamo una grafica a mano libera cliccando sul pulsante degli strumenti di disegno, clicchiamo su freehand:
Ora nella card mettiamo il seguente codice per far disegnare l'utente:

on MouseMove newH, NewV
   if the mouse is down then MouseDown
end MouseMove

On MouseDown
   put the MouseLoc into temp
   if temp is within "0,0,382,316" then      
      put the points of graphic 1 into temp2
      if temp2 is empty then
         set the points of graphic 1 to temp & return & temp
      else
         set the points of graphic 1 to (temp2 & return & temp)
      end if   
   end if
end MouseDown

Notate che if the mouse is down serve per capire se l'utente mantiene cliccato il pulsante. Mentre ho impostato che il rettangolo del disegno dell'utente sia sempre dentro il rettangolo "0,0,382,316".
Ora l'utente può divertirsi a disegnare, mettiamo un pulsante col sole e in basso un pulsante con la scritta GO e un pulsante con Clear.


Ora nel pulsante GO mettete questo codice:

on mouseUp
   if the label of me is "GO" then
      set the label of me to "STOP"
   else
      set the label of me to "GO"
   end if
   moveSun
end mouseUp

on moveSun
   if the label of me is "STOP" then
      put the points of graphic 1 into mypoints
      put the angolo of me into temp
      if temp is empty or temp > the number of lines of mypoints then put 1 into temp #this is useful for the first launch or redrawing
      if mypoints is empty then put the loc of button "Sun" into mypoints
      put line temp of mypoints into newloc
      set the loc of button "Sun" to newLoc
      add 1 to temp      
      set the angolo of me to temp
      send "movesun" to me in 0.02 sec
   end if
end moveSun


La prima parte serve solo a far partire e fermare l'animazione, il messaggio successivo serve a spostare il sole lungo i punti del disegno. La proprietà personalizzata serve solo a riprendere da dove si è fermata l'animazione.
Se cambiate il valore dei secondi dell'ultima riga, cambierete la velocità dell'animazione.
Per finire nel pulsante Clear:
on mouseUp
   set the label of button "GO" to "GO"
   set the points of graphic "Curve" to empty
end mouseUp

martedì 13 settembre 2016

CasparCG

CasparCG è software per l'editing video, utilizzato anche dai canali TV più importanti, lo potete scaricare da qui:  http://www.casparcg.com/
L'utente bern333 ha realizzato un software open source con livecode che interagisce con il server CasparCG, qui potete scaricare il suo software  http://tech-ops.co.uk/bern/titler/ e qui sotto vedete un esempio:

mercoledì 7 settembre 2016

Lavorare con testi che utlizzano codifiche differenti

Quando scriviamo un testo le lettere che vediamo sullo schermo sono per il computer una sequenza di bit, e a seconda della lingua o del paese, quei bit possono essere male interpretati.
Quando sono nati i computer, inizialmente erano stati pensati solo i 255 caratteri ASCII, ma erano stati pensati solo per la lingua inglese e mancavano dei caratteri accentati di altre lingue o altri caratteri speciali; ad esempio Ą, Ɛ, ƺ, Љ, א, ठी. Per questo motivo sono nati delle nuove codifiche che utilizzano più caratteri e alcune sono pensate per alcune lingue, altre si adattano ad altre lingue.
Tutto ciò ha portato ad una grande confusione, per questo motivo livecode supporta la maggior parte dei caratteri nativamente; ma se dovete interfacciarvi con altri programmi che supportano solo alcuni caratteri come fate?
Per questo motivo per fortuna c'è la funzione codepointToNum() che trasforma il carattere in un numero, i numeri sono universalmente accettati da tutte le codifiche e quindi potete inviarlo a qualunque programma.
Ecco due funzione per importare ed esportare testi molto utili:
per esportare:

function stringtonums tString
   repeat for each char tChar in tString
      put CodepointToNum(tChar) & comma after temp
   end repeat
   return temp
end stringtonums
per importare il testo esportato con stringToNums():
function numsToString tString
   repeat for each item tChar in tString
      put numToCodepoint(tChar) after temp
   end repeat
   return temp
end numsTostring

venerdì 2 settembre 2016

Report builder

Ho scoperto che nella versione 7 di livecode sono presenti degli stack segreti. Oggi vi presento Report builder:
Vi permette di stampare scegliendo varie opzioni come la stampante, il formato, le card da stampare, la testata e il piè di pagina utilizzando altri stack come modelli.
Lo potete scaricare anche da qui.

mercoledì 31 agosto 2016

Mettere pubblicità nelle app

Esistono vari modi per mettere la pubblicità nelle app, ecco un paio molto semplici:

Appwrapper
Non c'è bisogno di programmare, una volta creata l'app, la ci pensa lui ad inserire il codice per la pubblicità. Per più informazioni http://www.vserv.com/technology/appwrapper/

Smaato
Qui basta inserire un piccolo browser ndentro la app che si collega alla pagina indicata da smaato. Per più informazioni https://www.smaato.com/

mergBanner
Integrato nella versione a pagamento, permette di utilizzare iAd su iOS.

martedì 23 agosto 2016

Languistik

Oggi presentiamo un sito che ha sviluppato con livecode dei programmi per imparare velocemente le lingue: Languistik.
Questi programmi hanno sia una parte multimediale con audio e video sia la grammatica da studiare.
Il sito di questa società finlandese lo potete trovare qui: https://eopin.fi

venerdì 12 agosto 2016

Tracker2Go

Oggi presentiamo un'altra app fatta con livecode: Tracker2Go.
Questa app non solo vi dice quanto calorie ingerite coni pasti, ma anche quante ne consumate con la vostra attività fisica.
Lo potete scaricare da https://itunes.apple.com/us/app/tracker2go/id433038944?mt=8&ls=1