Я не уверен, что это проблема с циклом for или позицией прямоугольника, но я установил точку останова и использовал отладочную ничью для рисования прямоугольников, и они выглядят как верный.Java for loop не работает полный цикл
public void onAction(String name, boolean value, float tpf) {
if(name.equals("ShowInventory")){
if(!value){
if(Statics.s_ShowInventory == true){
Statics.s_ShowInventory = false;
}else{
Statics.s_ShowInventory = true;
}
}
}
if(name.equals("RightClick") && Statics.s_ShowInventory == true){
Vector2f mousePos = screen.getMouseXY();
for(int i = 0; i < 40; i++)
{
if(Main.inventory.inventorySlots[i].rect.Contains(mousePos)){
System.out.println(Main.inventory.inventorySlots[i].slotNumber);
}
}
}
}
Что происходит, единственный прямоугольник, который записывает на консоль, является самым первым. То, что я хочу сделать, - это каждый раз, когда правый щелчок является истинным, а логическое значение - true, просматривает список прямоугольников и выясняет, какой из них содержит mousePos. При щелчке по прямоугольнику на консоли появляется только «0», поэтому я знаю, что я не получаю никакого другого номера слота инвентаря.
Еще одна вещь, которая может случиться, состоит в том, что цикл может не работать полностью, что было бы проблемой в моем методе кликов.
public float x;
public float y;
public float width;
public float height;
public Rect(float x, float y, float width, float height){
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}
public boolean Contains(Vector2f pos){
if(pos.x > x && pos.x < width && pos.y < height && pos.y > y){
return true;
}
else
return false;
}
Element e = createInventorySlot(i, x, y);
inventoryElements[i] = e;
inventorySlots[i] = new InventorySlot(i, 0, "empty", new Rect(inventoryElements[i].getPosition().x, inventoryElements[i].getPosition().y, iconSize, iconSize));
e.setToolTipText(inventorySlots[i].itemName + " : " + inventorySlots[i].slotNumber + " : " + inventorySlots[i].quantity);
inventory.addChild(e);
Не совсем понятно, что вы просите - мне кажется, что если эти слоты инвентаря не перекрываются, вы должны только ожидать увидеть один напечатанный. – argentage
Я спрашиваю, есть ли что-то, что выделяется, что даст мне проблему только чтения элемента [0] при нажатии? Если я нажму на любой другой инвентарь, в Консоли ничего не отображается. – huehuehuehuehue
Что я должен использовать вместо этого? У меня есть позиция мыши Vector2 и массив прямоугольников, чтобы проверить, какой прямоугольник содержит мышь. – huehuehuehuehue