Ciao mi servirebbe aiuto ho fatto questa app dove spawnano delle palline e mi servirebbe sapere come fare a mettere che quando una di queste bolle viene toccata si elimina e aggiunge un punto
questo e il codice
Ciao mi servirebbe aiuto ho fatto questa app dove spawnano delle palline e mi servirebbe sapere come fare a mettere che quando una di queste bolle viene toccata si elimina e aggiunge un punto
questo e il codice
Ciao,
per fare quello che chiedi devi aggiungere un event listener di tipo "touch" ad ogni oggetto/immagine che crei, in questo modo quando tocchi l'oggetto la funzione event handler potrà gestirlo rimuovendolo e aggiornando il contatore.
Questo è il codice che ho aggiornato.
Ale
display.setStatusBar( display.HiddenStatusBar ) local W = contentWidth local H = contentHeight local score = 0 local scoreIncrease = 1 local scoreNum = display.newText("0",400,25,"Arial",35) -- Your code here local bolle = display.newGroup() local perso scoreNum:toFront() imm = { "moon.png", "baz.png", "tod.png" } local function onTouch( event ) local t = event.target local phase = event.phase if "began" == phase then print( "Touched!" ) score = score + 1 scoreNum.text = score t:removeEventListener( "touch", onTouch ) t:removeSelf () end return true end function Generassi (event) indice = math.random(1,3) pos_y = math.random(0,768) vel = math.random(2000,6000) --ball = display.newImage (imm[indice], 1024, pos_y) ball = display.newCircle(1024, pos_y, 30) ball:addEventListener( "touch", onTouch ) bolle:insert( ball ) transition.moveTo(ball, {time = vel , x= 0, y = pos_y}) end t1 = timer.performWithDelay( 100, Generassi, - 1) function update (event) if ( bolle.numChildren ~= 0 ) then for i = 1, bolle.numChildren do if ( bolle[i] ~= nil) then if (bolle[i].x < 1) then --print(i) bolle[i]:removeSelf () bolle[i] = nil end end end end end Runtime:addEventListener("enterFrame", update)
nono ho trovato bastava fare native.setProperty ( "androidSystemUiVisibility", "immersiveSticky")
Ciao,
ah si , con le native properties, Android lo conosco lo stretto necessario
Per salvare i punteggi e recuperarli usa la preference library di Satheesh,
è facile da usare e fa quello che deve fare.
Ale
Ciao
esempio preference:
local preference = require "preference" local myScore --Salva punteggio preference.save{score=myScore} --Leggi punteggio myScore = preference.getValue("myScore")
ovviamente devi aggiungere il tuo codice per gestire il valore, min, max, ecc.
Ale
io ho messo cos^ ma non parte
scorebest non può essere chiave e variabile allo stesso tempo, inoltre devi usare = e non ==
local score, scorebest if ( score > scorebest) then preference.save{theBestScore = score} end --poi quando devi rileggere scorebest = preference.getValue("theBestScore")
Inoltre, attenzione alle parentesi, {} e () hanno comportamenti diversi
Ciao,
Ale
ma poi come faccio a metterlo graficamente dopo che lo legge comunque a me serve che si veda e mi da che thebestscore è nil quindi non parte se lo metto come stringa da visualizzare! aiuto
Allora, qui si tratta di logica di programmazione non c'entrano più Corona SDK e LUA!
Comunque, se non ho capito male, lo pseudo codice potrebbe essere questo:
Inizio il gioco, -> bestscore = 0 , score = 0
Leggo bestscore dalle preferences.
ATTENZIONE!
Devi prima verificare che non sia nullo quindi:
if (preference.getValue("theBestScore") ~= nil) then bestscore = preference.getValue("theBestScore") end
Gioco e faccio dei punti, per ogni punto -> score = score + 1
Finisce la sessione di gioco, salvo il punteggio solo se score > bestscore
if (score > bestscore) then preference.save{ theBestScore = score} end
Chiudo l'app.
Rilancio l'app e preference.getValue leggerà l'ultimo valore salvato
Per stamparlo graficamente nella label che avrai creato con display.newText basterà cambiare il testo:
scorebestNum.text = bestscore
Ciao,
Ale
Ale mi puoi aiutare grazie scusa il disturbo
ho questo codice che indica che quando lo tocco deve scomparire e a volte mi da errore
attempt to call method removeSelf quindi mi piacerebbe saper come toglierlo grazie se sai anche metodi alternativi per fare questo ok
function balla (self,event) if (event.phase == "began") then timer.performWithDelay(1, function() self:removeSelf() end ) score = score + 1 scoreNum.text = score*scoreIncrease end end
Ciao,
dovrei vedere il resto del codice per dare indicazioni più precise.
Se non è necessario attendere 1 secondo prima di rimuovere puoi togliere timer.performWithDelay.
Inoltre se function balla() è un event handler e mi sembra di si, non vedo la necessità di passare due parametri (self, event).
Infine, ogni oggetto rimosso con removeSelf() deve essere posto a nil perchè la garbage collection lo rimuova definitivamente dalla memoria.
Potrebbe essere espressa meglio in questo modo (se è un event handler), ma è solo una mia ipotesi non potendo vedere il resto del codice.
function balla (event) local t = event.target if (event.phase == "began") then t:removeSelf() t = nil score = score + 1 scoreNum.text = score*scoreIncrease end end
Ciao
Ale