2015-05-23 6 views
0

我通過拖動鼠標在窗口上移動一個圓。我應該讓它始終在窗戶內。Java Slick2d - 如何在窗口內保持一個形狀?

因此,默認情況下,當您以鼠標退出框架的方式拖動圓圈時,一半的圓圈將消失(因爲它退出框架),一半不會。我需要使其始終可見整個,即使您的光標退出了框架。下面的代碼:

if(draggingcircle) 
{ 
    g.drawString("Dragging circle = " + draggingcircle, 50, 110); 
    circle.setCenterX(gc.getInput().getMouseX()); 
    circle.setCenterY(gc.getInput().getMouseY()); 
} 

回答

0

無論圓被包含在,讓呼叫ID,您可以用簡單的數學保持在容器中,如果你知道半徑或直徑(我忘了)

所以

if(draggingcircle) 
{ 
    g.drawString("Dragging circle = " + draggingcircle, 50, 110); 
    circle.setCenterX(gc.getInput().getMouseX()); 
    circle.setCenterY(gc.getInput().getMouseY()); 
} 

成爲

var width = $('#container').width(); 
var height = $('#container').height(); 
var radius = 2; 

if(draggingcircle) 
{ 
    g.drawString("Dragging circle = " + draggingcircle, 50, 110); 
    if (gc.getInput().getMouseX() > radius && gc.getInput().getMouseX() < width - radius) 
    { 
    circle.setCenterX(gc.getInput().getMouseX()); 
    } 
    if (gc.getInput().getMouseY() > radius && gc.getInput().getMouseY() < height - radius) 
    { 
    circle.setCenterY(gc.getInput().getMouseY()); 
    } 
} 

對不起,我的語法很差,我不熟悉Slick2d ,但沿着這些線應該工作。

+0

謝謝你,它的工作原理,這正是我需要的。 – trishke