2012-04-23 82 views
0

例如,我有一條線,我可以用手指畫,我有一個矩形。我想讓我的線在與矩形碰撞時結束繪製。我該怎麼做? 對於離我行的功能:畫線和對象的碰撞(電暈SDK)

local line = function() 
if(e.phase == "began") then 
--code for line 
elseif(e.phase == "moved") then 
--code for line to draw 
elseif(e.phase == "ended") then 
--code for line to stop draw 
end 

我想我能做到這一點與碰撞史密斯這樣

local function onCollision(event) 
     if (event.phase == "began") then 


       if event.object1.myName == "top" and event.object2.myName == "line" then 
         line("ended") 

       end 

     end 
end 

    Runtime:addEventListener("collision", onCollision); 

,但它不工作...任何想法?

回答

0

我需要看到更多的代碼,尤其是如何創建線條(或線條,如果您經常創建/銷燬它們),以給出您可能希望的答案。但是,如果我這樣做,我可能會在每次手指移動時繪製/重繪線條(不添加物理體),並根據手指位置手動檢查矩形的交點。也就是說,像下面這樣:

local line = function() 
    ... 
    elseif(e.phase == "moved") then 
     local cb = rect.contentBounds 
     if event.x > cb.xMin and event.x < cb.xMax and event.y > cb.yMin and event.y < cb.yMax) then 
      line("ended") 
     end 
    else 
    .... 
end 

與衝突的問題是,如果你正在創建和重新創建的線條和他們發生交叉,你可能不會得到一個事件,由於其生命週期短(與事實他們實際上並沒有移動)。如果您真的想要使用碰撞,我會在觸摸開始時創建一個不可見的代理對象(一個圓),並在運動時從起點到它畫一條線。然後,我會在代理對象上使用觸摸關節並檢測它們之間的衝突。這可能比它的價值更麻煩。

+0

http://stackoverflow.com/questions/11915215/collision-of-a-line-and-object-corona-sdk - 在這裏,謝謝你!最糟糕的是感覺他們甚至不想碰撞 – barmyman 2012-08-11 13:46:20