2016-05-12 32 views
1

如何查看兩個交換頭並將兩個交換位置彼此交換? 例如:我點擊對象[1],然後點擊對象[2],然後它們將轉換並交換位置。你們怎麼試圖設置這個呢?交換頭寸 - corona sdk

乾杯

回答

1

財產以後這樣的:

local last = nil 

local circle1 = display.newCircle(display.contentCenterX - 50, display.contentCenterY - 50, 25) 
circle1.fill = { 0.0, 0.6, 1.0 } 
local circle2 = display.newCircle(display.contentCenterX + 50, display.contentCenterY + 100, 25) 
circle2.fill = { 1.0, 0.5, 0.0 } 
local circle3 = display.newCircle(display.contentCenterX + 75, display.contentCenterY - 100, 25) 
circle3.fill = { 0.4, 0.5, 0.0 } 

local function onTouch(event) 
    local target = event.target 
    if event.phase == "ended" then 
     if last == nil then 
      last = target 
     elseif last ~= target then 
      transition.moveTo(last, { x=target.x, y=target.y }) 
      transition.moveTo(target, { x=last.x, y=last.y }) 
      last = nil 
     end 
    end 
end 

circle1:addEventListener("touch", onTouch) 
circle2:addEventListener("touch", onTouch) 
circle3:addEventListener("touch", onTouch) 
+0

嗨麥孔,尋求幫助的感謝。但是有些職位並不互換。任何左右的東西都會交換,但任何長途都會變得混亂並消失。這是因爲我產卵的方式嗎?它目前產生3個對象在一排,他們堆積在3的 –

+0

啊我看到問題發生的地方。看起來它在向下移動時(通過另一個轉換)有交換位置的問題。出於某種原因,如果對象位於所選位置的左側或右側,則不會出現問題。任何想法解決這個問題? –

+0

也許你需要在動畫之前設置「last.isRunning = true」和「target.isRunning = true」,完成後設置爲false。並檢查「elseif最後〜=目標,而不是last.isRunning而不是target.isRunning」。 –

0

我會節省第一次輕觸的座標,然後在第二次敲擊的敲擊事件,過渡的第二個對象的第一個座標和第一至第二次敲擊的座標。

有點像這樣。這是僞代碼。只是爲了幫助提出這個想法。

local firstObject 
local secondObject 
local coordX, coordY 
function firstTapEventListener(event.target) 
    coordX = target.x 
    coordY = target.y 
end 

function secondTapEventListener(event.target) 
    firstObject.x = target.x 
    firstObject.y = target.y 
    target.x = coordX 
    target.y = coordY 
end 
+0

感謝佈雷特,這就是完美的 –