2011-09-13 24 views
1

說我有一類的事件偵聽如下:如何允許在科羅納本地事件監聽器方法

Vehicle = {} 
... 

function Vehicle:touch(event) 
    -- do something with self 
    return 
end 

displayObject:addEventListener("touch", self) 

如何使「觸」的方法局部變量,因此,沒有人得到的衝動打電話它來自這門課外?沒有讓編譯器抱怨。


謝謝邁克。我不知道你能做到的確實UI.lua:

local function newButtonHandler(self, event) 
... 
end 

function newButton(params) 
... 
button.touch = newButtonHandler 
button:addEventListener("touch", button) 
... 
end 

然而,參數(自我,事件)在

local function newButtonHandler(self, event) 

是我以前沒有見過的 - 只後容易(事件)。自我以及事件是否作爲addEventListener的含義而自動發送到事件監聽器方法?

無論如何,我最初想做的事情是讓一個不同的對象(稱之爲「buttonManager」)比顯示對象被髮送到類eventListener方法,因爲我需要訪問buttonManager。所以我想我可以寫:

button:addEventListener("touch", buttonManager) 

但是,這導致eventListener根本不被調用。我如何獲得buttonManager到eventListener?

回答

1

這聽起來像你可以爲你正在設計的類創建一個單獨的模塊,並使觸摸處理程序成爲該模塊的本地函數。請參閱Corona的ui.lua文件(包含在他們的許多示例項目中)以瞭解他們如何執行此操作。

module(..., package.seeall) 

local function newButtonHandler(self, event) 
    . . . 
end 

function newButton(params) 

    . . . 

    button.touch = newButtonHandler 
    button:addEventListener("touch", button) 

    . . . 

    return button 
end 

這是從他們的代碼中得出的。正如你所看到的,newButtonHandler是本地的,所以它不能被外界調用。

希望有幫助!