2011-09-13 1 views
1

は、次のように私はクラスでのEventListenerを持っていると言いますそれはこのクラスの外からですか?コンパイラに不平を言うことなしに。はコロナのローカルイベントリスナメソッドを可能にするためにはどのよう


ありがとうございます。私はUI.luaがするようにあなたができる実現しなかった。

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

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

はしかし、

local function newButtonHandler(self, event) 

のパラメータ(自己、イベントは)私が前に見たことがない何かである - (Ususallyにのみイベント)。自己イベントだけでなくイベントも、addEventListenerの意味としてイベントリスナーメソッドに自動的に送信されますか?

とにかく、私が最初にやりたかったのは、そこにあるbuttonManagerにアクセスする必要があるため、別のオブジェクト(「buttonManager」と呼ぶ)をクラスeventListenerメソッドに送信するよりも、表示オブジェクトです。だから私は書くことができると思った:

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はローカルなので、外部から呼び出すことはできません。

希望に役立ちます!

関連する問題