オブジェクトモジュール内にリスナー関数を置くことは可能ですか?オブジェクト内のCorona SDK Listener関数
私は表示オブジェクトを実装するCloudクラスを持っています。今、クラスはイメージを作成するだけです。私はそれ自身のリスナーイベントを担当したいので、私が生成したオブジェクトごとにaddEventListenerを呼び出す必要はありません。
私はいくつかのバリエーションを試しましたが、いつもリスナー機能をnilとして終了します。また、addEventListener関数がメインで呼び出されるように分割しようとしました。
オブジェクトのリスナー機能がサポートされていないと感じ始めました。多分私はこれに間違ったアプローチを取っていますか?私は実現可能なことを求めているのですか?そしてもしそうなら、私は何が間違っているのですか?
--
-- Cloud.lua
--
local Cloud = {}
local mtaCloud = { __index = cloud } -- metatable
local display = require "display"
-- DOESN'T WORK
function Cloud.scroll(event)
img.y = img.y - img.scrollSpeed
if (img.y + img.contentWidth) < 0 then
img.x = 0
img:translate(math.random(1,_W), 1800 )
end
end
function Cloud.New(strImage, intHeight, intWidth, intScrollSpeed)
local image = display.newImageRect(strImage, intWidth, intHeight)
image.anchorX = 0; image.anchorY = 0.5;
image.x = _W/2; image.y = _H/2;
image.scrollSpeed = 10
image.enterFrame = scroll
Runtime:addEventListener("enterFrame", scroll)
local newCloud = {
img = image
}
return setmetatable(newCloud, mtaCloud)
end
return Cloud
-- main.lua (simplified)
local cloud = require "object.cloud"
function scene:create(event)
local group = self.view
cloud = cloud.New("img/cloud.png", 230, 140)
group:insert(cloud.img)
end