A ver, he creado un modulo que se llama ObjetoRayo
module(..., package.seeall)
spriteSet=nil
tipo=3
function init()
spriteSet = sprite.newSpriteSet(uma,RAYO,5)
sprite.add(spriteSet,"encendido",1,2,1000,1)
end
function onTime(objeto)
objeto:prepare("encendido");
objeto:play();
end
function onStart(objeto1,tiempo)
local myclosure=function() return onTime(objeto1); end
timer.performWithDelay(tiempo,myclosure)
end
Pues cuando lo llamaba, hacía ( objeto estaba creado anteriormente)
ObjetoRayo:OnStart(objeto,3000)
Y me daba un error en lua en timer.performWithDelay(tiempo,myclosure), porqué me decia que el objeto era nil
Lo curioso es quelo he arreglado usando un . en lugar de los :
ObjetoRayo.OnStart(objeto,3000)
¿Qué diferencia hay entre usar los ':' y el '.'?
Gracias ;)
Por lo que he leído por ahí, x:f(a) es igual que escribir x.f(x,a)
Exacto, los : es como si en el método hubiera un self, tanto para la llamada como para la definición del método.
Te recomiendo leer algo sobre orientación a objetos con lua por que lo estas empleando incorrectamente. ObjetoRayo seria la metatable de objeto en este caso, si lo empleas de la forma correcta usando metatables y metamétodos la llamada es tan transparente como esto:
objeto = ObjetoRayo:new();
objeto:OnStart(3000);
Gracias. ;)
Qué diferente!!! :(