Minty
Stwórczyni omc dr fizyki
 
Pojedynki: być może
Pomogła: 259 razy Posty: 3447
33795 Prestiż
|
Wysłany: 17-12-2008, 20:18 [Construct] Jak zrobić wygaszacz?
|
|
|
Ci, którzy korzystają z Construct, zapewne zauważyli dysfunkcję wbudowanej opcji zapisu dzieła jako wygaszacz. Ale jest na to rada! Częściowa, ale zawsze. Może z początku omówię jej niedoróbki:
- zrobiony tak wygaszacz ma dziwną nazwę w aplecie wyboru wygaszacza w Windows. U mnie była to "3", mimo innej nazwy pliku i gry w ustawieniach.
- podgląd w tymże aplecie źle działa (włącza wygaszacz, zamiast robić jego mały podgląd).
Jeśli nie jest to dla Ciebie przeszkoda (chyba nie?), to metoda jest prosta:
1. Przygotuj plik wygaszacza i otwórz go.
2. W panelu po prawej (Layout Properties) wybierz Application Properties. W kategorii Runtime Properties zaznacz opcję Fullscreen (pełny ekran) i wybierz rozdzielczość przez Window Width/Height. Najlepiej 1024x768 - to najpopularniejsza rozdzielczość. Jeśli pole gry będzie mniejsze, to dookoła będzie czarna ramka. Jeśli chcesz, żeby wygaszacz operował na całym ekranie, to musisz albo rozciągnąć pole, albo zmniejszyć rozdzielczość do jego rozmiarów.
3. Wygaszacz powinien znikać. Dodaj do programu nowy obiekt, Mouse & Keyboard. Przejdź do edytora zdarzeń (Event Sheet Editor) i...
4. Dodaj zdarzenie ustawiające na starcie dwie zmienne, nazwijmy je xmouse i ymouse, na pozycję X,Y myszy poprzez MouseKeyboard.AbsMouseX i MouseKeyboard.AbsMouseY. Nie stosuj wbudowanych w Construct wartości pozycji myszy, bo pojawią się problemy przy zmianie rozdzielczości. Te akcje zabezpieczą wygaszacz przed zniknięciem od razu po włączeniu. Warto też na starcie ukryć kursor (MouseKeyboard> Set cursor visible> Invisible).
5. Stwórz zdarzenia z warunkami MouseKeyboard> On any key pressed i On any click (osobne! nie możesz stosować OR, taki dziwny błąd aktualnej wersji), do obu daj akcję System> (Application)> Close. Gdy się coś wciśnie, wygaszacz się wyłączy.
6. Dodaj zdarzenie porównujące (System> (Values)> Compare) pozycję myszy MouseKeyboard.AbsMouseX ze zmienną, która była ustawiana w punkcie 4.: global('xmouse') - sprawdzana ma być ich nierówność. Skopiuj ten warunek dla pozycji Y i wstaw pomiędzy warunki OR. Możesz też zrobić dwa osobne zdarzenia, nie ma to większego znaczenia. Akcja - System> (Application)> Close. Sprawi to, że wygaszacz zniknie, gdy pozycje przed i po się różnią, bo to oznacza ruch myszą.
7. Następnie (niżej) dodaj zdarzenie które zawsze (Always) będzie ustawiało zmienne xmouse, ymouse na pozycję myszy, tj. MouseKeyboard.AbsMouseX i MouseKeyboard.AbsMouseY. To zapewni sens zdarzeniu z punktu 6.
Najlepiej spróbować na przykładzie od Scirra: Plasma Demo. Dla tego przykładu końcowe zdarzenia powinny wyglądać tak.
Ale to nie koniec, przecież zapisywanie jako wygaszacz nie działa! Toteż:
8. Zapisz swoje dzieło normalnie, jak grę.
9. Zmień rozszerzenie pliku z .exe na .scr.
Voilà! |
|