我只是想盡量避免滾動我自己的拖動功能。有沒有人知道任何有相當於startDrag()
的圖書館,你可以使用圓形半徑作爲拖拽邊界,而不是矩形框?具有與非矩形邊界(即:圓形)等效的startDrag()的AS3庫?
回答
(對於圓形阻力區) - 你需要做的是:
一)MOUSE_DOWN:商店開始位置。開始收聽Enter_frame。
b)中ENTER_FRAME:從鼠標位置檢查距離的鼠標來啓動POS(使用畢達哥拉斯)
c)中只有當距離小於x
d移動您的對象)MOUSE_UP:停止聽輸入框
是的,這就是我所說的「滾我自己」的意思,是我會採取的方法。在最初的問題中,我問是否有人知道任何已經完成這個工作的圖書館。我會將問題留給開放一段時間,如果沒有人使用內置此庫的表面,我會接受您的答案。 –
不,你需要做像素完美的碰撞(或在這種情況下,鼠標點擊),以便做到這一點。就本質而言,所有顯示對象總是具有矩形邊界。所以基本上你不得不做這樣的事情:
mySprite.addEventListener(MouseEvent.MOUSE_DOWN, mousedDown);
function mousedDown(e:MouseEvent):void
{
//Draw my sprite to a bitmap, then check the bitmap colour at mouseX/mouseY
uint colour = myBitmap.getPixel32(mouseX, mouseY);
if(colour != TRANSPARENT){
//We've actually clicked on the object, drag it
Sprite(e.currentTarget).startDrag();
}
}
注意這僅僅是僞代碼,你就必須要弄清楚的單元值透明事情的發生,同時也你必須考慮繪製到位圖時,精靈的起始點在哪裏。假設你有一個精靈,內容在裏面,你需要創建一個Matrix對象,它的X和Y偏移量是你的精靈寬度的0.5倍,以便正確繪製它。
嗨,感謝您的評論。我想我的問題一定不太清楚。有問題的邊界並不意味着確定對象的命中區域(通過這種方式自動完成)。這是關於我可以拖動對象的邊界!即:startDrag(lockCenter:Bool,bounds:Rect)。當你指定邊界時,你必須指定一個Rect,超過該Rect你不能拖動對象(它只是停止拖動)。這是我期望的行爲,但我希望邊界是一個圓形的區域,而不是一個矩形區域。它根本不需要處理碰撞。 –
Ohhhhhhhh大聲笑沒關係對此感到抱歉。如果我能想到或找到任何東西,我會發佈一個新的答案。 – 2011-07-27 05:52:17
您可以使用簡單的圓形碰撞檢測程序,使用物體的半徑和它們之間的距離計算出擊中區域。也許你將不得不在你的onDrag方法中手動做這個計算,並停止與下面計算的圓形邊界的碰撞拖動。
var deltax : Number = targetCentreCoord.x - hitTestCentreCoord.x;
var deltay : Number = targetCentreCoord.y - hitTestCentreCoord.y;
//works out if our circles are colliding, distance between the circles inc radius
if (((deltax * deltax) + (deltay * deltay)) <= ((((targetRadius) + (hitTargetRadius)) * ((targetRadius) + (hitTargetRadius)))))
{
Log.info("collision occured with " + candidate.name + " target coords " + targetCentreCoord + " candidate coords " + hitTestCentreCoord);
return true;
}
return false;
再一次,對不起,這個問題沒有涉及碰撞。 –
你需要做碰撞檢測來檢測你的問題中的邊界,然後你會停止拖動。除非我誤解你的問題。 – serenskye
因此,我沒有碰到任何東西。只需要限制拖動的邊界。 AS3本身可以做到這一點,但只有一個矩形邊界框,而不是圓形邊界框。同樣,這個問題特別要求圖書館,而不是本土解決方案。本土方法很簡單,但圖書館可以捕捉到所有邊緣案例,這就是我問的原因。 –
這可以在沒有ENTER_FRAME事件的情況下完成。 有一個MOUSE_DOWN偵聽器,檢查邊界,如果在邊界內,然後 添加一個MOUSE_MOVE偵聽器。 另外,從MOUSE_UP偵聽器開始移除MOUSE_MOVE偵聽器。
- 1. UIDynamicItem與非矩形邊界
- 2. android-圓形矩形邊界爲佈局
- 3. 帶有非矩形邊界的TinyMCE
- 4. QFontMetrics返回具有非常錯誤寬度的邊界矩形
- 5. 帶有邊界的圓形TextView
- 6. 邊界框與矩形的對比
- 7. 沒有背景的android圓角矩形直邊矩形
- 8. 沒有邊框的圓角矩形UIButton
- 9. 定製邊界矩形的形狀
- 10. 在矩形中的圓形效果
- 11. 帆布矩形3D效果邊界
- 12. 添加矩形以獲得所有矩形邊界的方法
- 13. 畫一個圓形邊界?
- 14. 給出ImageView圓形邊界?
- 15. 繪製圖形邊框任何形狀(心臟,圓形等)的柔性,AS3
- 16. Box2D的矩形體具有圓角
- 17. 是否可以圓形?六邊形,八邊形等形狀?
- 18. iOS:具有邊框出血顏色的圓角矩形
- 19. 圓形與矩形之間的碰撞
- 20. 最小邊界矩形與JTS
- 21. WPF。是否有可能做橢圓「矩形邊界」hittest?
- 22. Wp8地圖邊界矩形
- 23. 餅圖邊界矩形
- 24. 矩形區域和邊界
- 25. 從邊界切割矩形
- 26. 同等縮放邊界和非邊界Flash圖形
- 27. 更有效的父親邊界矩形副本
- 28. 爲什麼在UIView中有框架矩形和邊界矩形?
- 29. 創建一個只有兩個圓邊的矩形形狀
- 30. 繪製帶有彩色圓角邊框的矩形形狀
請參見下面的問題和答案以進行循環拖動:將[約束MovieClip拖動到一個圓](http://stackoverflow.com/questions/6509716/constrain-movieclip-drag-to-a-circle/6510032#6510032) 。 –