2011-09-08 3 views
0
function World:draw() 
    --draw the tiles based on 2d int array 
    --draw the player 
    --draw the monsters 
    --show what you need to based on camera 
    self.map[0][0]=display.newImage("dirt_tile.png",i,j) 
end 

Я не могу получить доступ к любому из свойств моего мира объекта там, когда я использую обработчик события:переменная сферы при работе с обработчиками событий

Runtime:addEventListener("enterFrame",World.draw) 

Есть ли другой вид EventListener я могу использовать , или существует другой способ создать экземпляр eventListener, чтобы контекст самореференции оставался неповрежденным?

ответ

2

Здесь вы идете:

World = { count=0 } 

function World:enterFrame() 
    self.count = self.count + 1 
    print("count = " .. self.count) 
end 

Runtime:addEventListener("enterFrame", World) 

См this API reference page подробности.

+0

У меня есть объект под названием «Мир», который я определил с помощью «function World: new()». У меня есть таблица в этой функции, называемая «local self = {}», и я заполняю ее своей «картой» (или 2d int массивом). Я не могу получить к нему доступ, даже изменяя свой код, чтобы он соответствовал вашим. В вашем ответе вы получили доступ к массиву с именем «World» и свойству в этом массиве с именем «count», в то время как я пытаюсь получить доступ к свойствам созданного объекта. – Evan

+0

Таблицы и объекты - это точно то же самое в Lua. У вас могут быть другие проблемы, но без исходного кода я не могу сказать. –

+0

Я буду рад узнать об этом дальше, если вы хотите опубликовать минимальный рабочий исходный код, который дублирует вашу проблему. –

0

В названии вашей таблицы local self = {}, то он может столкнуться с неявным параметром self.

function World:draw() - это только синтаксис сахара Lua для World.draw = function(self). Работая с self, вы используете любой первый параметр, который обработчик события выполнения передает вашей функции (судя по API, он проходит event, который вы получите как self).

Попробуйте присвоить имя таблице, к которой вы хотите получить доступ (например, local this) и посмотреть, работает ли она.

+0

Как я его читал, он только «local self = {}' в своей функции: new(). – daurnimator

Смежные вопросы