2016-05-12 7 views
1

どのように2つのタップを見て、2を入れ替えて互いの位置を入れ替えることができますか? 例:オブジェクト[1]をタップし、オブジェクト[2]をタップすると、それらはトランジションとスワップを行います。あなたはどうやってこれを設定しようとしますか?タップのスワップポジション - コロナ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

ねえMaicon、感謝のthats。しかし、ポジションの一部は交換されません。何かが左右にスワップしますが、長距離のものは混乱して消滅します。私が産卵する方法のためにこれはありますか?現在3つのオブジェクトが連続して生成されており、3つにスタックされています。 –

+0

ああ、どこに問題が発生しているのか分かります。それは、(別のトランジションを介して)下に動いているときにポジションを入れ替えることに問題があるように見えます。何らかの理由で、オブジェクトが選択されたものの左右に問題がない。これを解決するためのアイデアはありますか? –

+0

おそらくアニメーションの前に "last.isRunning = true"と "target.isRunning = true"を設定し、完了したらfalseに設定する必要があります。 「elseif last〜= targetとnot.isRunningではなくtarget.isRunning」をチェックします。 –

0

Iは最初のタップの座標を保存し、第2のタップのタップイベントで、初の座標への第2の物体と第2タップの座標への最初の遷移になります。

少しこんな感じです。これは擬似コードです。アイデアを提示するのを助けるために。そのような

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

おかげでブレットは、ヘルプのための完璧な –

関連する問題