Hàm lật flip trong corona

Thảo luận trong 'Hỏi đáp - Trao đổi' bắt đầu bởi ulolo24, 18/2/17.

  1. New Member
    ulolo24
    Tham gia ngày:
    23/12/14
    Bài viết:
    82
    Đã được thích:
    2
    Em muốn flip cả image và physic body khi nhận sự kiện touch, nhưng ở đây chỉ có image flip khi gọi obj.xScale = -1 còn physic body thì không, các bác giúp em với.
    Mã (Lua):
    player = display.newSprite( imageSheet, sequenceData )
    player.x = display.contentWidth- 200
    player.y = 100
    player:play( )

    player.name = 'l8'
    physics.addBody(player, "",physicsData:get (player.name))
    player.isFixedRotation = true
       
    local left = display.newRect(200,200,80,80)
    left.name = 'left'
    local right = display.newRect(400,200,80,80)
    right.name = 'right'


    function touchPlay(event)
        local phase = event.phase
        if (phase == "began") then
           
              Runtime:addEventListener("enterFrame", player)
            if (event.target.name == 'left') then
                player.xScale = 1
                print( 'left' )
           player.enterFrame = activeJet
        elseif (event.target.name == 'right') then
            player.xScale = -1
            print( 'right' )
            player.enterFrame = activeJet2
        elseif (event.target.name == 'top') then
            print( 'top' )
            player.enterFrame = activeJet3
        else
            print( 'bot' )
            player.enterFrame = activeJet4

        end
    end
            if (phase == "ended") then
            Runtime:removeEventListener("enterFrame", player)
        -- body
    end
    end
  2. Administrator
    linhle
    Nhân viên CoronaViet
    Tham gia ngày:
    8/2/14
    Bài viết:
    190
    Đã được thích:
    133
    Trong physicsData shape bạn thay thế đoạn code:
    Mã (Lua):
    -- apply scale factor
        local s = scale or 1.0
        for bi,body in pairs(physics.data) do
            for fi,fixture in ipairs(body) do
                for ci,coordinate in ipairs(fixture.shape) do
                    fixture.shape[ci] = s * coordinate
                end
            end
        end
     
    thành
    Mã (Lua):
    -- apply scale factor
        local sX = scaleX or 1.0
        local sY = scaleY or 1.0
        for bi,body in pairs(physics.data) do
            for fi,fixture in ipairs(body) do
                if(fixture.shape) then
                    for ci,coordinate in ipairs(fixture.shape) do
                        if (ci%2) == 0 then
                            fixture.shape[ci] = sY * coordinate
                        else
                            fixture.shape[ci] = sX * coordinate
                        end
                    end
                else
                    fixture.radius = ((sX+sY)*0.5) * fixture.radius
                end
            end
        end
    Khi đó hàm physicsData sẽ đổi thành 2 tham số physicsData(scaleX, scaleY)
    Mỗi khi flip bạn phải removeBody và addBody lại cho đối tượng đó, lưu ý gọi lại hàm physicsData và truyền tham số scaleX, scaleY tương ứng khi bạn flip đối tượng.
    ulolo24 thích bài này.
  3. New Member
    thanhtrungc999
    Tham gia ngày:
    30/8/17
    Bài viết:
    1
    Đã được thích:
    0
    Hy vọng sản phẩm máy khử độc tố và lão hóa rượu Gipwin sẽ trở thành người bạn đồng hành thân thuộc và tin cậy cho quý khách hàng trong thời gian sắp tới. tham khảo về sản phẩm tại: gipwin.com
  4. New Member
    dochoitre
    Tham gia ngày:
    28/12/17
    Bài viết:
    2
    Đã được thích:
    0
    mình cũng mong như bạn đó không biết có được không

Chia sẻ trang này