Jump to content

[TOPIC: topicViewTemplate]
[GLOBAL: userSmallPhoto]
Photo

Hello Button
Started by s.zagarella Mar 28 2013 08:20 AM

5 replies to this topic
[TOPIC CONTROLS]
This topic has been archived. This means that you cannot reply to this topic.
[/TOPIC CONTROLS]
[modOptionsDropdown]
[/modOptionsDropdown]
[reputationFilter]
[TOPIC: post.html]
#1

s.zagarella

[GLOBAL: userInfoPane.html]
s.zagarella
  • Observer

  • 2 posts
  • Corona SDK

Ciao ragazzi,

sto iniziando a programmare con Corona e vorrei usare un bottone usando il codice fornito qui (http://coronasdktutorials.wordpress.com/2012/06/25/usiamo-un-tasto-per-chiamare-una-funzione/)

 

Purtroppo non riesco a farlo funzionare. Il Corona Simulator Output dice

Runtime error

.....ui.lua:239 in function newButton (a nil value)

.....

 

Io ho creato un progetto con Eclipse e sto cercando di usare il bottone..Se non istanzio il newButton tutto funziona, quindi il "local ui=require "ui" " trova il file ui.lua, ma non riesco a procedere..

 

Indizi??

:-D



[TOPIC: post.html]
#2

ale

[GLOBAL: userInfoPane.html]
ale
  • Contributor

  • 174 posts
  • Corona SDK

Ciao, 

l'esempio da cui sei partito è un po' datato e probabilmente usa una versione di ui.lua non allineata.

Con la nuova versione di Corona il modo più semplice per creare ed usare un bottone è utilizzare la widget library:

 

local widget = require "widget"

 

e poi creare il bottone in questo modo:

 

 
button1 = widget.newButton{
        label = "Bottone1",
        id = 1,
        defaultFile = "default.png",
        overFile = "over.png",
        left = 260,
        top = 5,
        fontSize = 24,
        width = 170,
        height = 48,
        labelColor = {255,0,0},
        onRelease = miaFunzione
    }
 
l'evento onRelease attiverà la callback miaFunzione, nella quale potrai inserire il codice che ti serve per cambiare la label del bottone stesso oppure altre.
 
local function miaFunzione(event)
 -- Cambia il testo sul bottone:
  button1:setLabel( "Nuovo Testo" )
end
 
Le reference sono qui:
 
Spero ti torni utile!
 
 
Ale


[TOPIC: post.html]
#3

Taurus

[GLOBAL: userInfoPane.html]
Taurus
  • Observer

  • 9 posts
  • Corona SDK

Ciao sto provando questo che ovviamente non funziona.

 

http://coronasdktutorials.wordpress.com/2012/06/26/aggiungere-un-tasto-senza-librerie-esterne/

 

Ho provato a seguire in parte quello che hai scritto e l'icona scelta da me compare, ma quando premo l'icona non cambia il testo sullo schermo.



[TOPIC: post.html]
#4

Taurus

[GLOBAL: userInfoPane.html]
Taurus
  • Observer

  • 9 posts
  • Corona SDK

Ciao, ho risolto in questo modo :)

Devo solo capire cosa significa/serve tap e la diffirenza tra usare native.systemFont e nil :ph34r:

P.S. Se la funzione pulsante la uso come local ho visto che da errore, invece senza local dovrebbe corrispondere a global e funziona.

 

display.setStatusBar(display.HiddenStatusBar)
larghezza = display.contentWidth
altezza = display.contentHeight
local sfondo = display.newImageRect("sky.jpg", 2304, 1728)
sfondo.x = larghezza/2
sfondo.y = altezza/2
stringa1 = "Manga Ink"
stringa2 = ", grazie!"
stringaT = stringa1..stringa2
local titolo = display.newText(stringaT, 0, 0, native.systemFont, 90)
titolo:setTextColor(240, 34, 0)
titolo.x = larghezza/2
titolo.y = altezza/2
local pulsante = display.newImageRect("cronometro.png", 150, 150)
pulsante.x = larghezza/2
pulsante.y = altezza/2 + 400
function pulsante:tap (event)
titolo.text = "Benvenuti!!!"
titolo:setTextColor(50, 90, 40)
end
pulsante:addEventListener("tap", pulsante)



[TOPIC: post.html]
#5

ale

[GLOBAL: userInfoPane.html]
ale
  • Contributor

  • 174 posts
  • Corona SDK

Ciao,

 

il codice non va perchè la funzione deve essere dichiarata prima di usarla, quindi o usi una forward declaration oppure scrivi la funzione prima del bottone!!

Scusa ma davo per scontato che sapessi questa cosa quando ho postato l'esempio.

Lo stesso vale anche per il tuo codice, questa è la ragione per cui quando dichiari la tua funzione in local il codice non funziona.

 

Questo è il mio esempio di prima scritto correttamente e funzionante con la tua aggiunta:

 

 
local widget = require( "widget" )
local button1
 
local titolo = display.newText("Questo testo cambierà!", 0, 0, native.systemFont, 40)
titolo:setTextColor(240, 34, 0)
titolo.x = display.contentWidth/2
titolo.y = display.contentHeight/2
 
local function miaFunzione(event)
 -- Cambia il testo sul bottone:
    button1:setLabel( "Nuova Label!" )
 -- cambia il testo nella scritta
    titolo.text = "Benvenuti!!!"
    titolo:setTextColor(50, 90, 40) 
end
 
-- Create the button
button1 = widget.newButton
{
    left = display.contentWidth/2 - 90,
    top = display.contentHeight - 100,
    width = 180,
    height = 50,
    defaultFile = "buttonBlue.png",
    overFile = "buttonBlueOver.png",
    id = "1",
    label = "Label Bottone",
    onRelease = miaFunzione
}
 
 
I file .png li puoi trovare negli esempi di codice delle Sample Apps del simulatore nella cartella SampleCode, oppure puoi usare i tuoi png.
Tap è una modalità di evento che indica il tocco in un unico stato diversamente da "touch" che ne usa 3.
native.systemFont indica la font nativa di sistema, se usi come argomento "nil" cioè "valore nullo" corona sostituirà il valore nullo con il default  native.systemFont, in pratica non doverebbe cambiare nulla.
Ribadisco comunque che il modo più semplice  x creare un pulsante è usare la widget library :)
 
 
CIao
Ale


[TOPIC: post.html]
#6

Taurus

[GLOBAL: userInfoPane.html]
Taurus
  • Observer

  • 9 posts
  • Corona SDK

Ciao Ale, è bello fare confronti di codici per apprendere di più ;-)

P.S. Ti chiami come me. ;-)




[topic_controls]
 
[/topic_controls]