zolty77 Opublikowano 20 Maja 2014 Udostępnij Opublikowano 20 Maja 2014 Jak w tytule, mam dużo obiektów i chce zrobić tak, aby po kliknięciu na każdy z nich w panelu obok wyświetlały się informacje o nim, np współrzędne itp. jeżeli mam kilka obiektów o tej samej nazwie. udało mi się już zrobić, że mogę zaznaczać obiekty i każdy zaznaczony obiekt ma zmienną, że jest zaznaczony, jak to dalej ugryźć? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 20 Maja 2014 Udostępnij Opublikowano 20 Maja 2014 1. Sprawdź czy wciśnięto lpm 2. Sprawdź czy wciśnięto na obiekcie 3. Ustaw jakąś zmienną globalną lub w obiekcie kontrolnym na ID klikniętej instancji obiektu 4. Wypisuj zmienne tej instancji odwołując się do jej ID zapisanego w zmiennej globalnej/ w kontrolerze. Edit: We wrześniu mi się nudziło to pomyślałem sobie że chcę zobaczyć ile jestem w stanie zrobić na szybkiego jeśli nie będę dbał o grafikę, muzykę ani nic podobnego, tylko o kod i tak się składa że to była strategia. Udostępnię kod później. Edit 2: Zaproponowalem to podejscie, a nie uzycie WITH, jak zolty, bo jest szybsze. Raz sprawdza i raz zapisuje dane, a potem juz tylko odczytuje. U zoltego musi sprawdzic w kazdym stepie kazda instancje kazdego wybieralnego obiektu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
zolty77 Opublikowano 20 Maja 2014 Autor Udostępnij Opublikowano 20 Maja 2014 Jakoś sobie poradziłem.. oczywiście podzielę się w Stepie obiektu: GML xx = id.x; yy = id.y; w Drawie innego obiektu do rysowania: GML with F16 if (id.selected = true) { draw_rectangle_color(750,15,1010,585,c_gray,c_white,c_gray,c_white,0); with id draw_text(760,25,id.xx); with id draw_text(760,45,id.yy); } pozdro. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 20 Maja 2014 Udostępnij Opublikowano 20 Maja 2014 GML with F16 if (id.selected = true) { draw_rectangle_color(750,15,1010,585,c_gray,c_white,c_gray,c_white,0); with id draw_text(760,25,id.xx); with id draw_text(760,45,id.yy); } 1.Niepotrzebne wykorzystanie "with id" w liniach 2 i 3. 2.Niepotrzebne odwołanie do id ( id.xx , id.yy ) 3. w id.selected = true też nie potrzebujesz tego id. 4. No i w stepie obiektu też. Nie pozdro Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ereg Opublikowano 20 Maja 2014 Udostępnij Opublikowano 20 Maja 2014 1, napisalbym do obj_panel by pokazywal parametry objectu(powiedzmy obj_balon) wedlog zadanego id wtedy wystarczy obj_panel podac id zayznazonego obj_balon a obj_panel sam sie postara o wyswietlenie danych 2, kazdy obj_balon w chwili kiedy jest zaznaczony poda swe id do obj_panel 3, trzeba ustalic zasady dla odznaczania, bo jest tu duzo nieznajomych, ktore niepodales. naprz. jak ma sie zachowac panel kiedy niejest oznazona zadny balon, jesli mozna oznaczyc wiecej obj_balon i co wtedy ma sie pokazywac Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
zolty77 Opublikowano 20 Maja 2014 Autor Udostępnij Opublikowano 20 Maja 2014 3. Ustaw jakąś zmienną globalną lub w obiekcie kontrolnym na ID klikniętej instancji obiektu 4. Wypisuj zmienne tej instancji odwołując się do jej ID zapisanego w zmiennej globalnej/ w kontrolerze. Edit 2: Zaproponowalem to podejscie, a nie uzycie WITH, jak zolty, bo jest szybsze. Raz sprawdza i raz zapisuje dane, a potem juz tylko odczytuje. U zoltego musi sprawdzic w kazdym stepie kazda instancje kazdego wybieralnego obiektu. Tylko to już dla mnie za bardzo skomplikowane, a jak będą mi się tworzyły nowe obiekty.. dzięki za optymalizację kodu, nie wiem czemu mi to wcześniej nie działało tylko wyświetlało wszystkie informacje ze wszystkich obiektów na raz. 1, napisalbym do obj_panel by pokazywal parametry objectu(powiedzmy obj_balon) wedlog zadanego id wtedy wystarczy obj_panel podac id zayznazonego obj_balon a obj_panel sam sie postara o wyswietlenie danych 2, kazdy obj_balon w chwili kiedy jest zaznaczony poda swe id do obj_panel Za bardzo nie wiem o co chodzi i jak to zrobić. 3, trzeba ustalic zasady dla odznaczania, bo jest tu duzo nieznajomych, ktore niepodales. naprz. jak ma sie zachowac panel kiedy niejest oznazona zadny balon, jesli mozna oznaczyc wiecej obj_balon i co wtedy ma sie pokazywac jak jest odznaczone to panel znika, będzie więcej pola widzenia a jak jest kilka obiektów to zostaje chyba ten z najwyższym id, jak dla mnie może tak zostać. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ereg Opublikowano 20 Maja 2014 Udostępnij Opublikowano 20 Maja 2014 chodzilo o cos takiego: GML Information about object: o_panel Sprite: Solid: false Visible: true Depth: 0 Persistent: false Parent: Mask: Create Event: execute code: _idn=0; Mouse Event for Glob Right Released: execute code: // kasuje id z o_panel _idn=0; Draw Event: execute code: if(_idn){ draw_rectangle(5,5,room_width-5, 50, 1); draw_text(10,10,"X="+string(_idn.x)+" score="+string(_idn.score)+" idn="+string(_idn)); draw_text(10,25,"Y="+string(_idn.y)+" direction="+string(_idn.direction)); }; draw_text(room_width*.5, 10, "LBM na objektu oznacza go dla panelu"); draw_text(room_width*.5, 25, "RMB kdziekolwiek kasuje panel"); ______________________________________________________ Information about object: o_balon Sprite: sprite0 Solid: false Visible: true Depth: 0 Persistent: false Parent: Mask: Create Event: execute code: x=irandom_range(32, room_width-32); y=irandom_range(96, room_height-32); // niewazne zmienna dla pokazu _hp=irandom(20)*10; direction=irandom(360); Mouse Event for Left Released: execute code: // przesyla id do o_panel o_panel._idn=id; ______________________________________________________ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
zolty77 Opublikowano 20 Maja 2014 Autor Udostępnij Opublikowano 20 Maja 2014 To mi się na pewno przyda, bo nie wykorzystuje tak procka, dzięki wielkie. :cheers: a jednak aktualizują się dane w czasie rzeczywistym. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
zolty77 Opublikowano 21 Maja 2014 Autor Udostępnij Opublikowano 21 Maja 2014 Szczerze to mi skomplikowało życie :D ponieważ zaznaczanie mam na kliknięcie myszki jak i na zaznaczenie ramówką jak to bywa w strategiach używając funkcji GML with Aircrafts if (collision_rectangle(global.xx1,global.yy1,global.xx2,global.yy2,id,1,0)) { Draw_Panel._idn=id; } with Aircrafts if (collision_point(global.xx1,global.yy1,id,1,0)) { Draw_Panel._idn=id; } with Base_player if (collision_rectangle(global.xx1,global.yy1,global.xx2,global.yy2,id,1,0)) { Draw_Panel._idn=id; } with Base_player if (collision_point(global.xx1,global.yy1,id,1,0)) { Draw_Panel._idn=id; } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ereg Opublikowano 21 Maja 2014 Udostępnij Opublikowano 21 Maja 2014 moze to jest odpowiedni czas, by przeprogramowac zaznaczanie objektow? :) (bez with) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
zolty77 Opublikowano 21 Maja 2014 Autor Udostępnij Opublikowano 21 Maja 2014 (edytowane) Pracuje już nad tym metodą prób i błędów, bo aż takiego doświadczenia nie mam No nie ma to jak od razu rzucić się na głęboką wodę :D ale dzięki temu szybciej się uczę. A czy przypadkiem między tym : GML Draw_Panel._idn=0; A Tym: GML with Draw_Panel _idn=0; nie ma żadnej różnicy? I czy lepiej zrobić panel na którym będą informacje z obiektu? czy lepiej rysować w Drawie? Edytowane 21 Maja 2014 przez zolty77 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ereg Opublikowano 21 Maja 2014 Udostępnij Opublikowano 21 Maja 2014 jednoznacnie Draw_Panel._idn=0; with uzywa sie tylko w wybranych przypadkach, kiedy dany objekt ma cos zrobic sam , ale tylko na powel objektu wydajocego komende with :) troche to brzmi dziwnie, ale jak mozna to nieuzywaj zbytnio with zatem jesli panel ma pokazac random wybrany object to wystarczy kiedy panel zna id objektu ktory ma wyswietlic a dane sam sobie bierze i tego obejktu zaznaczanie objektow napis do unikatnego objektu, moze byc nawet o_panel i w nim kieroj cale zaznaczenie o_panel mial by prechowac tez lewy-gorny a prawy-dolny rog zaznacenia, by potem o_balon mogly same robic testy jesli so wybrane. aha niewidze powodu bys robil dva testy na colision_rectangle +colision_point. point jest tez rectangle o rozmiarach w=0 h=0 :) ogolnie mozna ominoc caly collision_ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 21 Maja 2014 Udostępnij Opublikowano 21 Maja 2014 Przez długi czas myślałem że with działa mniej wydajnie, ale trafiłem na to. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ereg Opublikowano 21 Maja 2014 Udostępnij Opublikowano 21 Maja 2014 Przez długi czas myślałem że with działa mniej wydajnie, ale trafiłem na to.tylko jesli to niedotyczy GM:S :) dla mnie jest wazniejsze, ze with robi mniej przejrzsysty kod z samej swej natury. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
zolty77 Opublikowano 21 Maja 2014 Autor Udostępnij Opublikowano 21 Maja 2014 tylko jesli to niedotyczy GM:S smile.gif Ja używam GMS :) dla mnie jest wazniejsze, ze with robi mniej przejrzsysty kod z samej swej natury. to znaczy że to nie ma wpływu na wydajność? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 21 Maja 2014 Udostępnij Opublikowano 21 Maja 2014 Chyba nie, ale jest o wiele mniej czytelny i w końcu jak będziesz with wewnątrz with to się pogubisz. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ereg Opublikowano 21 Maja 2014 Udostępnij Opublikowano 21 Maja 2014 Ja używam GMS :)to do tej pory niewiedzalem :) i tak wzsystkie przyklady pisze w GM8 :thumbsup: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 21 Maja 2014 Udostępnij Opublikowano 21 Maja 2014 With moze nie jest wolny sam w sobie, ale sprawdzanie tego samego w kazdej instancji w kazdej chwili zawsze bedzie mniej wydajne niz sprawdzenie tego raz. I to jest sedno tego co powiedzialem. takich rzeczy nie powinno musieć się tłumaczyć Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 21 Maja 2014 Udostępnij Opublikowano 21 Maja 2014 No tak, bo nie powinno się stosować tego do obiektów a od razu do instance. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
zolty77 Opublikowano 21 Maja 2014 Autor Udostępnij Opublikowano 21 Maja 2014 Jak by ktoś chciał zobaczyć postępy https://www.dropbox.com/s/zosjw1rnk61fcjw/C...ult-1.0.0.2.exe Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się