W dokumentacji czytamy, że menu_create Tworzy menu oraz zwraca jego uchwyt.
Ostatnio kombinowałem z menusami i doszedłem do wniosku, ze menu_create zawsze zwraca 0, czyli nie istnieje coś takiego jak uchwyt menu.
Wyszło to jak chciałem zrobić sobie 3 menu globalne (takie, które tworzy się tylko raz i nie ma menu_destroy(menu) w handlerze)
Jak się okazało próba wyświetlenia menu drugiego skutkowało wyświetleniem pierwszego, zdziwiłem się i poprosiłem plugin o wypisanie mi wartości wszystkich 3 "uchwytów" menu, okazało się, że są to trzy zera. Czyli menu globalne może być jedno i nie może być innych menu w tym pluginie, bo próba wyświetlenia jakiegokolwiek menu wyświetli pierwsze utworzone menu globalne.
Wniosek z tego taki, że nie potrzebne nam "uchwyt", który zawsze jest zerem, a funkcja budująca i wyświetlająca zamiast:
new menu=menu_create("tytul menu","handler_menu") menu_additem(menu,"nazwa itemka") menu_additem(menu,"nazwa itemka 2) //i nie wiadomo ile tych itemów. itp + na przykład menu_setprop(menu, MPROP_EXITNAME,"wyjdz") menu_display(id,menu)
Mogłaby wyglądać tak:
menu_create("tytul menu","handler_menu") menu_additem(0,"nazwa itemka") menu_additem(0,"nazwa itemka 2) //i nie wiadomo ile tych itemów. itp + na przykład menu_setprop(0, MPROP_EXITNAME,"wyjdz") menu_display(id,0)
Co oszczędza trochę pisania i odwoływania się do zmiennej (przy rozbudowanym menu) nawet ze 20 razy.
Tak samo w handlerze
handler_menu(id,menu,item)
zmienna menu zawiera 0, więc zamiast menu_destroy(menu) może być menu_destroy(0)
Ja jestem nieco zdumiony, że to działa, co Wy na to?
Jeżeli to kompletna bzdura, to wyjaśnijcie czemu, a jeżeli nie to proszę o przerzucenie do "gotowe funkcje" i usunięcie tego zdania, pozdrawiam
Użytkownik Ossal edytował ten post 08.05.2015 17:30