【问题标题】:swap positions on tap - corona sdk随时交换头寸 - corona sdk
【发布时间】:2016-05-13 21:27:37
【问题描述】:

如何查看两个水龙头并将两个水龙头转换为相互交换位置? 例如:我点击对象[1],然后点击对象[2],然后它们会转换和交换位置。你们会如何尝试设置呢?

干杯

【问题讨论】:

    标签: lua coronasdk


    【解决方案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 )
    

    【讨论】:

    • 嗨,麦孔,感谢您的帮助。然而,有些职位不会交换。左右的任何东西都会交换,但任何长距离的东西都会混淆并消失。这是因为我产卵的方式吗?它目前连续生成 3 个对象,它们堆叠成 3 个
    • 啊,我知道问题出在哪里了。看起来当它们向下移动时(通过另一个过渡)交换位置存在问题。由于某种原因,如果对象位于所选对象的左侧或右侧,这不是问题。关于这个解决方案的任何想法?
    • 也许你需要在动画之前设置“last.isRunning=true”和“target.isRunning=true”,完成后设置为false。并检查“elseif last ~= target 而不是 last.isRunning 而不是 target.isRunning”。
    【解决方案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
    

    【讨论】:

    • 谢谢布雷特,太完美了
    猜你喜欢
    • 1970-01-01
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多