W tym rozdziale:
u Rozszerzenia Fireworks.
u Niestandardowe typy danych.
u Fireworks API.
u Tworzenie poleceń.
W jaki
sposób aplikacja graficzna, taka jak Fireworks, potrafi przetwarzać kody
JavaScriptu? Otóż do Fireworks wbudowany jest interpreter JavaScript 1.4.
JavaScript to internetowy język skryptowy i jako taki doskonale nadaje
się do sterowania narzędziami autorskimi. Fireworks JavaScript API
(application programming interface
- interfejs programowania aplikacji) zawiera bardzo duży zestaw
specjalnych obiektów z właściwościami i metodami
umożliwiającymi sterowanie i modyfikowanie dokumentów Fireworks.
Fireworks API obsługuje statyczne oraz metody i właściwości oparte na kopiach. Statyczna metoda lub właściwość (nazywane również klasami) są związane z samymi obiektami zamiast z kopiami obiektów. Jak wskazuje ich nazwa, metoda lub właściwość oparta na kopii związana jest z kopią obiektu.
Aby dobrze zrozumieć zagadnienia opisywane w tym rozdziale, musisz pamiętać o następujących rzeczach:
u W tym rozdziale opisywane są zaawansowane zagadnienia dotyczące języków HTML i JavaScript. Jeśli dopiero stawiasz pierwsze kroki w JavaScripcie, warto mieć pod ręką inne źródło dotyczącego tego języka. Polecam czwarte wydanie książki Danny'ego Goodmana pt. "JavaScript. Księga Eksperta" opublikowanej przez Wydawnictwo Helion w 2000r.
u W tym rozdziale w opisach określonych elementów Fireworks API trzymałem się pewnych konwencji. Argumenty metod wyróżniane są kursywą, zaś opcjonalne argumenty wpisywane są w nawiasach.
u W związku z tym, że Fireworks API zawiera teraz wiele różnych metod i obiektów, czasami odwoływałem się do dokumentacji technicznej firmy Macromedia zatytułowanej Extending Fireworks, dostępnej na CD-ROM-ie instalacyjnym Fireworks w formacie PDF lub w witrynie Fireworks, pod adresem www.macromedia.com/software/fireworks/extensability.html
Fireworks pracuje z obiektami graficznymi, na przykład maskami oraz określonymi ustawieniami, takimi jak rozdzielczość, które nie są powszechnie obsługiwane przez JavaScript, dlatego potrzebne są pewne standardowe metody formatowania tych danych. Macromedia dostarcza pewnych wskazówek dotyczących formatowania kolorów, URL plików, masek, matryc, punktów, prostokątów i rozdzielczości.
Kolory definiowane są w szesnastkowym modelu RGB (Red - czerwony, Green - zielony i Blue - niebieski), który jest jednym z modeli dostępnych w palecie Color Mixer Fireworks. Jest to standardowy model definiowania kolorów w języku HTML. Wartości kolorów w tym modelu wpisywane są w formacie "#RRGGBB", gdzie każdy z kanałów podawany jest jako liczba szesnastkowa. Przykładowo - czysta czerwień posiada wartość "#FF0000". Dodatkowo w formacie "#RRGGBBAA" zdefiniować można kanał alfa.
|
Jeśli nie zostaną zdefiniowane wartości kanału alfa, Fireworks automatycznie zakłada, że kanał alfa jest kompletnie nieprzezroczysty. Jednolity, czerwony kolor wypełnienia posiadający wartość #FF0000 jest więc interpretowany przez Fireworks tak, jakby miał wartość #FF0000FF. |
|
Fireworks definiuje nazwy plików i ścieżki dostępu w skryptach jako URL plików. Na przykład - ścieżka dostępu do katalogu Commands Fireworks w Windows
C:\Program Files\Macromedia\Fireworks 4\Configuration\Commands
po zapisaniu jako URL pliku, wyglądałaby tak:
file:///C|Program%20Files/Macromedia/Fireworks%204/Configuration/Commands
Zwróć uwagę, że wszystkie lewe ukośniki zostały zastąpione zwykłymi ukośnikami, zaś dwukropek występujący po literze dysku zastąpiono pionową kreską. Spacja zastąpiona została kodem%
W MacOS, ścieżka dostępu do katalogu Commands (przy założeniu, że dysk posiada nazwę Grover) wygląda mniej więcej tak:
Grover:Applications:Macromedia Fireworks 4:Configuration:Commands
Jako URL pliku, ścieżka wyglądałaby następująco:
file:///Grover/Applications/Macromedia%20Fireworks%204/Configuration/Commands
Ponownie spacja została zastąpiona kodem% i użyte zostały zwykłe ukośniki.
|
Przy pisaniu hybrydowych skryptów użyj właściwości platform obiektu fw, aby określić, czy skrypt będzie uruchamiany w Windows czy w MacOS i poprawnie napisz adresy URL plików. |
|
Maski alfa definiowane są za pomocą następujących właściwości:
u maskBounds definiuje prostokąt będący obszarem maski.
u Za pomocą właściwości maskKind określ jeden z pięciu typów maski: rectangle oval zlib compressed rle compressed lub uncompressed
u maskEdgeMode może przyjmować wartości "hard" lub "antialiased"
u Wartość właściwości featherAmount może być liczbą z przedziału od 0 do 1000, która reprezentuje stopień zmiękczania w pikselach. Wartość 0 oznacza brak zmiękczania.
u Dla masek typu rectangle i oval wartość maskData jest ignorowana. Dla innych typów masek, właściwość maskData powinna zawierać 8-bitowe dane maski podawane w formacie szesnastkowym.
Maska jest definiowana w formacie .
W programowaniu, grafika komputerowa jest opisywana z wykorzystaniem macierzy o wymiarach 3 3 nazywanej matrycą. W Fireworks, format matrycy jest następujący:
. I tak przy korzystaniu z narzędzia Pen (Pióro) położenie pierwszego punktu wyrażone zostałoby następująco:
fw.getDocumentDOM().addNewSinglePointPath(
,,true
W tym przykładzie współrzędne wszystkich trzech punktów są takie same i opisują odpowiednio pierwszy uchwyt kontrolny Béziera, właściwy punkt i drugi uchwyt kontrolny.
|
W powyższym przykładzie i pozostałych podrozdziałach książki, wyrażenie fw.getDocumentDOM() jest używane jako odwołanie do aktywnego dokumentu Fireworks. |
|
Prostokąty są definiowane w formacie . Jeżeli narysujesz na przykład prostokąt o wymiarach 50 50 pikseli, kod opisujący początkowy, lewy górny wierzchołek kształtu wyglądałby tak:
fw.getDocumentDOM().addNewRectangle( )
Rozdzielczość jest definiowana w Fireworks w następującym formacie
Globalne metody są zawsze dostępne dla wszystkich skryptów Fireworks. Interaktywne funkcje są bardzo pomocne przy usuwaniu błędów kodu i dostarczaniu wskazówek dla użytkownika. Dla operacji eksportu dostępne są tylko dwie funkcje umożliwiające generowanie plików: WRITE_HTML() i write
Metoda alert() wyświetla proste okno dialogowe (rysunek 26.1) z tytułem, komunikatem i przyciskiem OK. Komunikat może być łańcuchem tekstowym, zawartością zmiennej lub wynikiem wyrażenia JavaScriptu. Okno dialogowe alert() musi być usunięte, zanim użytkownik będzie mógł kontynuować pracę (taki typ okna nazywany jest modalnym).
Rysunek 26.1. Metoda alert() jest prostym sposobem dostarczania użytkownikom dowolnych informacji |
|
Poniższy kod informuje użytkownika o zakończeniu operacji przetwarzania wsadowego:
alert("Ukończone!")
Metoda confirm() wyświetla łańcuch tekstowy w modalnym oknie dialogowym, a następnie oczekuje, aż użytkownik kliknie przycisk OK lub Cancel (rysunek 26.2). Wartość zwracana funkcji to prawda, gdy użytkownik kliknie przycisk OK i fałsz po kliknięciu przycisku Cancel
Rysunek 26.2. Użyj metody confirm(), aby uzyskać od użytkownika potwierdzenie w czasie operacji eksportu lub przetwarzania wsadowego |
|
Poniższy kod pyta użytkownika, czy jest gotów przeprowadzić określoną operację. Jeśli nie, operacja zostanie przerwana:
function doConfirm(curBeh)
Metoda prompt() umożliwia użytkownikowi wpisywanie w modalnym oknie dialogowym (rysunek 26.3) informacji, które mogą być dodawane do kodów JavaScript lub HTML. Okno dialogowe prompt() składa się z pola tekstowego (wartość domyślna) oraz przycisków OK i Cancel. Po kliknięciu przycisku OK zwracana jest zawartość pola tekstowego, w przeciwnym wypadku zwracane jest zero.
Rysunek 26.3. W oknie dialogowym otwieranym za pomocą metody prompt() użytkownik może wpisać łańcuch tekstowy |
|
Poniższy kod umożliwia użytkownikowi wybranie nazwy bazowej plastrów w czasie pracy skryptu:
function getName()
|
Obecnie metoda prompt() jest jedynym mechanizmem umożliwiającym programistom, rozszerzającym możliwości Fireworks, gromadzenie parametrów od użytkownika. Niektórzy autorzy rozszerzeń do pobierania danych od użytkownika używają wielu metod prompt lub jednej, zawierającej wartości oddzielane od siebie przecinkami. Jednym z bardziej zaawansowanych zastosowań jest otwarcie formularza parametrów Dreamweavera i wykorzystanie ich do uruchomienia polecenia Fireworks. |
|
Metoda WRITE_HTML() przekształca wszystkie
argumenty na łańcuchy i generuje łańcuch tekstowy w
aktualnie eksportowanym pliku HTML. Metoda ta dostępna jest jedynie w trakcie eksportu. Wszystkie argumenty
są zapisywane jeden po drugim, co umożliwia łatwe
łączenie tekstu i wartości. Aby utworzyć znak końca
wiersza, użyj wyrażenia \n, które jest
automatycznie przekształcane na znak Carriage Return Line Feed (CR LF) dla
Windows i Carriage
Return dla systemów MacOS.
Cudzysłowy mogą być eliminowane poprzez poprzedzanie ich lewymi
ukośnikami. Interpretowane są wówczas jako części
łańcucha, a nie jako cudzysłowy.
Poniższy kod zapisuje znacznik <title> w pliku HTML z wykorzystaniem nazwy pliku oraz pierwszego znacznika <meta>
WRITE_HTML("<title>", exportDoc.filename, "</title>\n")
WRITE_HTML("<meta name=\"description\" content==\"Fireworks Splice HTML \">\n"
Jeżeli nazwą pliku byłoby Muzeum, kod wyglądałby następująco:
<title>Muzeum</title>
<meta name="description " content="Fireworks Splice HTML">
Metoda write() działa dokładnie tak samo, jak metoda WRITE_HTML(). Macromedia zaleca stosowanie metody WRITE_HTML() zamiast write(), aby zapobiec sytuacji, w której programista pomyli ją z metodą JavaScriptu - document.write
Obiekty globalne Fireworks umożliwiają zarządzanie plikami, inicjowanie operacji "znajdź i zamień", generowanie raportów o błędach w zlokalizowanym języku oraz dostarczanie prawie wszystkich informacji o ustawieniach dokumentów lub bieżącej aplikacji. Kluczowym obiektem globalnym jest fireworks , czyli w skrócie fw (zauważ, że pisany małymi literami). Globalne obiekty oraz związane z nimi metody i właściwości są szczególnie przydatne przy tworzeniu poleceń, szablonów i skryptletó 22322h79w w.
|
W poprzednich wersjach, głównym obiektem globalnym był obiekt App. Fireworks 4 wciąż obsługuje obiekt App, dla zachowania zgodności, ale nie powinien być on już używany. |
fwObiekt fw daje dostęp do informacji o aplikacji Fireworks zainstalowanej w systemie użytkownika. Poprzez obiekt fw programiści mogą określać wersję systemu operacyjnego, położenia określonych katalogów, takich jak Commands i Templates, typy aktualnie otwartych plików oraz wiele innych danych. Dwie najbardziej przydatne metody obiektu fw to getPref() i setPref(). Za ich pomocą możesz sterować każdym elementem interfejsu Fireworks, jego ustawieniami i opcjami przywracania. WłaściwościWiększość właściwości obiektu fw jest przeznaczonych tylko do odczytu (możesz je pobierać, ale nie możesz ich ustawiać). Wyjątkami są metody batchStatusString, dismissDialogWhenDone, progressCountCurrent oraz progressCountTotal appBatchCodeDirWartością zwracaną jest ścieżka dostępu do katalogu Batch Code appDirWartością zwracaną jest ścieżka dostępu do katalogu aplikacji Fireworks. appExportSettingsDirWartością zwracaną jest ścieżka dostępu do katalogu Export Settings. appFavoritesDirWartością zwracaną jest ścieżka dostępu do katalogu URL Libraries. appHelpDirWartością zwracaną jest ścieżka dostępu do katalogu Help. appHtmlCodeDirWartością zwracaną jest ścieżka dostępu do katalogu HTML Code. appJsCommandsDirWartością zwracaną jest ścieżka dostępu do katalogu Commands. appJsExtensionsDirWartością zwracaną jest ścieżka dostępu do katalogu JSExtensions. appMacCreatorMacintosh identyfikuje aplikację otwierającą dany plik za pomocą jego kodu Creator. W MacOS właściwość appMacCreator zwraca dla Fireworks kod Creator MKBY appMacJsfFileTypeMac identyfikuje typ pliku określonego dokumentu za pomocą wbudowanego kodu File Type (Typ pliku). W systemach MacOS kodem File Type plików tekstowych jest TEXT. Polecenia i skryptlety Fireworks są plikami tekstowymi, więc właściwość appMacJsfFileType zwraca łańcuch TEXT appPatternsDirWartością zwracaną jest ścieżka dostępu do katalogu Patterns. appPresetsDirWartością zwracaną jest ścieżka dostępu do katalogu Presets. appSettingsDirWartością zwracaną jest ścieżka dostępu do katalogu Settings. appStylesDirWartością zwracaną jest ścieżka dostępu do katalogu Styles. appSymbolLibrariesDirWartością zwracaną jest ścieżka dostępu do katalogu Libraries. appTexturesDirWartością zwracaną jest ścieżka dostępu do katalogu Textures. appXtrasDirWartością zwracaną jest ścieżka dostępu do katalogu Xtras. batchStatusStringWłaściwość batchStatusString (która jest tylko do odczytu) jest używana do wyświetlania bieżącego łańcucha w oknie dialogowym Batch Progress. Możesz ustawić nowy komunikat wyświetlany w tym oknie poprzez ustawienie wartości na żądany łańcuch. Poniższy kod zapisany w pliku BatchTemplate.jst wyświetla nazwę każdego przetwarzanego pliku: fw.batchStatusString = Files.getFilename(sourceDocumentPath) dismissBatchDialogWhenDonePrzy wyświetlaniu okna dialogowego Batch Progress możesz je automatycznie opuszczać poprzez ustawienie właściwości dismissBatchDialogWhenDone (która oczywiście nie jest tylko do odczytu) na TRUE, jak w poniższym przykładzie: fw.dismissBatchDialogWhenDone = true; documentListWłaściwość documentList zwraca za pomocą obiektu Document tablicę, zawierającą wszystkie dokumenty aktualnie otwarte w Fireworks. Poniższy kod najpierw uaktywnia pierwszy dokument Fireworks, a następnie przenosi go na wierzch, umożliwiając jego edycję: var editFirst = fw.documentList [0 ].makeActive platformWłaściwość platform zwraca win, jeśli Fireworks jest uruchomiony w Windows i mac, jeśli jest uruchomiony w MacOS. progressCountCurrentW czasie operacji przetwarzania wsadowego, okno dialogowe informuje o ilości przetworzonych plików, wyświetlając tekst typu "1 of 6 files processed" ("Przetworzono 1 z 6 plików"). Właściwość progressCountCurrent (która nie jest tylko do odczytu) jest odpowiedzialna za pierwszą liczbę wyświetlaną w tym oknie dialogowym. Używana jest w pętli zwiększającej liczbę o jeden po każdym zakończeniu przetwarzania pliku. progressCountTotalWłaściwość progressCountTotal jest odpowiedzialna za drugą liczbę wyświetlaną w oknie dialogowym Batch Progress, czyli całkowitą liczbę plików do przetworzenia. Wartość tej właściwości może być ustawiana dla liczby dokumentów wybieranych w oknie dialogowym wyświetlanym na początku operacji przetwarzania wsadowego. Taką listę plików zwraca właściwość chooseScriptTargetDialog(). Aby zatem zdefiniować całkowitą liczbę plików do przetworzenia, możesz użyć następującego kodu: var theDocList = fw.chooseScriptTargetDialog(PNG) fw.progressCountTotal = theDocList.length; MetodyWszystkie funkcje związane z obiektem fw są bardzo przydatne. Za ich pomocą możesz otworzyć określony plik, zmienić dowolną preferencję Fireworks lub nawet zamknąć program.
chooseScriptTargetDialog(listaFormatów)Podobnie jak locateDocDialog(), metoda chooseScriptTargetDialog() wyświetla okno dialogowe, w którym użytkownik może wybrać pliki, które mają być przetwarzane. W przeciwieństwie do locateDocDialog(), w tej metodzie jako argument wymagana jest lista formatów i nie trzeba definiować maksymalnej liczy dokumentów. W poniższym przykładzie lista formatów została ograniczona do plików TIFF: var theFiles = fw.chooseScriptTargetDialogů ("kMoaCfFormat_TIFF")
findOpenDocument(ścieżkaDostępu)Metoda findOpenDocument() sprawdza, czy w oknie dokumentu Fireworks otwarty jest dokument o określonej ścieżce dostępu. Jeśli tak, zwracany jest obiekt Document. Jeśli nie, zwracane jest zero. Przeważnie metoda findOpenDocument() pobiera argument ścieżki dostępu z tablicy nazw plików, jak w poniższym przykładzie: theDocList = fw.chooseScriptTargetDialog(fw.getPref("PNG")) for (var i = 0; i < theDocList.length; i++) getPref(nazwaPreferencji) i setPref(nazwaPreferencji, wartośćPreferencji)Metody getPref() i setPref() pozwalają odczytywać (i zmieniać) ustawienia prawie wszystkich preferencji Fireworks. Możliwości oferowane przez te dwie metody są naprawdę duże - od zmiany domyślnego koloru wypełnienia po modyfikacje współrzędnych x i y wyświetlanych w oknie dialogowym Edit Gradient Argumenty prefname (nazwaPreferencji) i prefval (wartośćPreferencji) są słowami kluczowymi zawartymi w pliku Fireworks 4 Preferences.
locateDocDialog(maksymalnaLiczbaDokumentów [, listaFormatów])Metoda locateDocDialog() wyświetla okno dialogowe (rysunek 26.4) umożliwiające użytkownikowi wybranie jednego lub więcej plików.
Argument maksymalnaLiczbaPlików mówi Fireworks, czy użyć standardowego okna dialogowego Open do otwarcia pojedynczego pliku, czy też okna Open Multiple Files do załadowania więcej niż jednego pliku. Użyj wartości 1, 0 lub -1, aby otworzyć okno dialogowe Open, lub dowolnej wartości większej od 1, aby otworzyć okno dialogowe Open Multiple Files. Liczba wykorzystana jako argument nie ogranicza ilości plików, które mogą być otwierane. Argument listaFormatów jest opcjonalną listą typów plików, które mogą być otwierane w Fireworks. Jeśli argument ten zostanie pominięty, w oknie dialogowym wyświetlane będą wszystkie pliki. Argument listaFormatów podawany jest w formie tablicy. Aby na przykład zdefiniować formaty PNG i TIFF dla okna dialogowego Open, użyj następującego kodu: var formats = [ "PNG", "kMoaCfFormat_TIFF" ]; var theFiles = fw.locateDocDialog(1, formats) for (f in theFiles)
Metoda locateDocDialog() zwraca tablicę nazw plików lub - jeśli okno dialogowe zostanie anulowane - zero.
W tabeli 26.1 znajdziesz wszystkie argumenty listy formatów Tabela 26.1. Argumenty listy formatów
openDocument (ścieżkaDostępu[, otwórzJakoBezTytułu])Metoda openDocument() otwiera plik znajdujący się w lokalizacji definiowanej argumentem ścieżkaDostępu. Metoda ta otwiera kolejną kopię aktualnie otwartego pliku, zatem metoda openDocument() najczęściej jest stosowana w połączeniu z metodą findOpenDocument().. Jeżeli plik nie może zostać otwarty, openDocument() zwraca zero. Jeżeli opcjonalny argument otwórzJakoBezTytułu jest ustawiony na TRUE, dokument jest otwierany w nowym oknie bez tytułu. quit()Metoda quit() zamyka Fireworks. Jeśli nie ma otwartych żadnych dokumentów, które zostały zmodyfikowane i nie były zapisane, nie jest wyświetlane żadne potwierdzenie zamknięcia programu. Wykorzystując metodę confirm() możesz jednak utworzyć własne okno potwierdzenia: if (confirm("Na pewno chcesz wyjść?")) Obiekt DocumentObiekt Document w Fireworks podobny jest do obiektu Document używanego w JavaScript. Oba umożliwiają precyzyjne sterowanie dokumentami. Obiekt Document Fireworks jest wykorzystywany do definiowania parametrów eksportu oraz o wiele prostszych ustawień, takich jak opcje operacji "znajdź i zamień". Ponieważ w większości przypadków obiekt ten występuje w połączeniu z konkretnym dokumentem nie posiada żadnych statycznych właściwości, ma tylko dwie statyczne metody: findExportFormatOptionsByName() i makeGoodNativeFilePath WłaściwościObiekt Document posiada wiele właściwości umożliwiających określanie, czy plik jest otwarty, czy został zmodyfikowany, pobieranie nazwy aktualnie otwartego pliku i wiele innych operacji. Wszystkie właściwości obiektu Document dotyczą określonych dokumentów, więc muszą być związane z określoną kopią obiektu Document, a nie z samym obiektem. Aby pobrać kopię obiektu Document, użyj następującego kodu wykorzystującego funkcję getDocumentDOM var theDoc = fw.getDocumentDOM Teraz właściwości bieżącego dokumentu będą już dostępne. Aby na przykład ustawić bieżący kolor tła, użyj następujących wyrażeń: var theDoc = fw.getDocumentDOM alert(theDoc.backgroundColor) backgroundColorWłaściwość koloru tła dokumentu. backgroundUrlWzględny lub absolutny URL przydzielony do łącza tła. brushesWłaściwość brushes jest tylko do odczytu i zawiera tablicę obiektów Brush (pędzle) dostępnych w bieżącym dokumencie. Obiekt Brush posiada właściwości, takie jak antiAliased diameter i flowRate umożliwiające sterowanie parametrami obrysów używanych w dokumencie. Kompletną listę wszystkich właściwości i wartości obiektu Brush znajdziesz w dokumentacji Extending Fireworks. currentFrameNumAktualnie zaznaczona klatka w palecie Frames currentLayerNumAktualnie zaznaczona warstwa w palecie Layers defaultAltTextDomyślny tekst zastępczy, jeśli nie został określony żaden inny dla pojedynczego lub plastrowanego obrazka. exportFormatOptionsIdentyczna jak właściwość exportOptions (opisywana poniżej). Została zachowana, aby zapewnić zgodność ze skryptami Fireworks 2. exportOptionsMimo że ważne są wszystkie właściwości wszystkich obiektów, najbardziej złożoną i najprawdopodobniej najczęściej stosowaną właściwością obiektu Document jest exportOptions. Właściwość ta zwraca obiekt zawierający bieżące ustawienia eksportu. Większość ustawień eksportu wyrażanych jest za pomocą wartości liczbowych zamiast łańcuchów. Na przykład poniższy kod var theFormat = theDoc.exportOptions.exportFormat zwraca 0, jeśli formatem pliku jest GIF, lub 1, jeśli formatem tym jest JPEG. Kilka ustawień: paletteInfo paletteEnries i frameInfo wyrażanych jest za pomocą tablic. W tabeli 26.2 znajduje się szczegółowa lista ustawień właściwości exportOptions Tabela 26.2. Ustawienia właściwości exportOptions
Tabela 26.2. Ustawienia właściwości exportOptions (ciąg dalszy)
Ustawienia useScale i applyScale obiektu Document są uzależnione od siebie przy definiowaniu stosowanej metody skalowania. Przy jej określaniu obowiązują następujące zasady: u Jeśli useScale i applyScale wynoszą FALSE, przy eksporcie nie jest wykonywane żadne skalowanie. u Jeśli useScale wynosi TRUE, niezależnie od ustawienia applyScale stosowana jest percentScale u Jeśli useScale wynosi FALSE, zaś applyScale wynosi TRUE, do definiowania skali używane są właściwości xSize i ySize u Jeśli wartość jest dodatnia, wykorzystywana jest do definiowania współrzędnych na osi x lub y. u Jeśli wartość wynosi 0, współrzędne x i y mogą się zmieniać bez ograniczeń. u Jeśli wartość jest ujemna, współrzędne x i y mogą się zmieniać, ale nie mogą być większe niż wartość bezwzględna określonej liczby. Pamiętaj, że jeśli jedna liczba jest dodatnia a druga ujemna, zawsze używana jest wartość dodatnia. ExportSettingsObiekt ExportSettings posiada właściwości, takie jak htmlDestination "same" one up" "custom" "clipboard") i shimGeneration "none" "transparent" "internal" "nested tables" Kompletną listę właściwości i wartości związanych z obiektem ExportSettings znajdziesz w dokumentacji technicznej Extending Fireworks. filePathForRevertWłaściwość filePathForRevert zwraca ścieżkę dostępu, którą może odczytać polecenie Revert (Przywróć). Innymi słowy, zwracana jest ścieżka dostępu do pliku otwartego przy tworzeniu dokumentu. Stosuj filePathForRevert do determinowania oryginalnej ścieżki dostępu dla plików nie będących plikami źródłowymi Fireworks oraz dokumentów otwieranych jako "Bez tytułu". Właściwość ta zwraca zero, jeśli dokument jest nowo utworzony i nie można go odczytać z pliku. filePathForSaveWłaściwość filePathForSave jest używana do odnajdywania i ustawiania nazwy pliku bieżącego dokumentu. Właściwość ta jest niezbędna do tworzenia zapasowych kopii plików. Jeżeli plik nie został zapisany, zwracane jest zero. Poniższy kod używa właściwości filePathForSave do przechowania nazwy pliku do późniejszego wykorzystania w trakcie operacji tworzenia kopii zapasowych: function saveName(theDoc) fillsWłaściwość fills jest tylko do odczytu i zawiera tablicę obiektów Fill dostępnych w bieżącym dokumencie. Obiekt Fill posiada właściwości takie jak gradient i pattern. Kompletną listę właściwości i wartości obiektu Fill znajdziesz w dokumentacji Extending Fireworks. frameCountLiczba klatek w dokumencie. frameLoopingCountMożliwe wartości właściwości frameLoopingCount to: u 0: Ciągłe zapętlanie; u 1: Nie zapętlaj (odtwórz tylko raz); u 2 lub więcej: Zapętlaj zdefiniowaną liczbę razy; framesWłaściwość frames jest tylko do odczytu i jest tablicą zawierającą obiekty Frames znajdujące się w dokumencie. Obiekt Frame posiada właściwości takie jak layers i delay. Kompletną listę właściwości i wartości obiektu Frame znajdziesz w dokumentacji Extending Fireworks. gammaPreviewWłaściwość gammaPreview może być ustawiana na TRUE lub FALSE. W systemach Windows TRUE oznacza, że włączona jest opcja View Macintosh Gamma. W MacOS TRUE oznacza, że włączona jest opcja View Windows Gamma gradientsWłaściwość gradients jest przeznaczoną tylko do odczytu tablicą zawierającą obiekty Gradient dostępne w bieżącym dokumencie. Kompletną listę właściwości i wartości obiektu Gradient znajdziesz w dokumentacji Extending Fireworks. gridColorKolor, w jakim wyświetlana jest siatka dokumentu, który można ustawiać również w oknie dialogowym Grid gridOriginPunkt definiujący początek siatki. Początek siatki może być również ustawiany poprzez przeciąganie punktu przecięcia linijki poziomej z pionową. gridSizeOdległości pomiędzy poziomymi i pionowymi liniami siatki dokumentu. Odległości poziome definiowane są właściwością gridSize.x, zaś pionowe - właściwością gridSize.y guidesWłaściwość guides jest tylko do odczytu i jest związana z obiektem Guides, posiadającym właściwości, takie jak color i locked. Kompletną listę właściwości i wartości obiektu Guides znajdziesz w dokumentacji Extending Fireworks. heightWysokość dokumentu, mierzona w pikselach. isDirtyCzęsto przed wykonaniem operacji na plikach konieczne jest określenie, czy pliki te zostały zmodyfikowane. Właściwość isDirty zwraca TRUE, jeśli dokument został zmodyfikowany od ostatniego zapisu lub nie został w ogóle zapisany. W przeciwnym wypadku, zwracane jest FALSE isPaintModeWłaściwość tylko do odczytu, która zwraca TRUE, jeśli dokument jest w edycji trybu malowania; w przeciwnym wypadku, zwracane jest FALSE isSymbolDocumentWłaściwość tylko do odczytu, która zwraca TRUE, jeśli dokument jest symbolem graficznym lub symbolem przycisku. W przeciwnym wypadku zwracane jest FALSE. Okno edycji symbolu jest dokumentem jak każdy inny. isValidWłaściwość isValid zwraca TRUE, jeśli bieżący dokument jest nadal otwarty, lub FALSE jeśli został zamknięty lastExportDirectoryDocelowy katalog ostatniej operacji eksportu, wyrażany jako URL pliku. lastExportFileDocelowy plik ostatniej operacji eksportu, wyrażany jako URL pliku. layersWłaściwość tylko do odczytu będąca tablicą zawierającą obiekty Layer znajdujące się w dokumencie. Właściwości obiektu Layer to sharing i layerType. Kompletną listę właściwości i wartości obiektu layer znajdziesz w dokumentacji Extending Fireworks. leftWłaściwość left jest podawaną w pikselach wartością określającą odległość najdalej wysuniętego obiektu dokumentu od lewej krawędzi obszaru roboczego. mapTypeTyp mapy obrazka tworzonej przez dokument. Możliwe wartości to client server lub obie naraz. matteColorWartość koloru Matte w dokumencie, która może być definiowana także w palecie Optimize onionSkinAfterLiczba klatek znajdujących się po bieżącej klatce, które mogą być wyświetlane w technice "onion skinning". Wartość ta może być definiowana również w oknie dialogowym Onion Skinning, dostępnym z poziomu palety Frames onionSkinBeforeLiczba klatek znajdujących się przed bieżącą klatką, które mogą być wyświetlone w technice "onion skinning". pathAttributesWłaściwość związana z obiektem PathAttrs, o właściwościach takich jak brush i fill. Kompletną listę właściwości i wartości obiektu znajdziesz w dokumentacji Extending Fireworks. pngTextWłaściwość pngText jest tekstem znajdującym się w obiekcie Fireworks. resolutionUstawienia rozdzielczości drukowania dokumentu. Wartości tej właściwości należą do przedziału od 1 do 5000. resolutionUnitsJednostka miary ustawień rozdzielczości drukowania dokumentu (właściwości resolution). Jednostkami tymi mogą być cale lub centymetry, oznaczane odpowiednio "inch" i "cm" texturesWłaściwość textures jest przeznaczoną tylko do odczytu tablicą obiektów Texture dostępnych w bieżącym dokumencie. Obiekt Texture posiada jedną właściwość tylko do odczytu - name - zawierającą nazwę tekstury. topWłaściwość określająca odległość najwyżej położonego obiektu od górnej krawędzi dokumentu. useMatteColorMoże wynosić TRUE lub FALSE. Jeśli wynosi TRUE, przy eksportowaniu używany jest kolor Matte zdefiniowany w palecie Optimize lub za pomocą właściwości matteColor widthMierzona w pikselach szerokość dokumentu. MetodyMetody obiektu Document pozwalają użytkownikowi na wykonywanie wielu przydatnych operacji. Za ich pomocą można uaktywniać, zapisywać, zamykać pliki i wykonywać wiele innych zadań. Metody findExportFormatOptions() i makeGoodNativeFilePath() są statyczne, zaś wszystkie pozostałe są oparte na kopiach. exportTo(ścieżkaDostępu [, opcjeEksportu])Operacje eksportu obsługiwane są przez metodę exportTo(). Argument ścieżkaDostępu jest obowiązkowy, zaś jeśli pominiesz argument opcjeEksportu, użyte zostaną bieżące ustawienia eksportu. Jeżeli opcjeEksportu zostaną zdefiniowane, ich wykorzystanie nie będzie miało żadnego wpływu na właściwość dokumentu - exportOptions. Jeśli metoda exportTo() zakończy się powodzeniem, zwracane jest TRUE findExportFormatOptionsByName(nazwa)Statyczna metoda, używana w celu uzyskania dostępu do wbudowanych ustawień eksportu. Jeśli ustawienie posiada określoną nazwę, zwracany jest obiekt Document z takimi samymi ustawieniami, jakie ma właściwość exportOptions. Jeśli nie ma ustawień o podanej nazwie, zwracane jest zero. makeActive()Metodę makeActive() można wykorzystać do uaktywniania dokumentów w Fireworks. Aktywny dokument jest następnie przenoszony na wierzch wszystkich pozostałych dokumentów. makeGoodNativeFilePath(ścieżkaDostępu)Statyczna metoda makeGoodNativeFilePath pozwala upewnić się, czy podana ścieżka dostępu kończy się właściwym rozszerzeniem pliku, czyli .png. Po zastosowaniu tej metody, wszystkie rozszerzenia plików zamieniane są na .png. Poniższy kod, jako wynik wszystkich wyrażeń, zwraca jedną ścieżkę dostępu - "file:///images/logo.png": var theFile = ů Document.makeGoodNativeFilePath("file:///images/logo.ping") var theFile = ů Document.makeGoodNativeFilePath("file:///images/logo.bmp") var theFile = ů Document.makeGoodNativeFilePath("file:///images/logo") save([gotoweAbyZapisaćJako])Metoda save() jest wykorzystywana do zapisywania dokumentów w lokalizacjach domyślnych. Jeśli opcjonalny argument gotoweAbyZapisaćJako wynosi TRUE, użytkownik zostanie poproszony o podanie lokalizacji pliku, jeżeli zapisuje go po raz pierwszy. Jeśli argument gotoweAbyZapisaćJako wynosi FALSE i plik nie został jeszcze nigdy zapisany, operacja zakończy się niepowodzeniem i zwrócone zostanie FALSE. Po poprawnym zapisaniu pliku, znacznik dokumentu jest usuwany. Metoda save() zwraca TRUE, jeśli operacja zapisu zakończy się powodzeniem i FALSE w przeciwnym przypadku.
saveCopyAs(pathname)Aby zapisać kopię bieżącego dokumentu, możesz użyć metody saveCopyAs(). Musi zostać użyta pełna ścieżka dostępu do pliku, na przykład "file:///images/logo.png". Za pomocą tej metody nie są modyfikowane właściwości filePathForSave i isDirty BłędyFireworks API zawiera obiekt Errors informujący użytkownika o błędach występujących w jego kodach. Każda z właściwości obiektu Errors zwraca łańcuch w zlokalizowanym języku programu. Na przykład kod: var theError = Errors.EFileIsReadOnly; zwraca tekst w języku angielskim: "File is locked" (Plik jest zablokowany). W tabeli 26.3 znajdziesz wszystkie właściwości obiektu Errors i generowane przez nie komunikaty w języku angielskim. Tabela 26.3. Właściwości obiektu Errors
Tabela 26.3. Właściwości obiektu Errors (ciąg dalszy)
Obiekt FindW Fireworks API istnieje osobny obiekt Find, który umożliwia uruchamianie operacji "znajdź i zamień". Aby połączyć obiekt Find z określonym dokumentem, użyj metody MakeFind(), aby utworzyć obiekt Find i zdefiniować jego kryteria. Podobnie jak funkcja "znajdź i zamień" w Fireworks umożliwia wyszukiwanie bardzo różnych elementów, takich jak tekst, czcionka, kolor i URL, argument findParms pozwala pobierać tabele w czterech różnych formatach. Na przykład, operacja "znajdź i zamień" poszukująca skrótu "FW" z użyciem opcji Whole Word (Całe wyrazy) i zamieniająca go na "Fireworks" jest definiowana za pomocą następującego kodu: var findParms = ; var theFinder = Document.makeFind(findParms) Zwróć uwagę na wykorzystanie cudzysłowów i nawiasów do określania parametrów. W zależności od typu operacji "znajdź i zamień", dostępne są różne właściwości obiektu Find, określane za pomocą metody whatToFind(). W tabeli 23.4 znajduje się szczegółowy opis czterech typów parametrów obiektu Find text (tekst), font (czcionka), color (kolor) i url (URL).
Obiekt FilesObiekt Files jest ważnym obiektem Fireworks API, który zawiera ponad 20 funkcji umożliwiających wykonywanie większości operacji na plikach. Wszystkie metody obiektu Files, z wyjątkiem close readline() i write(), są statyczne i muszą być wywoływane bezpośrednio z obiektu Files. Z obiektem Files nie są związane żadne właściwości. Tabela 26.4. Właściwości i metody obiektu Find
close()Jak można wywnioskować z jej nazwy, metoda close() zamyka pliki. Nie jest ona niezbędna - wszystkie pliki otwarte lub utworzone za pomocą obiektu File są zamykane po zakończeniu wykonywania skryptu - ale umożliwia sterowanie dostępem do plików za pomocą skryptów. copy(źródłowaŚcieżkaDostępu, docelowaŚcieżkaDostępu)Użyj metody copy(), aby szybko skopiować plik do innej lokalizacji (a nawet na inny dysk). Funkcja ta kończy się niepowodzeniem, gdy nazwa pliku zdefiniowana w argumencie docelowaŚcieżkaDostępu już istnieje. Innymi słowy - copy() nie potrafi nadpisywać plików. Za pomocą tej funkcji nie można także kopiować całych katalogów. createDirectory(ścieżkaDostępu)Rzadko w trakcie przetwarzania wsadowego występuje potrzeba utworzenia nowego katalogu, ale można wykonać takie zadanie za pomocą metody createDirectory(). Jeśli katalog zostanie utworzony, metoda zwraca TRUE, jeśli nie - FALSE createFile(ścieżkaDostępu[, mactype [, maccreator]])Użyj metody createFile(), aby utworzyć nowy plik dowolnego typu. Jeśli plik o podanej nazwie już istnieje, metoda zakończy się niepowodzeniem. Argumenty mactype (typ pliku) i maccreator (związana z plikiem aplikacja) są niezbędne do poprawnego tworzenia plików w systemach MacOS.
deleteFile(ścieżkaDostępu)Metoda deleteFile() służy do usuwania plików lub całych katalogów. Jeśli zostanie z powodzeniem wykonana, zwrócone będzie TRUE FALSE zwracane jest w przypadku, gdy ścieżka dostępu, podana jako argument metody, nie istnieje lub plik albo katalog nie może zostać usunięty. deleteFileIfExisting(ścieżkaDostępu)Zamiast przed usunięciem pliku uruchamiać specjalną funkcję sprawdzającą, czy ten plik istnieje, możesz użyć metody deleteFileIfExisting TRUE jest zwracane zarówno po usunięciu pliku, jak i w przypadku, gdy nie istnieje podana ścieżka dostępu do pliku. FALSE zwracane jest tylko w przypadku, gdy metoda nie może usunąć odnalezionego pliku. enumFiles(ścieżkaDostępu)Metoda enumFiles() zwraca tablicę ścieżek dostępu wszystkich plików zdefiniowanych w argumencie. Argument ścieżkaDostępu nie powinien być jednak wskaźnikiem do pliku. Jeżeli tak będzie, metoda enumFiles() zwróci tylko jedną ścieżkę dostępu. exists(ścieżkaDostępu)Za pomocą metody exists() możesz sprawdzać, czy istnieje określony plik lub katalog. FALSE jest zwracane jedynie w przypadku, gdy plik lub katalog nie istnieje albo podana ścieżka dostępu jest nieprawidłowa. getDirectory(ścieżkaDostępu)Metody getDirectory() możesz użyć do odczytania ze ścieżki dostępu jedynie nazwy katalogu. Na przykład - poniższy kod zwraca file:///images/winter var theFolderName =ů Files.getDirectory("file:///images/winter/seasonal.png") getExtension(nazwaPliku)Metoda getExtension() służy do odczytywania rozszerzeń plików. Jeżeli w nazwie pliku nie ma rozszerzenia, zwracany jest pusty łańcuch. Poniższy kod zwraca łańcuch ".png": var theExt = Files.getExtension("logo.png ") getFilename(ścieżkaDostępu)Odpowiednikiem funkcji getDirectory() pracującym z plikami jest funkcja getFilename(), która wydobywa z pełnej ścieżki dostępu jedynie nazwę pliku. Poniższy kod zwraca łańcuch seasonal.png var theFileName =ů Files.getFilename("file:///images/winter/seasonal.png") getLastErrorString()Jeśli ostatnie wywołanie metody z obiektu Files zwróciło błąd, funkcja getLastErrorString zwróci tekst opisujący ten błąd. Jeśli zaś wywołanie metody zakończyło się pomyślnie, getLastErrorString() zwróci zero. Kod w poniższym przykładzie zwróci błąd, jeśli operacja kopiowania pliku zakończyła się niepowodzeniem: if (Files.copy(sourcePath, destPath) == false) Zwracany błąd pobierany jest z obiektu Errors, który zostanie opisany w jednym z kolejnych podrozdziałów. Zwróć uwagę, że metoda getLastErrorString() przeznaczona jest do zwracania błędów wywoływanych przez metody obiektu Files. Obiekt Errors jest używany do wyświetlania komunikatów o błędach powstających w innych sytuacjach. getTempFilePath([nazwaKatalogu])Metoda
getTempFilePath() zwraca ścieżkę dostępu do
systemowego tymczasowego katalogu plików. Funkcja ta nie tworzy pliku, zwraca
jedynie unikatową ścieżkę dostępu, nie kolidującą z żadnym
istniejącym plikiem. Jeśli zostanie podany argument W systemach Windows - metoda getTempFilePath() - w zależności od ustawień systemowych - zwraca przeważnie ścieżkę file:///C|/windows/TEMP/00000001. Na MacOS zwracana jest przeważnie ścieżka file:///Macintosh%20HD/Temporary Items/00000001, gdzie Macintosh HD jest nazwą dysku startowego. isDirectory(ścieżkaDostępu)Metoda isDirectory() pozwala upewnić się, czy podano ścieżkę dostępu do katalogu, a nie do pliku. Jeśli tak jest, metoda zwraca TRUE makePathFromDirAndFile(nazwaKatalogu, nazwaPliku)Często w trakcie przetwarzania wsadowego zdarza się, że Fireworks musi pobrać nazwę katalogu z jednego źródła, zaś nazwę pliku z innego źródła, a następnie połączyć je, aby zapisać plik. Taką właśnie operację wykonuje metoda makePathFromDirAndFile(). Nazwa katalogu określana jest przez pierwszy argument, a nazwa pliku przez drugi argument, jak w poniższym przykładzie: var dirname = "file:///fireworks"; var filename = "borg.png"; theNewFile = Files.makePathFromDirAndFile(dirname, filename) W tym przykładzie zwracana jest ścieżka "file:///fireworks/borg.png open(ścieżkaDostępu, wantWriteAccess)Podstawowa funkcja obiektu Files - metoda open() - otwiera określony plik do odczytania lub zapisywania. Aby zapisywać w pliku, argument wantWriteAccess musi zwrócić TRUE. Jeśli metoda open() zostanie wykonana pomyślnie, zwracany jest obiekt Files, w przeciwnym wypadku, zwracane jest zero. Metoda open() przeznaczona jest do pracy z plikami tekstowymi. readline()Pliki tekstowe często są odczytywane tylko po jednym wierszu. W Fireworks funkcja ta obsługiwana jest za pomocą metody opartej na kopiach - readline(). Wiersze są zwracane jako łańcuchy bez znaku końca wiersza. Po napotkaniu znaku końca wiersza (lub jeśli wiersz składa się z więcej niż 2048 znaków), metoda zwraca zero. rename(ścieżkaDostępu, nazwaPliku)Za pomocą metody rename() można całkowicie modyfikować ścieżki dostępu. Na przykład poniższy kod: Files.rename("file:///images/logo.png", "newlogo.png") zmienia nazwę pliku "logo.png" na "newlogo.png" i zwraca file:///images/newlogo.png setFilename(ścieżkaDostępu, nazwaPliku)Metoda setFilename() zamienia nazwę pliku znajdującego się w określonym położeniu na inną. Na przykład kod Files.setFilename("file:///images/logo.png", "newlogo.png" ) zwraca file:///images/newlogo.png. Pamiętaj, że ta funkcja nie wywiera żadnego wpływu na pliki zapisane na dysku, lecz manipuluje ścieżkami dostępu. Podczas gdy metoda setFileName() wykonuje takie same operacje co rename(), tylko rename() zmienia nazwy plików zapisanych na dysku. swap(ścieżkaDostępu, ścieżkaDostępu)Fireworks oferuje wiele metod umożliwiających przenoszenie plików w trakcie operacji eksportu. Metoda swap() zamienia zawartość jednej ścieżki dostępu na inną. Funkcja ta jest przydatna, gdy musisz zamienić źródłowy plik na jego kopię zapasową.
write(łańcuch)Możesz użyć tej metody opartej na kopiach, aby wstawić tekst do pliku. Po każdym wierszu nie są automatycznie wstawiane znaki końca wiersza. Aby wygenerować taki znak, musisz dołączyć do kodu wyrażenie \n, jak w poniższym przykładzie: theString = "Log Report\n"; theFile.write(theString) Obiekty HotspotObszary aktywne (ang. hotspots) są jednym z dwóch typów obiektów internetowych w Fireworks. Wraz z plastrami, aktywne obszary umożliwiają tworzenie wielu różnych interakcji. Obiekty obszarów aktywnych w Fireworks API to w większości właściwości przeznaczone tylko do odczytu, które pozwalają na zbieranie dowolnych informacji o mapach obrazków osadzanych w dokumentach Fireworks.
exportDocObiekt exportDoc można wykorzystywać we wszystkich szablonach eksportu: slices.htt metafile.htt i Servermap.mtt. Pamiętaj, że exportDoc nie może jednak znajdować się poza tymi plikami. Wszystkie jego właściwości są tylko do odczytu, a także są związane z bieżącym dokumentem i jego właściwościami, opisanym w tabeli 26.5. Mapy obrazkówZ mapami obrazków związane są dwa obiekty Fireworks API: ImageMap i ImageMapList. Za pomocą tych dwóch obiektów można nie tylko pobierać kształty i współrzędne aktywnych obszarów, ale i określać, jakie behawiory są do nich przydzielone. Tabela 26.5. Właściwości obiektu exportDoc
Tabela 26.5. Właściwości obiektu exportDoc (ciąg dalszy)
Obiekt ImageMapPodobnie jak w przypadku kilku innych rozszerzeń Fireworks API, większość zadań obiektu ImageMap obsługiwana jest za pomocą tablic. Każdy element tablicy tego obiektu reprezentuje jeden aktywny obszar znajdujący się w bieżącym dokumencie. Określony obiekt ImageMap możesz pobrać za pomocą następującego kodu: var theHotspot = imagemap[0]; WłaściwościWłaściwości obiektu ImageMap są właściwościami opartymi na kopiach i przeznaczonymi tylko do odczytu. Zostały one szczegółowo opisane w tabeli 26.6. MetodyJedyne dwie metody obiektu ImageMap służą do gromadzenia danych o współrzędnych x i y aktywnego obszaru: xCoord() i yCoord Tabela 26.6. Właściwości obiektu ImageMap
Zarówno xCoord(), jak i yCoord() pracują tak samo. Każda z nich pobiera jedną współrzędną punktu index, podawaną w pikselach. Obie metody użyte w połączeniu z właściwością numCoords pozwalają uzyskać listę współrzędnych dla całej mapy obrazka, jak zostało pokazane w poniższym kodzie: for (var j=0; j<curImagemap.numCoords; j++) Obiekt ImageMapListObiekt ImageMapList jest tablicą obiektów ImageMap, opisującą obszary występujące w mapie obrazka. Obiekt ImageMapList posiada tylko jedną właściwość - numberOfURLs - która jest przeznaczoną do odczytu statyczną właściwością. Właściwość numberOfURLs ma duże znaczenie, gdyż zawiera liczbę obszarów aktywnych występujących w określonej mapie obrazka. Dlatego też często jest wykorzystywana w pętlach działających wewnątrz tablicy obiektów ImageMap, jak w poniższym kodzie: var i =0; while (i <imagemap.numberOfURLs) i++; Jeśli w dokumencie nie ma żadnych map obrazków, numberOfURLs zwróci zero. BehawioryBehawiory Fireworks to elementy umożliwiające eksportowanie kodów JavaScript dołączanych do stron WWW. Behawior jest przydzielony do obiektu internetowego (plastra lub obszaru aktywnego) i uruchamiany przez określoną czynność użytkownika, na przykład kliknięcie myszą lub najechanie na obrazek. Z behawiorami związane są dwa obiekty: BehaviorList i BehaviorInfo Obiekt BehaviorInfoWszystkie właściwości obiektu BehaviorInfo przeznaczone są tylko do odczytu, a obiekt ten nie posiada żadnych metod. Mimo że w liście palety Behaviors znajdują się cztery główne grupy behawiorów: Simple Rollover Swap Image Set Nav Bar i Set Text of Status Bar, dla obiektu BehaviorInfo istnieje sześć różnych behawiorów: Status Message Swap Image Button Down Swap Image Restore Button Highlight i Button Restore. Rozpoznawane są tylko cztery zdarzenia: onMouseOver OnClick onMouseOut i onLoad W tabeli 26.7 znajdziesz właściwości obiektu BehaviorInfo i ich możliwe wartości. Obiekt BehaviorsListJedyna właściwość obiektu BehaviorsList numberOfBehaviors - jest używana w ten sam sposób, co numberOfURLs z obiektem ImageMap, aby określić, ile behawiorów znajduje się w bieżącym dokumencie. W poniższym kodzie, właściwość numberOfBehaviors jest używana w pętli przebiegającej przez tablicę behawiorów: for (var I=0;i<theCurBehaviors.numberOfBehaviors; i++) PlastryPlastrowanie umożliwia dzielenie grafiki na wiele odrębnych plików, z których każdy może być oddzielnie zapisany z własnymi ustawieniami eksportu lub behawiorami. Z plastrami związane są dwa obiekty: SliceInfo i Slices Tabela 26.7. Właściwości obiektu BehaviorInfo
Obiekt SliceInfoObiekt SliceInfo umożliwia przeanalizowanie każdego aspektu pojedynczego plastra będącego częścią większego obrazka. WłaściwościWszystkie właściwości obiektu SliceInfo są tylko do odczytu. Ich szczegółowy opis znajdziesz w tabeli 26.8. Tabela 26.8. Właściwości obiektu SliceInfo
Tabela 26.8. Właściwości obiektu SliceInfo (ciąg dalszy)
MetodyObiekt SliceInfo posiada dwie metody: getFrameFileName() i setFrameFileName Obie są metodami statycznymi. getFrameFileName(klatka)Metoda getFrameFileName() odczytuje nazwę pliku dla bieżącego plastra i klatki. Zwracana nazwa nie zawiera żadnych informacji o ścieżkach dostępu, takich jak rozszerzenie katalogu lub pliku. Na przykład, korzystając z wartości domyślnych Fireworks, nazwa pierwszego plastra pliku o nazwie newLogo.gif powinna brzmieć newLogo_r1_c1. Pierwsza klatka pliku ma zawsze numer 0, a wszystkie znajdujące się w niej plastry są przeważnie nazwane. Dla klatki z numerem 1 i następnych, nazywane są tylko plastry używane w rolloverach lub w przełączaniu obrazków. Poniższy kod demonstruje wykorzystanie metody getFrameFileName() ze stałą i ze zmienną: var curFile = SliceInfo.getFrameFileName(0); for (var curFrame = 0; curFrame <exportDoc.numFrames;ů curFrame++) setFrameFileName(klatka, nazwaPliku)Metodę setFrameFileName() można wykorzystać do zmiany nazwy pliku plastra. Za pomocą dwóch argumentów określ numer klatki i nową nazwę plastra, jak w poniższym kodzie: SliceInfo.setFrameFileName(swapFrame, fileName)
Obiekt SlicesObiekt Slices jest tablicą obiektów SliceInfo. Plastry istnieją w tabelach, więc każdy z nich jest identyfikowany za pomocą jego położenia w wierszu i kolumnie tabeli. Tablica dwuwymiarowa przechowuje numery wierszy i kolumn oraz oznacza każdą kopię plastra. Na przykład plaster znajdujący się w pierwszym wierszu pierwszej kolumny oznaczany jest wyrażeniem slices[0][0]. Kod podobny do poniższego umożliwi Ci przetworzenie wszystkich poszczególnych plastrów: var curRow; var curCol; for (curRow = 0; curRow < Slices.numRows; curRow++) Zwróć uwagę, że do przetworzenia wszystkich plastrów muszą być użyte dwie statyczne właściwości: numRows i numColumns. Po zdefiniowaniu dwuwymiarowej tablicy identyfikującej plaster można odczytać właściwości kopii plastra. Opcje plastrów definiowane są za pomocą kilku statycznych właściwości: doShimEdges doShimInternal i doSkipUndefined. Te wszystkie opcje można definiować również w oknie dialogowym HTML Properties. Aby dowiedzieć się, czy użytkownik zaznaczył opcję No Shims, użyj następującego kodu: if (Slices.doShimInternal || Slices.doShimEdges) W tabeli 26.9 znajdziesz wszystkie statyczne właściwości obiektu Slices Dostęp do Fireworks APIDodana do Fireworks paleta History oferuje wiele funkcji związanych z Fireworks API. Aby każda akcja użytkownika mogła zostać wyświetlona jako oddzielny, możliwy do powtórzenia krok, każda z nich musi być dostępna jako osobna funkcja. Tabela 26.9. Właściwości obiektu Slices
Funkcje Fireworks JavaScript API można podzielić na trzy grupy, funkcje dokumentu, funkcje palety History i ogólne funkcje Fireworks. Za pomocą tych funkcji możesz powielić prawie każde polecenie Fireworks. Fireworks JavaScript API (a także wszystkie inne metody i właściwości Fireworks) został opisany przez firmę Macromedia w dokumentacji Extending Fireworks. Zamiast powielać informacje zawarte w dokumentacji, w tym podrozdziale przedstawię, jak najlepiej je wykorzystać. Funkcje obiektu DocumentJak zostało wspomniane już wcześniej, model rozszerzalności Fireworks jest w dużym stopniu uzależniony od Document Object Model (DOM) - Obiektowego Modelu Dokumentu. W Fireworks API, każda funkcja Document do poprawnej pracy wymaga modelu DOM określonego dokumentu. DOM można wydobywać na dwa sposoby za pomocą funkcji getDocumentDOM(). Po pierwsze, funkcja ta może wypisać wszystkie akcje: fw.getDocumentDOM.align(top) Metoda ta jest używana w palecie History. Możesz to sprawdzić, zaznaczając dowolną akcję, klikając przycisk Copy Selected Steps to Clipboard (Kopiuj zaznaczone kroki do schowka) i wklejając zawartość schowka do edytora tekstowego. Mimo tego, że tego typu działanie doskonale sprawdza się w operacjach wykonywanych na pojedynczych wierszach, wypisywanie za każdym razem całej funkcji może być nieco kłopotliwe w programowaniu, więc najczęściej stosowana jest następująca składnia: var theDOM = fw.getDocumentDOM Po zadeklarowaniu zmiennej i ustawieniu jej na DOM, wszystkie późniejsze odwołania do DOM będą wykorzystywały tę zmienną. Przykładowo - serię wyrażeń można odczytać następującym kodem: var theDOM = fw.getDocumentDOM theDoc.addNewOval theDOM.applyStyle(stylename, 0) theDOM.setDocumentCanvasSizeToDocumentExtents(true) fw.exportDocumentAs(theDOM, exportPath, exportOptionsGif) fw.closeDocument(theDOM, false) Wykorzystana w tym kodzie zmienna - theDOM - jest zupełnie przypadkowa i możesz zdefiniować dowolną inną. Funkcje obiektu Document są największą i najbardziej kompletną grupą funkcji. Najszybszym sposobem na zapisanie kodu odpowiedzialnego za wykonywanie określonych akcji jest skopiowanie jednego z kroków do schowka za pomocą przycisku Copy Selected Steps to Clipboard, znajdującego się w palecie History Poniższe instrukcje pomogą Ci uchronić się przed poszukiwaniami określonych funkcji w dokumentacji Extending Fireworks: 1. Wykonaj żądaną akcję, na przykład rysowanie elipsy lub dodawanie nowych klatek. 2. Wybierz z menu polecenie Window History, aby otworzyć paletę History 3. Zaznacz w palecie Frames polecenia reprezentujące Twoje akcje. 4. Kliknij przycisk Copy Selected Steps to Clipboard 5. Wklej zawartość schowka do swojego ulubionego edytora tekstu. Skopiowane z Fireworks polecenia będą zawierały cały kod niezbędny do dokładnego odtworzenia Twojej akcji. Następnym krokiem w tworzeniu polecenia jest zazwyczaj uogólnienie parametrów, tak aby polecenie mogło być stosowane w wielu różnych przypadkach. Jeśli na przykład w dokumencie Fireworks tworzony jest owal, Fireworks wygeneruje kod podobny do poniższego: fw.getDocumentDOM.addNewOval Po zakończeniu dołączania funkcji do polecenia, ten sam kod wyglądałby następująco: theDOM.addNewOval Oprócz zastąpienia funkcji getDocumentDOM() zmienną, identyczne działanie przeprowadziłem z wartościami bezwzględnymi definiującymi położenie lewej, górnej, prawej i dolnej krawędzi obiektu. Nowe zmienne będą mogły być modyfikowane przez użytkownika lub przez inne funkcje kodu. Funkcje FireworksJedną z grup funkcji API tworzą funkcje Fireworks. Dotyczą one ogólnych operacji na dokumentach: tworzenia, eksportowania, zamykania i przywracania, a także przeprowadzania operacji "znajdź i zamień". W kategorii tej często stosowana jest również funkcja getDocumentDOM
Funkcja getDocumentDOM() nie jest jedynym sposobem na uzyskanie dostępu do Document Object Model. Obie funkcje: createDocument() i createFireworksDocument() zwracają DOM, jeśli zostaną użyte w następujący sposób: var theDOM = fw.createDocument var theDOM = fw.createFireworksDocument(,,"#ffffff" Obie funkcje służą do tego samego - tworzenia dokumentu, ale różnią się od siebie tym, że fw.createDocument() używa bieżących wartości domyślnych, zaś w createFireworksDocument() wymiary, rozdzielczość i kolor obszaru roboczego muszą zostać podane. Kilka funkcji należących do tej kategorii jest używanych do połączeń z plikami znajdującymi się poza Fireworks. Za pomocą funkcji browseDocument() możesz obejrzeć dokument HTML lub inny zgodny plik w głównej przeglądarce internetowej. Jednym z zastosowań tej funkcji jest wyświetlanie plików pomocy lub programowy podgląd eksportowanych plików w przeglądarce internetowej. Dwie inne funkcje: browseForFileURL() i browseForFolderURL() pomagają w zapisywaniu plików w Fireworks. Funkcja browseForFileURL() wyświetla okno dialogowe Open lub Save i zwraca URL pliku, na przykład taki jak poniżej: file:///C|images/clientlogo.gif
Funkcja browseForFolderURL() zwraca ścieżkę dostępu katalogu. Jest ona szczególnie przydatna, gdy chcesz zapisać grupę generowanych grafik we wspólnym katalogu i programowo nadać mu nazwę. Funkcja browseForFolderURL() zwraca łańcuch jak poniżej: file:///C|images Zwróć uwagę, że brak w tym łańcuchu końcowego ukośnika. Zadaniem programisty jest dodanie tego znaku w trakcie zapisywania plików. Funkcje palety HistoryJak można wywnioskować z ich nazwy, funkcje palety History dotyczą wyłącznie operacji wykonywanych na tej właśnie pływającej palecie Fireworks. Funkcje te umożliwiają programowe wykonywanie każdej funkcji dostępnej z poziomu palety History, a między innymi: u Usuwanie wszystkich poleceń z palety History u Uzyskiwanie liczby bieżących poleceń. u Powtarzanie wybranych poleceń. Mimo że na pierwszy rzut oka funkcje te mogą wyglądać nieco tajemniczo, znacznie rozszerzają możliwości automatyzacji pracy w Fireworks. Przykładowo, zbudowałem polecenie Repeat History (Powtórz historię), które pozwala użytkownikowi na powtórzenie dowolnej grupy zaznaczonych kroków (lub tylko ostatniej operacji) dowolną ilość razy. Polecenie Repeat History używa prawie wyłącznie funkcji palety History Oto kod całego polecenia: var theSteps = fw.historyPalette.getSelection if (theSteps.length == 0) else W pierwszym wierszu użyta jest funkcja palety History pobierająca tablicę kroków aktualnie zaznaczonych w palecie History var theSteps = fw.historyPalette.getSelection Następnie konieczne jest sprawdzenie, czy zaznaczono jakieś polecenia. Jeśli w palecie History nie wybrano żadnych akcji, użytkownik jest proszony o zaznaczenie przynajmniej jednej i ponowne wydanie polecenia: if (theSteps.length == 0) Po wybraniu co najmniej jednego polecenia, użytkownik jest proszony o podanie żądanej liczby powtórzeń zaznaczonych poleceń, za pomocą poniższej funkcji: var theNum = prompt("Powtórz historię\nWpisz liczbę żądanych powtórzeń") Liczba powtórzeń przechowywana jest w zmiennej theNum jako łańcuch tekstowy. Kolejny i ostatni fragment kodu przekształca łańcuch na liczbę i powtarza zaznaczone polecenia żądaną liczbę razy. for (i=0;i < parseInt(theNum);++i) Polecenie Repeat History jest przydatne przy wykorzystaniu poleceń Clone (Klonuj) i Duplicate (Duplikuj). Jeśli na przykład zechcę utworzyć dziesięć gwiazd, z których każda będzie obrócona o 5ş w stosunku do poprzedniej, stworzę pierwszą z nich, sklonuję ją, a następnie obrócę o 5ş za pomocą polecenia Modify Transform Numeric Transform. Później zaznaczę Clone i Rotate w palecie History i wydam polecenie Repeat History, określając dla niego dziesięć powtórzeń. Utworzony zostanie w ten sposób efekt wybuchającej gwiazdy.
Przerabianie wbudowanych poleceńDoskonałym przykładem na to, jak niewielki kod może pomóc w pracy jest dostosowywanie wbudowanych poleceń Fireworks. Na przykład, działanie bardzo przydatnych poleceń z podmenu Animation jest ograniczone do 12 klatek. Nieważne, jaką animację tworzysz, zawsze będzie ona miała tylko 12 klatek. Po uruchomieniu polecenia animacji zostanie wyświetlone okno dialogowe wyjaśniające jego działanie. Okno dialogowe potwierdzenia jest generowane za pomocą funkcji confirm(), co możesz zobaczyć w kompletnym kodzie polecenia Rotate //Wyjaśnij użytkownikowi działanie polecenia var message = confirm("To polecenie tworzy wieloklatkową animację poprzez obracanie obiektów znajdujących się w dokumencie." if (message ==true) //Zdefiniuj opcje eksportu fw.getDocumentDOM().setExportOptions( ) Oryginalny kod ustawia zmienną message na wartość zwracaną przez funkcję confirm(). Jeśli użytkownik kliknie przycisk OK, funkcja confirm() zwraca TRUE. Jeśli zaś kliknięty zostanie przycisk Cancel (Anuluj), confirm() zwróci zero. W obu przypadkach wartość funkcji confirm() jest przechowywana w zmiennej message. Następnym krokiem jest - "jeśli zmienna message wynosi TRUE, wykonaj polecenia znajdujące się w następnych nawiasach klamrowych". Jeśli zmienna message wynosi TRUE, pierwsze wyrażenie w nawiasach klamrowych ustawia liczbę klatek (zmienna kNumFrames) na 12. Zastąpienie funkcji confirm() w drugim wierszu polecenia za pomocą funkcji prompt daje użytkownikowi możliwość zdefiniowania liczby klatek w tworzonej animacji. Różnice w wyświetlanych oknach dialogowych możesz zobaczyć na rysunku 26.5.
Najważniejszą zmianą w modyfikowanym kodzie jest ustawienie zmiennej kNumFrames (a więc liczby klatek tworzonych za pomocą polecenia) na wartość wprowadzaną przez użytkownika w wyświetlanym oknie dialogowym. Za pomocą funkcji prompt() możesz również ustalić wartość wyświetlaną domyślnie w polu tekstowym. Dobrze byłoby również spróbować przewidzieć niecodzienne działania użytkownika. Jeśli użytkownik wpisze coś innego niż liczbę, Fireworks zignoruje wprowadzoną wartość i polecenie nie wykona żadnych działań. Może się jednak zdarzyć, że użytkownik zdefiniuje 50, 100 lub 500 klatek i potem będzie tego gorzko żałował, gdy Fireworks będzie dodawał do dokumentu klatkę po klatce, co na słabszych komputerach może trochę potrwać. Większość animacji jest tworzonych z myślą o animowanych GIF-ach, więc prawdopodobnie 30 klatek w zupełności wystarczy każdemu projektantowi. GIF składający się z 30 klatek jest powolną animacją o dużych rozmiarach fizycznych pliku. Jeśli więc użytkownik wpisze liczbę większą od 30, zostanie wyświetlone okno dialogowe z ostrzeżeniem i możliwością anulowania polecenia przed jego uruchomieniem. Będziesz potrzebował także zmiennej angle, odpowiedzialnej za kąt obrotu, o takiej wartości, która niezależnie od zdefiniowanej liczby klatek zawsze obróci obiekt o 360ş. W oryginalnym poleceniu liczba klatek jest sztywno ustawiona na 12, zaś kąt obrotu na 30ş. Nie przypadkiem 12 pomnożone przez 30 daje 360, czyli kąt pełny. Aby kąt obrotu wyniósł w rezultacie 360ş, musisz ustalić właściwy kąt dla każdego kroku animacji. Możesz go obliczyć, dzieląc 360ş przez liczbę kroków animacji.
Oto ostateczny kod zmodyfikowanego polecenia Rotate //Ten skrypt został oparty na poleceniu Rotate //dostarczanym wraz z Fireworks 3 //Wyjaśnij użytkownikowi działanie polecenia i zapytaj go //o liczbę klatek animacji var kNumFrames = prompt("To polecenie tworzy wieloklatkową animację poprzez obracanie obiektów znajdujących się w dokumencie. Proszę wpisać liczbę klatek nowej animacji.", "12" //poproś użytkownika o potwierdzenie, jeśli liczba klatek jest większa niż 36 if (kNumFrames > 36) else //Określ kąt obrotu, dzieląc 360 stopni przez //liczbę klatek tak, aby w animacji został wykonany //pełen obrót o 360 stopni //ta zmienna zastępuje wartość "30" w oryginalnym skrypcie //która jest odpowiednia tylko dla 12 klatek var oneStepAngle = (360 / kNumFrames) //jeśli zdefiniowano więcej niż 0 klatek i użytkownik kliknął OK, jeśli było ich więcej niż 36 //przystąp do działania if (kNumFrames > 0 & message == true) //Ustaw opcje eksportu fw.getDocumentDOM().setExportOptions( Jedną z zalet utworzonego polecenia jest to, że może ono działać (jeśli tylko zechce tego użytkownik) jak oryginalne polecenie Rotate. Po kliknięciu przycisku OK, użytkownik otrzyma 12-klatkową animację obiektów obracających się o 360ş. Użytkownik ma jednak, co najważniejsze, możliwość zdefiniowania innej liczby kroków animacji (rysunek 26.6).
|