Hello Button

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??

:smiley:

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:

[lua]

local widget = require “widget”

[/lua]

e poi creare il bottone in questo modo:

[lua]

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

    }

[/lua]

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.

[lua]

local function miaFunzione(event)

 – Cambia il testo sul bottone:

  button1:setLabel( “Nuovo Testo” )

end

[/lua]

Le reference sono qui:

http://docs.coronalabs.com/daily/api/library/widget/newButton.html

Spero ti torni utile!

Ale

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.

Ciao, ho risolto in questo modo :slight_smile:

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.

[lua]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)[/lua]

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:

[lua]

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

}

[/lua]

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 :slight_smile:

CIao

Ale

Ciao Ale, è bello fare confronti di codici per apprendere di più :wink:

P.S. Ti chiami come me. :wink:

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:

[lua]

local widget = require “widget”

[/lua]

e poi creare il bottone in questo modo:

[lua]

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

    }

[/lua]

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.

[lua]

local function miaFunzione(event)

 – Cambia il testo sul bottone:

  button1:setLabel( “Nuovo Testo” )

end

[/lua]

Le reference sono qui:

http://docs.coronalabs.com/daily/api/library/widget/newButton.html

Spero ti torni utile!

Ale

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.

Ciao, ho risolto in questo modo :slight_smile:

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.

[lua]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)[/lua]

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:

[lua]

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

}

[/lua]

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 :slight_smile:

CIao

Ale

Ciao Ale, è bello fare confronti di codici per apprendere di più :wink:

P.S. Ti chiami come me. :wink: