2013-02-25 50 views
3

我客串,這是一個真正的新手問題,讓兩個物體將其用的函數(LUA,電暈)創造了可觸摸

,但我有以下代碼:

local function createCircle() 
[...] 
circle = display.newCircle(positionX, positionY, circleRadius) 
[...] 
end 

function circle:touch(event) 
    if event.phase == "ended" then 
     scaleCircle(self,scaleUp) 
    end 
    return true; 
end 
circle:addEventListener("touch", circle) 

我清理了一位,專注於重要的事情。

我現在的問題是:我可以觸摸一個圓圈並對其進行縮放。但是,這隻適用於其中一個圈子(我想創建像他們3或4)。我想它只適用於創建的最後一個圓。

我猜這裏的主要問題是,我用「createCircle()」創建的所有圓都被命名爲「circle」。所以evenListener只適用於我創建的「圈子」。

任何想法如何選擇我創建的其他圈子?

謝謝:)

回答

1

這是我如何解決它:

local function createCircle() 
    --[[ MORE CODE ]]-- 
    table.insert(circleTable, display.newCircle(positionX, positionY, circleRadius)) 
    --[[ MORE CODE ]]-- 
end 

function onObjectTouch(event) 
    local self = event.target 
    if event.phase == "ended" then 
     --[[ MORE CODE ]]-- 
    end 
    return true; 
end 

local function addTouchListeners() 
    for _, circle in ipairs(circleTable) do 
     circle:addEventListener("touch", onObjectTouch) 
    end 
end 

createCircle() 
addTouchListeners() 

我猜夢食者的解決方案應該正常工作。但是我在調​​用createCircle()函數時遇到了另一個錯誤。我通過爲TouchListeners創建一個函數並在createCircle()函數之後調用它來解決此問題。

希望這可以幫助其他有類似問題的人。

1

MUST使用表。對於例如:

circles = {} 
local function createCircle() 
    --[[ MORE CODE ]]-- 
    table.insert(circles, display.newCircle(positionX, positionY, circleRadius)) 
    --[[ MORE CODE ]]-- 
end 
function circle:touch(event) 
    if event.phase == "ended" then 
     scaleCircle(self,scaleUp) 
    end 
    return true; 
end 
for _, circle in ipairs(circles) do 
    circle:addEventListener("touch", circle) 
end 
+0

感謝您的回答。我會嘗試。 – lornz 2013-02-25 16:13:05

+0

我讀了一些關於表格的教程。 您的解決方案似乎是要走的路,但我仍然有一個問題: 「功能圈:觸摸(事件)」給我一個錯誤,因爲「圈」沒有真正定義。我怎樣才能繞過呢?我現在編碼在這個問題上幾個小時:/ – lornz 2013-02-25 21:17:04

+0

和??? ........ – hjpotter92 2013-02-25 21:18:36