오브젝트 모듈 내에 리스너 기능을 넣을 수 있습니까?오브젝트 내의 Corona SDK 리스너 기능
표시 객체를 구현하는 Cloud 클래스가 있습니다. 현재 클래스는 이미지 만 만듭니다. 나 자신의 청취자 이벤트를 담당하고 싶기 때문에, 내가 스폰하는 객체마다 addEventListener를 계속 호출 할 필요가 없습니다.
여러 가지 변형을 시도했으며, 항상 청취자 기능을 nil로 지정했습니다. 또한 addEventListener 함수가 main에서 호출되도록 분리하려고했습니다.
개체의 수신기 기능이 지원되지 않는다는 느낌이 들기 시작했습니다. 아마 내가 잘못된 접근법을 취하고 있을까요? 나는 가능한 것을 요구하고 있는가? 그리고 그렇다면, 내가 뭘 잘못하고 있니?
--
-- 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