Guest KaaPex Posted April 12, 2010 Share Posted April 12, 2010 Ребят, подскажите как оформляется xdb для WidgetEditLine? Quote Link to comment Share on other sites More sharing options...
Guest KaaPex Posted April 12, 2010 Share Posted April 12, 2010 Столкнулся с проблемой, как сделать чтобы было видно мигающий курсор и скорее всего надо обработку потери фокуса поля! Кто нить ковырял данный вопрос? Quote Link to comment Share on other sites More sharing options...
Guest KaaPex Posted April 13, 2010 Share Posted April 13, 2010 Еще такой вопрос возник: Можно ли указать на ссылку прототипа из переменных клиента, то есть не объявленных в аддоне, например AuctionEditLine.Prototype ? Если можно, то как? Quote Link to comment Share on other sites More sharing options...
SLA Posted April 13, 2010 Share Posted April 13, 2010 Я НЕ пробовал, но наверное, нужно сделать отдельный пустой слой для курсора, на котором он будет виден. Таких здесь, почему-то аж 2 - Cursor1Layer и Cursor2Layer: Code: <Cursor1Layer href="" /><Cursor2Layer href="" /> <CursorWidth>2</CursorWidth> <CursorChangeTimeMs>500</CursorChangeTimeMs> Про реакции. Там есть реакции нажатия Enter и Esc, а также реакция на изменившийся текст (Changed). Реакции на потерю фокуса нет. А зачем она, без неё никак? Quote Link to comment Share on other sites More sharing options...
Guest KaaPex Posted April 13, 2010 Share Posted April 13, 2010 Два слоя видимо чтобы реализовать эффект мигания курсора или для выделения текста вторым слоем. По поводу потери фокуса, почему-то пока не закрою окно с полем WidgetEditLine все события приходят на него, вероятно Esc в данном контексте является признаком потери фокуса. А где можно посмотреть всю структуру файла для WidgetEditLine? А то сижу методом тыка мучаюсь. Quote Link to comment Share on other sites More sharing options...
SLA Posted April 13, 2010 Share Posted April 13, 2010 Нигде. Беда в том, что разработчики не потрудились написать никакой документации по XDB файлам. Сами они пользуются каким-то полноценным IDE, поэтому, им самим такая документация вообще не нужна, у них её нет. Вот и приходится, методом тыка, разбираться в XDB файлах. Если нужно сделать пустой слой, то, имхо, это делается так: Делаем TGA картинку такого размера, как этот WidgetEditLine. Содержание картинки не важно, мы её всё равно удалим. Конвертируем её ниваловским конвертером в WidgetLayerTiledTexture - получаются 4 файла: (WidgetLayerTiledTexture).xdb (UISingleTexture).xdb (UITexture).xdb (UITexture).bin Теперь удаляем два нижних файла, а в файле (UISingleTexture).xdb удаляем href в теге <singleTexture>, получается так: Code: <?xml version="1.0" encoding="UTF-8" ?><UISingleTexture> <textureElement href="" /> <singleTexture href="" /> </UISingleTexture> Всё готово. Эти два файла - (WidgetLayerTiledTexture).xdb и отредактированный (UISingleTexture).xdb - это и есть пустой слой. Quote Link to comment Share on other sites More sharing options...
SLA Posted April 13, 2010 Share Posted April 13, 2010 Не знаю, вряд ли. Но попробуй, вдруг выйдет Quote Link to comment Share on other sites More sharing options...
Guest KaaPex Posted April 13, 2010 Share Posted April 13, 2010 Тоже полезное дело! Но немного другое имел ввиду. Я про WidgetEditLine хотел узнать описание полей самого виджета, например есть же для кнопок и для текстовых полей. Про текстуры вроде бы все понятно. Вот к примеру для кнопки Code: <?xml version="1.0" encoding="UTF-8" ?> <WidgetButton> <Header> <Prototype href="/Mods/SampleCommon/Button/ButtonRegular.Prototype.(WidgetButton).xdb#xpointer(/WidgetButton)" /> </Header> <Placement> <X> <Align>WIDGET_ALIGN_CENTER</Align> <Size>200</Size> </X> <Y> <Align>WIDGET_ALIGN_HIGH</Align> <HighPos>30</HighPos> <Size>30</Size> </Y> </Placement> <Variants> <Item> <TextFileRef href="ButtonExecute.txt" /> <Reaction>execute</Reaction> </Item> </Variants> </WidgetButton> Quote Link to comment Share on other sites More sharing options...
ramirez Posted April 13, 2010 Share Posted April 13, 2010 Пустой WidgetLayerSimpleTexture решает все проблемы. Белый квадрат. Размеры - пофигу. Если надо покрасить - добавляем цвет. Болванка пустого слоя: Code: <WidgetLayerSimpleTexture> <Color>0xffffffff</Color> <BlendEffect>BLEND_EFFECT_ALPHABLND</BlendEffect> </WidgetLayerSimpleTexture> Quote Link to comment Share on other sites More sharing options...
Guest KaaPex Posted April 13, 2010 Share Posted April 13, 2010 накопал тут для виджета ниже пример разрешающий вводить только русские буквы Code: <UITextFilter> <ranges> <Item> <minChar>А</minChar> <maxChar>я</maxChar> </Item> </ranges> <filter>Ёё</filter> <isAllowObject>false</isAllowObject> </UITextFilter> Quote Link to comment Share on other sites More sharing options...
Guest KaaPex Posted April 14, 2010 Share Posted April 14, 2010 Методом тыка было выяснено, что эти два слоя отвечают за эффект мигания курсора разными текстурами. Quote Link to comment Share on other sites More sharing options...
Dubrion Posted December 16, 2014 Share Posted December 16, 2014 (edited) похоже что то поменялось в WidgetEditLine после 6.0.01.ни кто случайно не разобрался? не удается его получить с помощью GetChildChecked в логе ошибка Widgets::LuaGetChildChecked: can't find a child Edited December 16, 2014 by Dubrion Quote Link to comment Share on other sites More sharing options...
hal.dll Posted December 16, 2014 Share Posted December 16, 2014 (edited) Если используешь <Cursor2Layer href="" />, то теперь придется задать прозрачный слой здесь. Явно прописать: <Cursor2Layer href="TransparentLayer.(WidgetLayerSimpleTexture).xdb#xpointer(/WidgetLayerSimpleTexture)" /> И создать TransparentLayer.(WidgetLayerSimpleTexture).xdb с прозрачным цветом (<Color>0x00000000</Color>) и без текстуры. В противном случае виджет просто не создается. Edited December 16, 2014 by hal.dll Quote Link to comment Share on other sites More sharing options...
Dubrion Posted December 16, 2014 Share Posted December 16, 2014 спасибо Quote Link to comment Share on other sites More sharing options...
Recommended Posts