Здравствуйте, пытаюсь сделать кнопку, которая работала бы со структурным текстом, аля сделать картинку перед текстом или после. Перепробовал много вариантов, но так ничего и не получилось, пробовал и стилями и типами играться, но безуспешно. Её вообще можно такой сделать ? Или только отдельно текст, и отдельно картинка ?

RscButton

Лучший Ответ nIkRon , 19 June 2019 - 22:47
RscButtonMenu работает со структурным текстом.
class RscShortcutButton { idc=-1; style=0; default=0; shadow=1; w=0.183825; h="( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20)"; color[]={1,1,1,1}; colorFocused[]={1,1,1,1}; color2[]={0.94999999,0.94999999,0.94999999,1}; colorDisabled[]={1,1,1,0.25}; colorBackground[]= { "(profilenamespace getvariable ['GUI_BCG_RGB_R',0.13])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.54])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.21])", 1 }; colorBackgroundFocused[]= { "(profilenamespace getvariable ['GUI_BCG_RGB_R',0.13])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.54])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.21])", 1 }; colorBackground2[]={1,1,1,1}; textSecondary=""; colorSecondary[]={1,1,1,1}; colorFocusedSecondary[]={1,1,1,1}; color2Secondary[]={0.94999999,0.94999999,0.94999999,1}; colorDisabledSecondary[]={1,1,1,0.25}; sizeExSecondary="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; fontSecondary="RobotoCondensed"; animTextureDefault="\A3\ui_f\data\GUI\RscCommon\RscShortcutButton\normal_ca.paa"; animTextureNormal="\A3\ui_f\data\GUI\RscCommon\RscShortcutButton\normal_ca.paa"; animTextureDisabled="\A3\ui_f\data\GUI\RscCommon\RscShortcutButton\normal_ca.paa"; animTextureOver="\A3\ui_f\data\GUI\RscCommon\RscShortcutButton\over_ca.paa"; animTextureFocused="\A3\ui_f\data\GUI\RscCommon\RscShortcutButton\focus_ca.paa"; animTexturePressed="\A3\ui_f\data\GUI\RscCommon\RscShortcutButton\down_ca.paa"; periodFocus=1.2; periodOver=0.80000001; class HitZone { left=0; top=0; right=0; bottom=0; }; class ShortcutPos { left=0; top="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20) - ( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)) / 2"; w="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1) * (3/4)"; h="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; }; class TextPos { left="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1) * (3/4)"; top="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20) - ( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)) / 2"; right=0.0049999999; bottom=0; }; period=0.40000001; font="RobotoCondensed"; size="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; sizeEx="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; text=""; url=""; soundEnter[]= { "\A3\ui_f\data\sound\RscButton\soundEnter", 0.090000004, 1 }; soundPush[]= { "\A3\ui_f\data\sound\RscButton\soundPush", 0.090000004, 1 }; soundClick[]= { "\A3\ui_f\data\sound\RscButton\soundClick", 0.090000004, 1 }; soundEscape[]= { "\A3\ui_f\data\sound\RscButton\soundEscape", 0.090000004, 1 }; action=""; class Attributes { font="RobotoCondensed"; color="#E5E5E5"; align="left"; shadow="true"; }; class AttributesImage { font="RobotoCondensed"; color="#E5E5E5"; align="left"; }; }; class RscButtonMenu: RscShortcutButton { idc=-1; type=16; style="0x02 + 0xC0"; default=0; shadow=0; x=0; y=0; w=0.095588997; h=0.039216001; animTextureNormal="#(argb,8,8,3)color(1,1,1,1)"; animTextureDisabled="#(argb,8,8,3)color(1,1,1,1)"; animTextureOver="#(argb,8,8,3)color(1,1,1,1)"; animTextureFocused="#(argb,8,8,3)color(1,1,1,1)"; animTexturePressed="#(argb,8,8,3)color(1,1,1,1)"; animTextureDefault="#(argb,8,8,3)color(1,1,1,1)"; colorBackground[]={0,0,0,0.80000001}; colorBackgroundFocused[]={1,1,1,1}; colorBackground2[]={0.75,0.75,0.75,1}; color[]={1,1,1,1}; colorFocused[]={0,0,0,1}; color2[]={0,0,0,1}; colorText[]={1,1,1,1}; colorDisabled[]={1,1,1,0.25}; textSecondary=""; colorSecondary[]={1,1,1,1}; colorFocusedSecondary[]={0,0,0,1}; color2Secondary[]={0,0,0,1}; colorDisabledSecondary[]={1,1,1,0.25}; sizeExSecondary="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; fontSecondary="PuristaLight"; period=1.2; periodFocus=1.2; periodOver=1.2; size="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; sizeEx="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; tooltipColorText[]={1,1,1,1}; tooltipColorBox[]={1,1,1,1}; tooltipColorShade[]={0,0,0,0.64999998}; class TextPos { left="0.25 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; top="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) - ( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)) / 2"; right=0.0049999999; bottom=0; }; class Attributes { font="PuristaLight"; color="#E5E5E5"; align="left"; shadow="false"; }; class ShortcutPos { left="5.25 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; top=0; w="1 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; h="1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; }; soundEnter[]= { "\A3\ui_f\data\sound\RscButtonMenu\soundEnter", 0.090000004, 1 }; soundPush[]= { "\A3\ui_f\data\sound\RscButtonMenu\soundPush", 0.090000004, 1 }; soundClick[]= { "\A3\ui_f\data\sound\RscButtonMenu\soundClick", 0.090000004, 1 }; soundEscape[]= { "\A3\ui_f\data\sound\RscButtonMenu\soundEscape", 0.090000004, 1 }; };Перейти к сообщению

#1
OFFLINE
Отправлено 18 June 2019 - 18:03
#3
OFFLINE
Отправлено 19 June 2019 - 13:24
nIkRon, насколько я знаю, нативно такое можно сделать только если вы сделаете текстуру, на которой "нарисуете" все что вам нужно.
Ну если делать статичной картинку, то можно использовать
, текст естественно можно поменять, а для картинки я не нашел подходящей команды.Но я точно знаю что можно как-то сделать что-бы они работали со структурным текстом, ибо я видел такое уже.
#4
OFFLINE
Отправлено 19 June 2019 - 13:27
На счет нативного решения - хз, но никто вам не запрещает использовать несколько контролов:Но я точно знаю что можно как-то сделать что-бы они работали со структурным текстом, ибо я видел такое уже.
1. Снизу, который настроен на структурный текст;
2. Сверху, который является невидимой кнопкой;
Обрабатываете события с кнопки и изменяете цвета второго контрола, имитируя наведение курсора и нажатие на кнопку.
Сообщение отредактировал vlad333000: 19 June 2019 - 13:30
#5
OFFLINE
Отправлено 19 June 2019 - 13:29
На счет нативного решения - хз, но никто вам не запрещает использовать несколько контролов:Но я точно знаю что можно как-то сделать что-бы они работали со структурным текстом, ибо я видел такое уже.
1. Снизу, который настроен на структурный текст
2. Сверху, который является невидимой кнопкой
Обрабатываешь события с кнопки, на основе их изменяешь цвета второго контрола, что бы имитировать наведение курсора и нажатие на кнопку
Ну я думал об этом, но это можно назвать очередным костылем, к которому не очень хочется приходить. Хочу попробовать все же нормально сделать, пока есть пара идей, пытаюсь реализовать.
#6
OFFLINE
Отправлено 19 June 2019 - 20:41
Вы сейчас половину игры описалино это можно назвать очередным костылем, к которому не очень хочется приходить.

Если уж так хочется "прямой" вариант, то можно попробовать ListBox, который будет содержать всего один пункт. В этом контроле можно "нативно" вписать картинку и/или от текста, а так же иметьХочу попробовать все же нормально сделать, пока есть пара идей, пытаюсь реализовать.
#7
OFFLINE
Отправлено 19 June 2019 - 21:05
Вы сейчас половину игры описалино это можно назвать очередным костылем, к которому не очень хочется приходить.
одним костылем больше, одним меньше - разницы не заметите
Если уж так хочется "прямой" вариант, то можно попробовать ListBox, который будет содержать всего один пункт. В этом контроле можно "нативно" вписать картинку и/или от текста, а так же иметьХочу попробовать все же нормально сделать, пока есть пара идей, пытаюсь реализовать.
с ним вроде не все EH работают, к примеру
MouseButtonClick вроде с ним работать не будет.
#8
OFFLINE
Отправлено 19 June 2019 - 21:08
Зато есть . Так же есть , что бы сбросить выбор после "нажатия"MouseButtonClick вроде с ним работать не будет.
Сообщение отредактировал vlad333000: 19 June 2019 - 21:09
#9
OFFLINE
Отправлено 19 June 2019 - 21:15
Зато есть . Так же есть , что бы сбросить выбор после "нажатия"MouseButtonClick вроде с ним работать не будет.
это уже не то, вся прелесть MouseButtonClick в том что он "игнорирует автокликер"
Сообщение отредактировал nIkRon: 19 June 2019 - 21:16
#10
OFFLINE
Отправлено 19 June 2019 - 21:18
Да и у вас неправильная информация. Код:MouseButtonClick вроде с ним работать не будет.
with uiNamespace do { private _display = findDisplay 46 createDisplay "RscDisplayEmpty"; private _ctrlLB = _display ctrlCreate ["RscListBox", -1]; _ctrlLB ctrlSetPosition [0, 0, 1, 1]; _ctrlLB ctrlAddEventHandler ["MouseButtonUp", { systemChat str ["mouse_up", _this]; }]; _ctrlLB ctrlAddEventHandler ["MouseButtonDown", { systemChat str ["mouse_down", _this]; }]; _ctrlLB ctrlAddEventHandler ["MouseButtonClick", { systemChat str ["mouse_click", _this]; }]; _ctrlLB lbAdd "Row 1"; _ctrlLB lbAdd "Row 2"; _ctrlLB lbAdd "Row 3"; _ctrlLB ctrlCommit 0; };
Сообщение отредактировал vlad333000: 19 June 2019 - 21:19
#11
OFFLINE
Отправлено 19 June 2019 - 21:26
Да и у вас неправильная информация. Код:MouseButtonClick вроде с ним работать не будет.
with uiNamespace do { private _display = findDisplay 46 createDisplay "RscDisplayEmpty"; private _ctrlLB = _display ctrlCreate ["RscListBox", -1]; _ctrlLB ctrlSetPosition [0, 0, 1, 1]; _ctrlLB ctrlAddEventHandler ["MouseButtonUp", { systemChat str ["mouse_up", _this]; }]; _ctrlLB ctrlAddEventHandler ["MouseButtonDown", { systemChat str ["mouse_down", _this]; }]; _ctrlLB ctrlAddEventHandler ["MouseButtonClick", { systemChat str ["mouse_click", _this]; }]; _ctrlLB lbAdd "Row 1"; _ctrlLB lbAdd "Row 2"; _ctrlLB lbAdd "Row 3"; _ctrlLB ctrlCommit 0; };Результат
Хмм, ну ладно. Меня больше волнует вопрос "Бисы, а какого хера кнопки не работают со структурным текстом, и не имею команд которые доступны в ListBox" =)
#12
OFFLINE
Отправлено 19 June 2019 - 21:36
Этот вопрос вы можете задать по отношению ко всей игре. Ну и это не так критично, т. к. можно реализовать комбинацией других элементов, так что вопрос чисто удобства."Бисы, а какого хера кнопки не работают со структурным текстом, и не имею команд которые доступны в ListBox"
Больше вопросов возникает про функционал, который нужен многим, не имеет альтернативы и они до сих пор не реализовали его...
Сообщение отредактировал vlad333000: 19 June 2019 - 21:36
#13
OFFLINE
Отправлено 19 June 2019 - 21:39
Этот вопрос вы можете задать по отношению ко всей игре. Ну и это не так критично, т. к. можно реализовать комбинацией других элементов, так что вопрос чисто удобства."Бисы, а какого хера кнопки не работают со структурным текстом, и не имею команд которые доступны в ListBox"
Больше вопросов возникает про функционал, который нужен многим, не имеет альтернативы и они до сих пор не реализовали его...
Это про Terrain Builder ? =)
#14
OFFLINE
Отправлено 19 June 2019 - 21:49
Да про что угодно, везде есть просто тонна косяков... Террейн билдер это вообще натуральный лут бокс, что он выдает на выходе зависит преимущественно от рандома.Это про Terrain Builder ? =)
#15
OFFLINE
Отправлено 19 June 2019 - 22:47 Лучший Ответ
RscButtonMenu работает со структурным текстом.
class RscShortcutButton { idc=-1; style=0; default=0; shadow=1; w=0.183825; h="( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20)"; color[]={1,1,1,1}; colorFocused[]={1,1,1,1}; color2[]={0.94999999,0.94999999,0.94999999,1}; colorDisabled[]={1,1,1,0.25}; colorBackground[]= { "(profilenamespace getvariable ['GUI_BCG_RGB_R',0.13])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.54])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.21])", 1 }; colorBackgroundFocused[]= { "(profilenamespace getvariable ['GUI_BCG_RGB_R',0.13])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.54])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.21])", 1 }; colorBackground2[]={1,1,1,1}; textSecondary=""; colorSecondary[]={1,1,1,1}; colorFocusedSecondary[]={1,1,1,1}; color2Secondary[]={0.94999999,0.94999999,0.94999999,1}; colorDisabledSecondary[]={1,1,1,0.25}; sizeExSecondary="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; fontSecondary="RobotoCondensed"; animTextureDefault="\A3\ui_f\data\GUI\RscCommon\RscShortcutButton\normal_ca.paa"; animTextureNormal="\A3\ui_f\data\GUI\RscCommon\RscShortcutButton\normal_ca.paa"; animTextureDisabled="\A3\ui_f\data\GUI\RscCommon\RscShortcutButton\normal_ca.paa"; animTextureOver="\A3\ui_f\data\GUI\RscCommon\RscShortcutButton\over_ca.paa"; animTextureFocused="\A3\ui_f\data\GUI\RscCommon\RscShortcutButton\focus_ca.paa"; animTexturePressed="\A3\ui_f\data\GUI\RscCommon\RscShortcutButton\down_ca.paa"; periodFocus=1.2; periodOver=0.80000001; class HitZone { left=0; top=0; right=0; bottom=0; }; class ShortcutPos { left=0; top="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20) - ( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)) / 2"; w="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1) * (3/4)"; h="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; }; class TextPos { left="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1) * (3/4)"; top="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20) - ( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)) / 2"; right=0.0049999999; bottom=0; }; period=0.40000001; font="RobotoCondensed"; size="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; sizeEx="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; text=""; url=""; soundEnter[]= { "\A3\ui_f\data\sound\RscButton\soundEnter", 0.090000004, 1 }; soundPush[]= { "\A3\ui_f\data\sound\RscButton\soundPush", 0.090000004, 1 }; soundClick[]= { "\A3\ui_f\data\sound\RscButton\soundClick", 0.090000004, 1 }; soundEscape[]= { "\A3\ui_f\data\sound\RscButton\soundEscape", 0.090000004, 1 }; action=""; class Attributes { font="RobotoCondensed"; color="#E5E5E5"; align="left"; shadow="true"; }; class AttributesImage { font="RobotoCondensed"; color="#E5E5E5"; align="left"; }; }; class RscButtonMenu: RscShortcutButton { idc=-1; type=16; style="0x02 + 0xC0"; default=0; shadow=0; x=0; y=0; w=0.095588997; h=0.039216001; animTextureNormal="#(argb,8,8,3)color(1,1,1,1)"; animTextureDisabled="#(argb,8,8,3)color(1,1,1,1)"; animTextureOver="#(argb,8,8,3)color(1,1,1,1)"; animTextureFocused="#(argb,8,8,3)color(1,1,1,1)"; animTexturePressed="#(argb,8,8,3)color(1,1,1,1)"; animTextureDefault="#(argb,8,8,3)color(1,1,1,1)"; colorBackground[]={0,0,0,0.80000001}; colorBackgroundFocused[]={1,1,1,1}; colorBackground2[]={0.75,0.75,0.75,1}; color[]={1,1,1,1}; colorFocused[]={0,0,0,1}; color2[]={0,0,0,1}; colorText[]={1,1,1,1}; colorDisabled[]={1,1,1,0.25}; textSecondary=""; colorSecondary[]={1,1,1,1}; colorFocusedSecondary[]={0,0,0,1}; color2Secondary[]={0,0,0,1}; colorDisabledSecondary[]={1,1,1,0.25}; sizeExSecondary="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; fontSecondary="PuristaLight"; period=1.2; periodFocus=1.2; periodOver=1.2; size="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; sizeEx="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; tooltipColorText[]={1,1,1,1}; tooltipColorBox[]={1,1,1,1}; tooltipColorShade[]={0,0,0,0.64999998}; class TextPos { left="0.25 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; top="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) - ( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)) / 2"; right=0.0049999999; bottom=0; }; class Attributes { font="PuristaLight"; color="#E5E5E5"; align="left"; shadow="false"; }; class ShortcutPos { left="5.25 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; top=0; w="1 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; h="1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; }; soundEnter[]= { "\A3\ui_f\data\sound\RscButtonMenu\soundEnter", 0.090000004, 1 }; soundPush[]= { "\A3\ui_f\data\sound\RscButtonMenu\soundPush", 0.090000004, 1 }; soundClick[]= { "\A3\ui_f\data\sound\RscButtonMenu\soundClick", 0.090000004, 1 }; soundEscape[]= { "\A3\ui_f\data\sound\RscButtonMenu\soundEscape", 0.090000004, 1 }; };
Сообщение отредактировал nIkRon: 19 June 2019 - 22:49