Wszystkie przykłady
Ustawianie rozdzielczości w projektach wieloplikowych
| Pobierz pliki |
DisplayModeExample_1.zip
- Opis:
- Pliki źródłowe do tego przykładu
- Rozmiar:
- 86 kB
- Wymagania:
- Director MX
DisplayMode Xtra
|
W przypadku projektów złożonych z kilku plików .dir (wywoływanych instrukcją
play movie) nie można korzystać z metod
Domyślna oraz
DirectX
xtrasa DisplayMode, gdyż prowadzi to do niekorzystnego przełączania rozdzielczości
w chwilach przechodzenia do innego filmu (pliku .dir) - objawia się to krótkim mignięciem ekranu.
Należy więc użyć metody
WinAPI.
Nie można także korzystać z automatycznego przywracania rozdzielczości w chwili opuszczenia
filmu (opcja
AutoRestore), gdyż również prowadzi to do przełączenia rozdzielczości.
Należy przyjąć zasadę, że rozdzielczość może być ustawiona automatycznie w pierwszym filmie
(plik .dir służący do utworzenia projektora), jednak przywrócenie rozdzielczości
musi nastąpić za pomocą za pomocą funkcji Lingo
RestoreDisplayMode
w każdym miejscu, w którym użytkownik może zamknąć prezentację i wrócić do systemu.
Pokażemy więc, w jaki sposób można to zrealizować. Utworzymy prostą prezentację
złożoną z trzech plików .dir. Pierwszy z nich posłuży do utworzenia projektora,
dwa pozostałe będą wywoływane w trakcie pracy prezentacji. Pomiędzy filmami będzie
można nawigować za pomocą prostych tekstowych przycisków. Zakończyć prezentację
będzie można z każdego filmu, zarówno klikając na przycisk Zakończ, jak i wciskając
klawisz Escape lub kombinację Alt+F4.
W pierwszej fazie utworzymy działającą prezentację bez DisplayMode Xtra, następnie
dodamy xtrasa i zapewnimy poprawną obsługę zmiany rozdzielczości.
Tworzymy plik o nazwie Movie01.dir. Ustawiamy wymiary sceny na 640 x 480.
Umieszczamy na scenie tekst wskazujący, że jest to film nr 1.
Tworzymy globalny skrypt typu
Movie i dodajemy do niego poniższą treść:
on prepareMovie
the centerStage = true
the exitLock = true
the keyDownScript = "gKeyDown()"
end
on gKeyDown
if (the keyCode = 118) and (the optionDown) then
-- Alt + F4
gExit()
end if
if (the keyCode = 53) then
-- Escape
gExit()
end if
end
on gExit
quit
end
Komentarz do powyższego skryptu:
Instrukcja
the centerStage = true zapewnia centrowanie sceny na ekranie,
instrukcja
the exitLock = true blokuje domyślne działanie klawisza Escape
(zamknięcie prezentacji), natomiast
the keyDownScript = "gKeyDown()" sprawia, że
każde naciśnięcie dowolnego klawisza jest przechwytywane przez funkcję
gKeyDown.
W tej funkcji sprawdzamy, czy naciśnięto Alt+F4 lub Esc i jeśli tak, wywołujemy funkcję
gExit. W tej chwili ta funkcja po prostu zamyka prezentację (
quit).
Dodajemy 2 przyciski tekstowe wywołujące
odpowiednio filmy Movie02.dir i Movie03.dir. Np. behavior dodany do przycisku Movie02
w najprostszym przypadku może mieć postać:
on mouseUp me
play movie "Movie02.dir"
end
Dodajemy tekstowy przycisk Exit z następującym behaviorem:
on mouseUp me
gExit()
end
Analogicznie tworzymy pliki Movie02.dir i Movie03.dir zakładając, że z pliku Movie02.dir
można przejść do Movie01.dir i Movie03.dir, a z pliku Movie03.dir - do Movie01.dir i Movie02.dir.
Tworzymy projektor z pliku Movie01.dir i uruchamiamy go. Sprawdzamy poprawność
wywoływania kolejnych filmów i zamknięcie prezentacji. Czas dodać ustawianie
rozdzielczości przy użyciu xtrasa DisplayMode.
Dodajemy DisplayMode Xtra do pliku Movie01.dir. Przyjmujemy następujące ustawienia opcji
w oknie dialogowym:
- Tryb graficzny: 640 x 480 x 32 x 0 (odświeżanie domyślne)
- Ustaw przy starcie: Włączone
- Przywróć przy zakończeniu: Wyłączone
- Tryby alternatywne: nie używane
- Metoda: WinAPI
Jak więc widać, przy starcie filmu zostanie automatycznie ustawiona rozdzielczość
640 x 480 przy użyciu Windows API. W chwili zamykania prezentacji musi być przywrócona
oryginalna rozdzielczość - przy użyciu funkcji
RestoreDisplayMode xtrasa
DisplayMode. W naszym przykładzie wywołanie tej funkcji dodajemy do globalnej funkcji
gExit, która odpowiada za zamknięcie prezentacji. A więc:
on gExit
member("DisplayMode1").RestoreDisplayMode()
quit
end
Podobnie dodajemy DisplayMode Xtra do plików Movie02.dir i Movie03.dir, z jednym wyjątkiem:
opcja
Ustaw przy starcie musi być wyłączona, gdyż w chwili wywoływania tych filmów
rozdzielczość będzie już ustawiona przez Movie01. Jednak ponieważ z tych filmów
można zamknąć całą prezentację, niezbędne jest także dodanie instrukcji
member("DisplayMode1").RestoreDisplayMode() do funkcji
gExit,
identycznie jak w pliku Movie01.dir.
Ponownie tworzymy projektor z Movie01.dir i uruchamiamy go. W chwili startu
projektora zostaje ustawiona rozdzielczość 640 x 480. Wywoływanie kolejnych filmów
nie powoduje żadnego migania ekranu. Zamknięcie projektora w dowolny sposób
przywraca oryginalną rozdzielczość.
Komentarze? -
Wszystkie przykłady