Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2019-04-13, 02:07


droppex







Wiek: 31
Na forum: 2618 dni
Posty: 5



Respekt: 50

Cze??.
Podczas mojej pracy z DGS znowu natkn??em si? na pewien problem.
Postanowi?em wypr?bowa? programowanie obiektowe. Idzie mi to jako? pokracznie, ale ucz?c si? na b??dach daje rade. Natrafi?em jednak na problem, kt?rego nie jestem w stanie rozwi?za?. Chodzi o eventy.

Temat z wiki dotycz?cy event?w oop w dgs: LINK

Zrobi?em okno, w nim przycisk. Teraz chcia?bym wywo?a? funkcj? gdy gracz go kliknie.

Przyk?adowy fragment kodu:

loadstring(exports.dgs:dgsImportOOPClass())()

okno DGSClass:createWindow(0011""true)
przycisk okno:createButton(0.500.70.180.16"Przycisk"true)

function hide()
    okno.setVisible(false)
end


Gdy pr?bowa?em wywo?a? to poprzez addEventHandler np. addEventHandler("onDgsMouseClick", przycisk, hide) to pojawia si? b??d, ?e argument nr 2 (przycisk) to tabela.

W jaki spos?b mog? dobra? si? do elementu z tej tabeli? Mo?e jako? inaczej robi si? to w oop?
Po prostu chcia?bym, aby okno stawa?o si? niewidzialne gdy kto? kliknie przycisk.
Z g?ry dzi?kuj? za wszelk? pomoc w rozwi?zaniu problemu.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2019-04-13, 06:45


AmaMa.

AmaMa.#3768






Wiek: 25
Na forum: 3207 dni
Posty: 182
Nick w MP: AmaMa.

Piwa: 1825

Respekt: 165,3
Respekt: 165,3Respekt: 165,3

droppex, Spr?buj tak:


function hide buttonstate )
    if button == "left" and state == "down" then
        dgsSetVisible (oknofalse)
    end
end
addEventHandler "onDgsMouseClick"przyciskhide )


Je?li nie zadzia?a to ewentualnie tak:


DGS exports.dgs

function hide buttonstate )
    if button == "left" and state == "down" then
        DGS:dgsSetVisible (oknofalse)
    end
end
addEventHandler "onDgsMouseClick"przyciskhide )


Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
droppex
Wysłany: 2019-04-13, 12:02


droppex







Wiek: 31
Na forum: 2618 dni
Posty: 5



Respekt: 50

Sprawdz? jak tylko b?d? mia? dost?p do komputera.

M?g?by? mi w takim razie wyja?ni? do czego s?u?y event dgsMouseClick? Jest to odpowiednik onDgsMouseClick ale z tego co widzia?em to nie u?y?e? go ani razu.
Dzi?ki za pomoc.

[ Dodano: 2019-04-13, 14:47 ]
Ani pierwszy, ani drugi spos?b nie dzia?a.

M?g?by? wymy?li? co? innego?

[ Dodano: 2019-04-13, 16:24 ]
Kombinuj? ju? kilka h z tym i odkry?em, ?e u?ywaj?c:

addEventHandler("onDgsMouseClick"getRootElement(), function()
    outputChatBox(tostring(source))
end)

na czacie wy?wietla si?: userdata: 31216D98.
W zale?no?ci od naciskania r??nych element?w gui, userdata si? zmienia, wi?c wykrywa, ?e s? to r??ne elementy.
Da?oby si? jako? pobra? userdat? renderowanego elementu? Z tego co patrzy?em, to nie ma takiej opcji...
P.S Userdata widoczna w debugdgs jest inna ni? ta na czacie.

Postaw piwo autorowi tego posta
 

 
Tagi: eventy :: elementy :: oop.
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » LUA Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi

Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku