GRuSHa Posted February 12, 2015 Share Posted February 12, 2015 Доброго времени суток. Растолкуйте плиз как работать с CreateWidgetByDesc( self, widgetDesc ) Как получить widgetDesc? Нужно добавлять мобов в Container, создал файл Container.xdb, моб это Panel. Эту панель делать дочерней какому элементу? И как получить её в переменную widgetDesc, как потом управлять ею? Вообщем если можно простенький пример выложите. P.S. извините что так много вопросов от меня. Quote Link to comment Share on other sites More sharing options...
Ollaf Posted February 12, 2015 Share Posted February 12, 2015 Тебе необходимо иметь файл, описывающий виджет wtPanel - для мобов Тебе необходимо иметь файл, описывающий виджет wtContainer - для списка мобов. А дальше примерно такой код: local wtPanel = nil; local wtContainer = nil; local descPanel = nil; local listPanel = {}; function Init() wtContainer = mainForm:GetChildChecked("pContainer", true); wtPanel = mainForm:GetChildChecked("pMob", true); descPanel = wtPanel:GetWidgetDesc(); for i = 1, 24 do local newPanel = mainForm:CreateWidgetByDesc(descPanel); local pl = newPanel:GetPlacementPlain(); pl.sizeX = 50; pl.sizeY = 20; pl.posX = 0; pl.posY = (i - 1) * 20; newPanel:SetPlacementPlain(pl); wtContainer:AddChild(newPanel); listPanel[i] = newPanel; end; end; 1 Quote Link to comment Share on other sites More sharing options...
GRuSHa Posted February 12, 2015 Author Share Posted February 12, 2015 во спасибо большое=)) Quote Link to comment Share on other sites More sharing options...
logg Posted February 12, 2015 Share Posted February 12, 2015 Тут есть несколько различных способов, встречал и без AddChild (wtContainer:PushFront( wtPanel )) и с DestroyWidget, когда wtPanel удаляют, оставляя только newPanel Quote Link to comment Share on other sites More sharing options...
Slashuur Posted February 12, 2015 Share Posted February 12, 2015 Ну если это действительно контейнер, то там да, через Push и Pop всё делать надо. А если просто в панельку засунуть, то AddChild Quote Link to comment Share on other sites More sharing options...
GRuSHa Posted February 13, 2015 Author Share Posted February 13, 2015 да именно контейнер, после смерти моба виджет панели этого моба удаляется, я сделаю помощник в рейдах и мне нужен интерфейс примерно как в баф анонсе или Healer, как отслеживать бафы я уже знаю, как добавлять виджеты в контейнер додумал уже сам, а как реализуется чтобы ХП моба были фоном виджета пока не совсем помял, думал поставить ещё панель в панель и установить красный или жёлтый фон на неё уменьшать размер панельки по количеству хп, подскажите как лучше сделать Quote Link to comment Share on other sites More sharing options...
Ollaf Posted February 13, 2015 Share Posted February 13, 2015 Добавь в pMob дочерний элемент pHealth с фоновой текстурой, а бафы / название моба вынеси в другую дочернюю панель pMobInfo. Приоритет pHealth должен быть меньше приоритета pMobInfo. При изменении хп моба меняешь размер pHealth и все. В зависимости от количества хп можно еще и раскрашивать разными цветами текстурку. Quote Link to comment Share on other sites More sharing options...
GRuSHa Posted February 13, 2015 Author Share Posted February 13, 2015 (edited) а чтобы добавить элемент в контейнер через PushBack( self, widget ) нужно писать for i = 1, 24 do local newPanel = mainForm:CreateWidgetByDesc(descPanel); wtContainer:PushBack(newPanel); listPanel[i] = newPanel; end; или нужно так? for i = 1, 24 do wtContainer:PushBack(descPanel); listPanel[i] = wtContainer:GetElementCount() end; Edited February 13, 2015 by GRuSHa Quote Link to comment Share on other sites More sharing options...
Setras Posted February 13, 2015 Share Posted February 13, 2015 descPanel это описание виджета или сам виджет? Если виджет, то чтобы создать виджет по описанию видлжета надо сперва из виджета получить описание. local newPanel = mainForm:CreateWidgetByDesc(descPanel:GetWidgetDesc()) Код listPanel[i] = wtContainer:GetElementCount() Присвоит listPanel числовое значение количества элементов в wtContainer, так что это определенно неправильный код. Первый вариант (с правкой) должен работать нормально. 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts