Jump to content

removeEventHandler


Recommended Posts

После нажатие на кнопку, не хочет удаляться функция обработчика из события, что не так сделал? ( onClientRender пробовал )

function mainDx ()
	   dxDrawImage(xn, xv, wn, hv, "images/bground.png", 0, 0, 0, tocolor(255, 255, 255, 210), false)--#Фон
	   dxDrawText("Войти", xn + 106, xv + hv - 84, 120, 27, tocolor(255, 255, 255, 225), 1.00, "default-bold", "left", "top", false, false, false, false, false)
	   dxDrawText("Купить", xn + 238, xv + hv - 84, 120, 27, tocolor(255, 255, 255, 225), 1.00, "default-bold", "left", "top", false, false, false, false, false)
	   dxDrawText("Сменить ключ", xn + 148, xv + hv - 47, 120, 27, tocolor(255, 255, 255, 225), 1.00, "default-bold", "left", "top", false, false, false, false, false)
end 

 buyButton = guiCreateButton( xn + 64, xv + hv - 90, 120, 27, 'Купить', false )
 guiSetAlpha(buyButton, 0)
 guiSetVisible (buyButton, false )

addEventHandler( 'onClientGUIClick', root, function( btn )
    if btn ~= 'left' then return false; end;
    if source == buyButton then --#Если нажать на кнопку "купить", то
	    removeEventHandler("onClientPreRender", getRootElement(), mainDx); --#Удаляет основное окно
        guiSetVisible ( buyButton, false ) --#Удаляет кнопку
        addEventHandler("onClientPreRender", getRootElement(), HouseWindowDx); --#Открывается новое окно
    end
end

 

Edited by Maikele
Link to comment
removeEventHandler("onClientPreRender", getRootElement(), mainDx)
addEventHandler("onClientPreRender", getRootElement(), HouseWindowDx)

У тебя названия функций разные. При removeEventHandler нужно использовать ту функцию, которую ты указывал в addEventHandler

----------------------------------------------------------------

addEventHandler( 'onClientGUIClick', root, function( btn )

А зачем ты прикрепляешь этот обработчик к корню? Гораздо легче будет, если вместо "root" указать саму кнопку ( buyButton ). И тогда условие if source == buyButton then  не понадобится, т.к. событие будет запускаться только по нажатию на данную кнопку.

  • Thanks 1
Link to comment
8 hours ago, CharlySHOMAN said:

 

Название разные, потому что у меня 2 окна. Открываешь одно окно, при нажатие на кнопку открывается другое, вот я и сделал так.

addEventHandler( 'onClientGUIClick', root, function( btn ) 
    if btn ~= 'left' then return false; end;
    if source == hm_gui['icon_buy'] then
      guiSetVisible( hm_gui['wnd_key_onBuy'], true );
      guiSetText( hm_gui['onBuy_edit'], 'Ключ' );
      guiSetInputEnabled( true );
	  removeEventHandler("onClientPreRender", getRootElement(), mainWindow)
      addEventHandler("onClientPreRender", getRootElement(), houseBuyWindow)
    elseif source == hm_gui['icon_sale'] then
      guiSetVisible( hm_gui['wnd_key_onSale'], true );
      guiSetText( hm_gui['onSale_edit'], 'Key' );
      guiSetInputEnabled( true );
	  removeEventHandler("onClientPreRender", getRootElement(), mainWindow)
      addEventHandler("onClientPreRender", getRootElement(), houseSaleWindow)
    elseif source == hm_gui['icon_key'] then
      guiSetVisible( hm_gui['wnd_key_onChange'], true );
      guiSetText( hm_gui['onChange_edit_Old'], 'Old key' );
      guiSetText( hm_gui['onChange_edit_New'], 'New key' );
      guiSetText( hm_gui['onChange_edit_RepeatNew'], 'Repeat new key' );
      guiSetInputEnabled( true );
      removeEventHandler("onClientPreRender", getRootElement(), mainWindow)
      addEventHandler("onClientPreRender", getRootElement(), houseKeyWindow)
    elseif source == hm_gui['icon_newowner'] then
      guiSetVisible( hm_gui['wnd_key_onNewOwner'], true );
      guiSetText( hm_gui['onNewOwner_keyEdit'], 'Key' );
      guiSetText( hm_gui['onNewOwner_nameEdit'], 'Account Name' );
      guiSetInputEnabled( true );
      removeEventHandler("onClientPreRender", getRootElement(), mainWindow)
      addEventHandler("onClientPreRender", getRootElement(), houseNewOwnerWindow)
    elseif source == hm_gui['icon_destroy'] then
      guiSetVisible( hm_gui['wnd_onDestroy'], true );
      removeEventHandler("onClientPreRender", getRootElement(), mainWindow)
    end
end )

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


UPD: Не два окна, их несколько :D

Edited by Maikele
Link to comment
20 hours ago, Maikele said:

Название разные, потому что у меня 2 окна. Открываешь одно окно, при нажатие на кнопку открывается другое, вот я и сделал так.


addEventHandler( 'onClientGUIClick', root, function( btn ) 
    if btn ~= 'left' then return false; end;
    if source == hm_gui['icon_buy'] then
      guiSetVisible( hm_gui['wnd_key_onBuy'], true );
      guiSetText( hm_gui['onBuy_edit'], 'Ключ' );
      guiSetInputEnabled( true );
	  removeEventHandler("onClientPreRender", getRootElement(), mainWindow)
      addEventHandler("onClientPreRender", getRootElement(), houseBuyWindow)
    elseif source == hm_gui['icon_sale'] then
      guiSetVisible( hm_gui['wnd_key_onSale'], true );
      guiSetText( hm_gui['onSale_edit'], 'Key' );
      guiSetInputEnabled( true );
	  removeEventHandler("onClientPreRender", getRootElement(), mainWindow)
      addEventHandler("onClientPreRender", getRootElement(), houseSaleWindow)
    elseif source == hm_gui['icon_key'] then
      guiSetVisible( hm_gui['wnd_key_onChange'], true );
      guiSetText( hm_gui['onChange_edit_Old'], 'Old key' );
      guiSetText( hm_gui['onChange_edit_New'], 'New key' );
      guiSetText( hm_gui['onChange_edit_RepeatNew'], 'Repeat new key' );
      guiSetInputEnabled( true );
      removeEventHandler("onClientPreRender", getRootElement(), mainWindow)
      addEventHandler("onClientPreRender", getRootElement(), houseKeyWindow)
    elseif source == hm_gui['icon_newowner'] then
      guiSetVisible( hm_gui['wnd_key_onNewOwner'], true );
      guiSetText( hm_gui['onNewOwner_keyEdit'], 'Key' );
      guiSetText( hm_gui['onNewOwner_nameEdit'], 'Account Name' );
      guiSetInputEnabled( true );
      removeEventHandler("onClientPreRender", getRootElement(), mainWindow)
      addEventHandler("onClientPreRender", getRootElement(), houseNewOwnerWindow)
    elseif source == hm_gui['icon_destroy'] then
      guiSetVisible( hm_gui['wnd_onDestroy'], true );
      removeEventHandler("onClientPreRender", getRootElement(), mainWindow)
    end
end )

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


UPD: Не два окна, их несколько :D

hm_gui это таблица из кнопок?

Я тут посмотрел твой первый пост. Там ты скрываешь кнопку guiSetVisible (buyButton, false ). От скрытой кнопки разве будет запускаться событие? Вроде как нет. Может в этом то и проблема, то что кнопки все скрыты.

Вообще событие onClientGUIClick запускается? Если нет, то проблема скорее всего в этих скрытых кнопках

  • Thanks 1
Link to comment
2 hours ago, CharlySHOMAN said:

hm_gui это таблица из кнопок?

Я тут посмотрел твой первый пост. Там ты скрываешь кнопку guiSetVisible (buyButton, false ). От скрытой кнопки разве будет запускаться событие? Вроде как нет. Может в этом то и проблема, то что кнопки все скрыты.

Вообще событие onClientGUIClick запускается? Если нет, то проблема скорее всего в этих скрытых кнопках

1. Не-а, думаю не в этом дело, т.к. у меня есть функция > кнопка "закрыть", т.е. нажимаешь и все закрывается.

  hm_gui['btn_close'] = guiCreateButton( xn+350, xv + hv - 260, 25, 20, 'X', false );
  guiSetAlpha(hm_gui['btn_close'], 0) 
  guiSetVisible ( hm_gui['btn_close'], false )

addEventHandler( 'onClientGUIClick', hm_gui['btn_close'], function( btn )
    if btn ~= 'left' then return false; end;
    triggerServerEvent( 'setFrozen', me, false );
	removeEventHandler("onClientPreRender", getRootElement(), mainWindow)
	--#Кнопки
    guiSetVisible ( hm_gui['icon_buy'], false )
    --#Текст
    guiSetVisible ( hm_gui['label_price'], false )
    showCursor( false );
end, false ); 

А именно закрыть при нажатие на "купить", не закрывается.. >:(

2.  onClientGUIClick запускается)

Edited by Maikele
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...