Usar POO (OOP) en Corona que funcione

Hola, llevo varios días dándole vueltas a unas cosas y no hay manera que funcione correctamente. Estoy intentando implementar un sistema simple de programación orientada a objetos para tenerlo todo más organizado pero no hay manera de que funcione como debe ser. He seguido algunos ejemplo y he conseguido que el constructor devuelve un objeto gráfico para cada instancia pero luego me es imposible manipular cada una de forma independiente.

He mirando aquí

 http://coronalabs.com/blog/2011/09/29/tutorial-modular-classes-in-corona/

y también aquí:

http://jessewarden.com/2011/10/lua-classes-and-packages-in-corona.html

pero yo no consigo que funcione…alguien tiene un ejemplo sencillo para entender…a ver si el problema es que soy yo  :smiley: y de paso si pueden explicar eso de las metatablas porque no acabo de entender su funcionamiento, muchas gracias.

Hola Pablo no se si lo que te mando sea correcto 100% pero a mi me funciona. Te mando un ejemplo simple para poner circulos en pantalla y que puedas posicionarlos con una funcion, luego puedes implementar las que quieras.

Fichero main.lua

require(“circulo”)

local a = circulo:new()

a:posicion (100,100)

transition.to( a, {time=1000, x=300} )

Fichero circulo.lua

circulo={}

function circulo:new()

  local self = display.newImageRect(“circulo.png”, 50, 50)

  function self:posicion (x,y)

    self.x = x

    self.y = y

  end

  return self

end

Saludos

Gracias compañero!

Hola Pablo no se si lo que te mando sea correcto 100% pero a mi me funciona. Te mando un ejemplo simple para poner circulos en pantalla y que puedas posicionarlos con una funcion, luego puedes implementar las que quieras.

Fichero main.lua

require(“circulo”)

local a = circulo:new()

a:posicion (100,100)

transition.to( a, {time=1000, x=300} )

Fichero circulo.lua

circulo={}

function circulo:new()

  local self = display.newImageRect(“circulo.png”, 50, 50)

  function self:posicion (x,y)

    self.x = x

    self.y = y

  end

  return self

end

Saludos

Gracias compañero!