Jump to content
Alloder.pro  about Allods with love 😱
Search In
  • More options...
Find results that contain...
Find results in...

Results of the competition "Allods and Life"

Stories, that warm souls.

Read More

Digest April

We talk about what was done and updated in the past month. We help keep abreast of events.

Read more

Game tooltips

Tooltips provide a way for 3rd party fansites and extensions to display detailed information on mouseover.

Read more

Как правильно подключить DnD


GRuSHa
 Share

Recommended Posts

Доброго времени суток вам.

Помогите, захотел подключить DnD в аддоне и столкнулся с проблемой куда писать код ,представленный в документации к библиотеке.

У меня на паленькой панельке расположены 2 кнопки и написать нужно, как я понимаю DnD.Init( wtPanel, wtPanel, true ) и if DnD.IsDragging() then return end чтобы перетаскивать панельку с кнопками. не могли бы вы на стандартном аддоне SampleReactionHandler, поставить в нужные места код чтобы я понял=))

--------------------------------------------------------------------------------
-- GLOBALS
--------------------------------------------------------------------------------

Global( "wtMainPanel", nil )
Global( "delta", 10 )
Global( "COUNTER_LIMIT", 5 )
Global( "counter", COUNTER_LIMIT )

--------------------------------------------------------------------------------
-- REACTION HANDLERS
--------------------------------------------------------------------------------

-- "execute"
function OnReactionExecute( params )
	LogInfo( "counter: ", counter )
	
	counter = counter - 1
	if counter < 0 then
		counter = COUNTER_LIMIT
		delta = -delta
	end
	
	local place = wtMainPanel:GetPlacementPlain()
	place.posX = place.posX + delta
	wtMainPanel:SetPlacementPlain( place )
end

--------------------------------------------------------------------------------
-- INITIALIZATION
--------------------------------------------------------------------------------
function Init()
	LogInfo( "Reaction handler sample" )

	common.RegisterReactionHandler( OnReactionExecute, "execute" ) 
	
	wtMainPanel = mainForm:GetChildChecked( "MainPanel", false )
end
--------------------------------------------------------------------------------
Init()
--------------------------------------------------------------------------------

или дайте какой нибудь простой аддон где есть DnD, пожалуйста. 

Link to comment
Share on other sites

или дайте какой нибудь простой аддон где есть DnD, пожалуйста.

 

MyrrhMyrrh

 

 

и написать нужно, как я понимаю DnD.Init( wtPanel, wtPanel, true )

 

Правильно

Для вашего примера прописывать этот вызов надо в Init

 

и if DnD.IsDragging() then return end чтобы перетаскивать панельку с кнопками

 

Это надо написать в самом начале обработчика реакции. В вашем примере - в OnReactionExecute

Link to comment
Share on other sites

я сделал так

 

Global( "wtMainPanel", nil )

--------------------------------------------------------------------------------
-- REACTION HANDLERS
--------------------------------------------------------------------------------

-- "execute"
function OnReactionExecute( params )

 if DnD.IsDragging() then return end
    

...

end

--------------------------------------------------------------------------------
-- INITIALIZATION
--------------------------------------------------------------------------------
function Init()

    wtMainPanel = mainForm:GetChildChecked( "MainPanel", false )
    DnD.Init( wtPanel, wtPanel, true )
    common.RegisterReactionHandler( OnReactionExecute, "execute" )
end
--------------------------------------------------------------------------------
Init()
 

 

проверил все файлы.

панель намертво застряла и не шивелится

я попробовал 

DnD.Init( wtMainPanel, nil, true )
for _,wtChild in pairs( wtMainPanel:GetNamedChildren() ) do
DnD.Init( wtChild, nil, true, nil, 4, KBF_CTRL )
end

кнопки начали перемещаться по панели, а сама панель нет, подскажите в чём может быть ошибка

Link to comment
Share on other sites

Все виджеты, за которые осуществляется перемещение, должны создаваться с полями

    <TransparentInput>false</TransparentInput>
    <PickChildrenOnly>false</PickChildrenOnly>
Link to comment
Share on other sites

не помогло=( я уже посмотрел как в UnknownAstral кнопки сделаны, скопировал в точности, не помогает, то ли я дурак то ли лыжи по асфальту не едут

Link to comment
Share on other sites

В UnknownAstral кнопки принадлежат главной форме, емнип.

Вот SampleReactionHandler с интегрированной LibDnD.

Различия минимальны:

Прописал LibDnD.lua в AddonDesc.(UIAddon).xdb

Прописал имена виджетам

Добавил в MainPanel.(WidgetPanel).xdb:

    <TransparentInput>false</TransparentInput>
    <PickChildrenOnly>false</PickChildrenOnly>

(хотя у меня нет уверенности, что это действительно необходимо)

 

ScriptSampleReactionHandler.lua:

--------------------------------------------------------------------------------
-- GLOBALS
--------------------------------------------------------------------------------

Global( "wtMainPanel", nil )

--------------------------------------------------------------------------------
-- REACTION HANDLERS
--------------------------------------------------------------------------------

-- "execute"
function OnReactionExecute( params )
    LogInfo( "in reaction: ", DnD.IsDragging() )
    if DnD.IsDragging() then return end
end

--------------------------------------------------------------------------------
-- INITIALIZATION
--------------------------------------------------------------------------------
function Init()
    LogInfo( "Reaction handler sample" )

    common.RegisterReactionHandler( OnReactionExecute, "execute" )
    
    wtMainPanel = mainForm:GetChildChecked( "MainPanel", false )
    DnD:Init(wtMainPanel)

    for _,wtChild in pairs( wtMainPanel:GetNamedChildren() ) do
        DnD:Init( wtChild )
    end
end
--------------------------------------------------------------------------------
Init()
--------------------------------------------------------------------------------

Всё нормально работает и двигается. Прикладываю архив аддона, проверяй.

SampleReactionHandler.zip

  • Upvote 1
Link to comment
Share on other sites

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

By using our site you agree to the Terms of Use