2016-05-12 9 views
1

Wie kann ich zwei Hähne betrachten und die 2 tauschen, um Positionen zu tauschen? Zum Beispiel: Ich klopfe auf Objekt [1] und dann auf Objekt [2] und dann würden sie übergehen und tauschen Plätze. Wie würdest du versuchen, das aufzustellen?Positionen auf dem Hahn tauschen - corona sdk

Prost

Antwort

1

Somthing wie folgt aus:

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

Hey Maicon, vielen Dank für Hilfe. Einige der Positionen tauschen jedoch nicht aus. Alles, was links und rechts ist, wird ausgetauscht, aber alles, was weit weg ist, wird durcheinander gebracht und verschwindet. Ist das so, weil ich spawne? Es erzeugt momentan 3 Objekte in einer Reihe und sie stapeln sich in 3's –

+0

Ah ich sehe, wo das Problem auftritt. Es sieht so aus, als ob es ein Problem mit dem Vertauschen von Positionen hat, wenn sie sich nach unten bewegen (über einen anderen Übergang). Aus irgendeinem Grund ist es kein Problem, wenn das Objekt links oder rechts von dem ausgewählten ist. Irgendwelche Ideen zu einer Lösung dafür? –

+0

Vielleicht müssen Sie vor der Animation "last.isRunning = true" und "target.isRunning = true" festlegen und nach Abschluss auf "false" setzen. Und check "elseif last ~ = Ziel und nicht last.isRunning und nicht target.isRunning". –

0

I die Koordinaten des ersten Abgriff speichern würde, und dann auf dem Antippereignis des zweiten Abgriff der Übergang des zweiten Objektes auf die Koordinaten der ersten und der ersten in die Koordinaten des zweiten Abgriff.

Ein bisschen so etwas. Dies ist Pseudo-Code. Nur um die Idee zu präsentieren.

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

Dank Brett, das ist perfekt –