forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Xors3D (http://forum.boolean.name/forumdisplay.php?f=126)
-   -   AlbaLynx [Xors3D GUI] (http://forum.boolean.name/showthread.php?t=12285)

L.D.M.T. 11.04.2011 20:10

Ответ: AlbaLynx [Xors3D GUI]
 
итак, я опять за старое... :)
очень интересует когда будет готов редактор форм? вроде ты его обещал запилить после нового года. просто когда я доделаю игру, то хотелось бы не заморачиваться и не тормозиться на создании своего гуи.

wolfhound512 11.04.2011 20:22

Ответ: AlbaLynx [Xors3D GUI]
 
Альфа версия будет в этом месяце, скорее всего без возможности сохранять \ загружать, просто для отладки и проверки удобства.

Вообще думал что сделаю его гораздо быстрее, т.к. для GUIw512 я делал его меньше недели (хоть он и не полный был, но все же). А тут хочется сделать все основательно, универсально...

Amatsu 15.04.2011 18:35

Ответ: AlbaLynx [Xors3D GUI]
 
Разобрался. Такие самозакрытия получаются при проверке MouseHit. Если использовать MouseDown - все ок. Правда меню при этом начинает елозить за мышкой, если кнопка еще не отпущена :)

wolfhound512 15.04.2011 19:02

Ответ: AlbaLynx [Xors3D GUI]
 
специфика заголовков под Б3Д описана тут:
http://albalynx.com/articles/docs/Russian/pg_lang.html
за красной чертой. Там вместо одного указателя передаются две переменные. Есть еще две функции с отличиями.

Да, глюк с исчезанием наблюдается. В Хорсе помогает xFlushMouse()
Код:

        If (xMouseHit(2)) Then
                xFlushMouse()
                alOpenContext(context, Null, xMouseX(), xMouseY(), width, height, alGetValueI(fm_point_pos), alGetValueI(fm_point_menu));
        EndIf

В блице что-то от него толку нету. Придется использовать MouseDown, как ты правильно заметил. Чтоб меню не таскалось за мышкой нужно чуть-чуть усложнить условие, думаю знаешь как.

Amatsu 15.04.2011 19:06

Ответ: AlbaLynx [Xors3D GUI]
 
Кстати, даже с MouseHit почти не глючит, если вызывать функцию в самом конце цикла программы, после обработки и проверки GUI.

wolfhound512 15.04.2011 19:13

Ответ: AlbaLynx [Xors3D GUI]
 
Все дело в том, что если клик пришелся между вызовами
GUI->Update() и Context->Open(), то сначала открывается меню, а потом ГУИ узнает о клике, видит что клик за пределами контекстного меню и сразу закрывает его.
Соответственно чем между кода между этими функциями, тем меньше вероятность такой ситуации.
Вариант решения:
Код:

If MouseDown(2) Then
        If (pressed < 2) Then
                pressed = pressed + 1
                alOpenContext(context, 0, 0, MouseX(), MouseY(), width, height, alGetValueI(fm_point_pos), alGetValueI(fm_point_menu));
        EndIf
Else
        pressed = 0
EndIf

pressed < 2 - Чтобы если случилась выше описанная ситуация, то контекст мог открыться повторно, когда ГУИ уже знает о клике и не станет закрывать контекст
Если бы FlushMouse() работал, то так мудрить не пришлось бы

Amatsu 15.04.2011 19:23

Ответ: AlbaLynx [Xors3D GUI]
 
Спасибо :)
Да я знаю что у блитца свои косяки. Но в данном проекте, над которым сейчас временно работаю, ксорс использовать не могу из-за некоторых моментов работы ксорса с 2д

Amatsu 15.04.2011 19:51

Ответ: AlbaLynx [Xors3D GUI]
 
Немного проапгрейдил твой метод, может потом кому пригодится:
Код:

  If MouseDown(2) And context_button<2 And alMouseFree() Then
    context_button=context_button+1
    If context_button=1 Then
      context_x=MouseX()
      context_y=MouseY()
    EndIf
    alOpenContext(contex_menu,0,0,context_x,context_y)
  ElseIf Not(MouseDown(2)) Then
    context_button=0
  EndIf


Amatsu 16.04.2011 23:10

Ответ: AlbaLynx [Xors3D GUI]
 
Нубский вопрос, но как сделать выделенным определенный элемент листбокса по номеру элемента? Через alSetValueI не получается

Все, разобрался, мой косяк :) Конкретно alSetValueI не заработал, но придумал как через alSetValueS сделать

wolfhound512 17.04.2011 00:13

Ответ: AlbaLynx [Xors3D GUI]
 
alSetValueI и alSetValueS - это одно и тоже, просто в одном случае удобнее использовать первое (если ты имена элементов в списке задавал как номера), в другом второе.

Если тебе удобнее именно по индексу, то можно так:
alSelect( alGetParentChildren( listbox, index ) )

index - порядковый номер в списке, т.е. если из середины списка удалить элемент, то номера последующих уменьшатся на один.

Amatsu 17.04.2011 10:56

Ответ: AlbaLynx [Xors3D GUI]
 
Понял в чем косяк :) Спасибо!

wolfhound512 25.04.2011 23:35

Ответ: AlbaLynx [Xors3D GUI]
 
Видео демонстрация редактора форм, лучше смотреть в HD (всего 17Мб)
http://www.youtube.com/watch?v=JIaQQ_e-LnY

Завтра будет очередной релиз с его участием

wolfhound512 26.04.2011 18:20

Ответ: AlbaLynx [Xors3D GUI]
 
Версия 0.8.6.0

Изменения:
  • Новый элемент cParamSet.
  • Новый элемент cResizer.
  • В cTextBox добавлен флаг ALF_Password для ввода пароля. Не отображает текст и не дает его скопировать.
  • В cTextArea добавлены клавиши PageUp, PageDown.
  • В поля ввода добавлены сочетания Ctrl+Insert, Shift+Insert.
  • ...
  • ...
    Предупреждения:
    Переименованы константы:
  • ALF_TreeHeightByRows -> ALF_RowsInsteadHeight
  • ALF_ListHideEmptyRows -> ALF_HideEmptyRows
  • ALF_Held -> ALF_Hold
    Удалены функции:
  • SetListScrollStep() -> используйте SetScrollStep()
  • SetSBarStep() -> используйте SetScrollStep()

Так же в архиве лежит редактор форм. Лежит он там только для тестирования, т.к. функционал его еще довольно ограничен:
- Нельзя сохранять\загружать созданные лэйауты
- Нельзя добавлять элементы в списки
- Нельзя добавлять элементы в Desktop
- Нельзя удалять элементы

Жду замечания по поводу удобства и по поводу того что еще туда можно добавить

Amatsu 26.04.2011 19:42

Ответ: AlbaLynx [Xors3D GUI]
 
Спасибо за пароль :)

L.D.M.T. 27.04.2011 00:07

Ответ: AlbaLynx [Xors3D GUI]
 
реквестирую больше семплов. редактор оценить по достоинству не смог - координаты курсора не совпадали с внутренними координатами программы.


Часовой пояс GMT +4, время: 07:34.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot