hohserg написал(а):Текстуру кнопки свою юзать
Y4po4mak написал(а):hohserg написал(а):Текстуру кнопки свою юзать
Мне надо с помощью [font=-apple-system, BlinkMacSystemFont, Roboto,]телесатора[/font]
А как задать форму кнопки?Minebot написал(а):Y4po4mak написал(а):hohserg написал(а):Текстуру кнопки свою юзать
Мне надо с помощью [font=-apple-system, BlinkMacSystemFont, Roboto,]телесатора[/font]
В чем проблема? Есть же прозрачность
RinKirin написал(а):Если ты хочешь просто кнопку с круглой текстурой, то создай свой GuiButton и там укажи свою текстуру.
В это случае при наведении на углы кнопка будет так-же срабатывать.
Если ты хочешь чтобы она срабатывала только в этом круге, то бери ширину-высоту(желательно что-бы они были одинаковые) и дели пополам. Так найдешь центр этого квадрата и укажи радиус кнопки, а потом простой формулой смотри находится ли курсор в этом круге. Если да то выполняй действие.
Могу набросать код, если надо.
Y4po4mak написал(а):hohserg написал(а):Текстуру кнопки свою юзать
Мне надо с помощью [font=-apple-system, BlinkMacSystemFont, Roboto,]телесатора[/font]
Вычислять с помощью sin и cos.Y4po4mak написал(а):А как задать форму кнопки?
Здесь не фирма по оказанию эскорт услуг. Либо делаешь сам, либо вежливо просишь.Y4po4mak написал(а):Давай код,буду рад
public class GuiCircleButton extends GuiScreen
{
public void drawScreen(int x, int y, float ticks)
{
drawDefaultBackground();
super.drawScreen(x, y, ticks);
}
@Override
public void initGui()
{
buttonList.clear();
this.buttonList.add(new CircleButton(3, 50, 50, 64, 64,I18n.format("Test", new Object[0])));
super.initGui();
}
protected void actionPerformed(GuiButton button)
{
switch(button.id)
{
case 101:
{
this.mc.displayGuiScreen(new SkillGUI());
break;
}
}
super.actionPerformed(button);
}
public boolean doesGuiPauseGame()
{
return false;
}
}
public class CircleButton extends GuiButton
{
protected final ResourceLocation texture = new ResourceLocation(ModInfo.MODID + ":" + "textures/button.png");
public CircleButton(int id, int x, int y, String title){
this(id, x, y, 30, 30, title);
}
public CircleButton(int id, int x, int y, int width, int height, String title){
super(id, x, y, width, height, title);
}
/**
* Draws this button to the screen.
*/
public void drawButton(Minecraft p_146112_1_, int mouseX, int mouseY)
{
if (this.visible)
{
int r=30;
FontRenderer fontrenderer = p_146112_1_.fontRenderer;
p_146112_1_.getTextureManager().bindTexture(texture);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
this.field_146123_n = (Math.sqrt(Math.pow(mouseX-(this.xPosition+32), 2) + Math.pow(mouseY - (this.yPosition+32), 2))) <= r;
int k = this.getHoverState(this.field_146123_n);
GL11.glEnable(GL11.GL_BLEND);
OpenGlHelper.glBlendFunc(770, 771, 1, 0);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
this.drawTexturedModalRect(this.xPosition, this.yPosition, 0, 0, 64, 64);
this.mouseDragged(p_146112_1_, mouseX, mouseY);
int l = 14737632;
if (packedFGColour != 0)
{
l = packedFGColour;
}
else if (!this.enabled)
{
l = 10526880;
}
else if (this.field_146123_n)
{
l = 16713736;
}
this.drawCenteredString(fontrenderer, this.displayString, this.xPosition + this.width / 2, this.yPosition + (this.height - 8) / 2, l);
}
}
/**
* Fired when the mouse button is dragged. Equivalent of MouseListener.mouseDragged(MouseEvent e).
*/
protected void mouseDragged(Minecraft p_146119_1_, int p_146119_2_, int p_146119_3_)
{
}
/**
* Fired when the mouse button is released. Equivalent of MouseListener.mouseReleased(MouseEvent e).
*/
public void mouseReleased(int p_146118_1_, int p_146118_2_)
{
}
/**
* Returns true if the mouse has been pressed on this control. Equivalent of MouseListener.mousePressed(MouseEvent
* e).
*/
public boolean mousePressed(Minecraft p_146116_1_, int p_146116_2_, int p_146116_3_)
{
return this.enabled && this.visible && p_146116_2_ >= this.xPosition && p_146116_3_ >= this.yPosition && p_146116_2_ < this.xPosition + this.width && p_146116_3_ < this.yPosition + this.height;
}
public boolean func_146115_a()
{
return this.field_146123_n;
}
public void func_146111_b(int p_146111_1_, int p_146111_2_) {}
public void func_146113_a(SoundHandler p_146113_1_)
{
p_146113_1_.playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
}
public int getButtonWidth()
{
return this.width;
}
public int func_154310_c()
{
return this.height;
}
}
Ivasik написал(а):Ахах, копипаст дефолтной кнопки. Удачи с этим овном. От круглой кнопки тут только текстура.
Minebot написал(а):Ivasik написал(а):Ахах, копипаст дефолтной кнопки. Удачи с этим овном. От круглой кнопки тут только текстура.
Так это самый простой вариант
Ivasik написал(а):Minebot написал(а):Ivasik написал(а):Ахах, копипаст дефолтной кнопки. Удачи с этим овном. От круглой кнопки тут только текстура.
Так это самый простой вариант
Начнем с того, что он скопировал класс нопки, хотя мог его унаследовать и сделать в 10 раз проще. А во вторых автору нужно задавать форму кнопки...
Ivasik написал(а):А пои наведении будет контур квадратный, а не круглый, гениально!
Minebot написал(а):Ivasik написал(а):А пои наведении будет контур квадратный, а не круглый, гениально!
У гуишных кнопок есть контур? Не знал, не юзал стандартные кнопки. Тогда окей
Ты скидывал код отрисованного круга, но не кнопки.Ivasik написал(а):Minebot написал(а):Ivasik написал(а):А пои наведении будет контур квадратный, а не круглый, гениально!
У гуишных кнопок есть контур? Не знал, не юзал стандартные кнопки. Тогда окей
Это не совсем контур(я его так называю), так как идёт вычисление позиции курсора:
mouseX >= posX && mouseY >= posY && mouseX < posX + width && mouseY < posY + height;
И в данном случае "контур" будет квадратным и тем самым это будет псевдо круглая кнопка. Я в какой то теме уже скидывал код круглой кнопки, если автор не поленится, найдёт...
А если включить голову и подумать, то это одно и тоже...Biter7789 написал(а):Ты скидывал код отрисованного круга, но не кнопки.