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.