Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Interfejs programowania aplikacji - Fireworks API

Poloneza


Interfejs programowania aplikacji - Fireworks API

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 Java­Scriptu? Otóż do Fireworks wbudowany jest interpreter JavaScript 1.4. JavaScript to in­ter­netowy język skryptowy i jako taki doskonale nadaje się do sterowania narzę­dzia­mi auto­rskimi. Fireworks JavaScript API (application programming interface
- interfejs pro­gramowania aplikacji) zawiera bardzo duży zestaw specjalnych obiek­tów z właści­woś­ciami i metodami umożliwiającymi sterowanie i modyfikowanie do­kumentów Fire­works.

Fireworks API obsługuje statyczne oraz metody i właściwości oparte na kopiach. Statyczna me­toda lub właściwość (nazywane również klasami) są związane z samymi obiektami za­miast z kopiami obiektów. Jak wskazuje ich nazwa, me­to­da 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 na­stę­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" opu­blikowanej 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ś opcjo­nal­ne argumenty wpisywane są w nawiasach.

u      W związku z tym, że Fireworks API zawiera teraz wiele różnych metod i obiektów, czasami od­woły­wałem się do dokumentacji technicznej firmy Macromedia zatytułowanej Ex­tending Fireworks, dostępnej na CD-ROM-ie instalacyjnym Fireworks w for­macie PDF lub w witrynie Fireworks, pod adresem www.macromedia.com/software/fireworks/extensability.html

Niestandardowe typy danych

Fireworks pracuje z obiektami graficznymi, na przykład maskami oraz określonymi usta­wieniami, takimi jak rozdzielczość, które nie są powszechnie obsługiwane przez Java­Script, dlatego potrzebne są pewne standardowe metody formatowania tych da­nych. Macromedia dostarcza pewnych wskazówek dotyczących formatowania kolorów, URL plików, masek, matryc, punktów, prostokątów i rozdzielczości.

Kolory

Kolory definiowane są w szesnastkowym modelu RGB (Red - czerwony, Green - zie­lo­ny i Blue - niebieski), który jest jednym z modeli dostępnych w palecie Color Mixer Fire­works. Jest to standardowy model definiowania kolorów w języku HTML. Wartości ko­lorów w tym modelu wpisywane są w formacie "#RRGGBB", gdzie każdy z kanałów po­dawany jest jako liczba szesnastkowa. Przykładowo - czysta czerwień posiada war­tość "#FF0000". Dodatkowo w formacie "#RRGGBBAA" zdefiniować można kanał alfa.

Jeśli nie zostaną zdefiniowane wartości kanału alfa, Fireworks auto­ma­tycznie zakłada, że kanał alfa jest kompletnie nieprzezroczysty. Jed­no­lity, czerwony kolor wypełnienia posiadający wartość #FF0000 jest więc interpretowany przez Fireworks tak, jakby miał wartość #FF0000FF.

 

URL plików

Fireworks definiuje nazwy plików i ścieżki dostępu w skryptach jako URL plików. Na przy­kł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ś­ni­ka­mi, zaś dwukropek występujący po literze dysku zastąpiono pionową kreską. Spacja za­stą­piona została kodem%

W MacOS, ścieżka dostępu do katalogu Commands (przy założeniu, że dysk posiada naz­wę 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 Mac­OS i poprawnie napisz adresy URL plików.

 

Maski

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: rec­tan­­gle oval zlib compressed rle compressed lub uncom­pressed

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 in­nych typów masek, właściwość maskData powinna zawierać 8-bitowe dane mas­ki podawane w formacie szesnastkowym.

Maska jest definiowana w formacie .

Matryce

W programowaniu, grafika komputerowa jest opisywana z wykorzystaniem macierzy o wy­miarach 3 3 nazywanej matrycą. W Fireworks, format matrycy jest następujący:

. I tak przy korzystaniu z na­rzę­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ą od­po­wiednio pierwszy uchwyt kontrolny Béziera, właściwy punkt i drugi uchwyt kon­trolny.

W powyższym przykładzie i pozostałych podrozdziałach książki, wyra­że­nie fw.getDocumentDOM() jest używane jako odwołanie do aktyw­ne­go dokumentu Fireworks.

 

Prostokąty

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ść

Rozdzielczość jest definiowana w Fireworks w następującym formacie

Metody globalne

Globalne metody są zawsze dostępne dla wszystkich skryptów Fireworks. Interaktywne funk­cje są bardzo pomocne przy usuwaniu błędów kodu i dostarczaniu wskazówek dla użyt­kownika. Dla operacji eksportu dostępne są tylko dwie funkcje umożliwiające ge­ne­rowanie plików: WRITE_HTML() i write

alert (komunikat)

Metoda alert() wyświetla proste okno dialogowe (rysunek 26.1) z tytułem, komu­ni­ka­tem i przyciskiem OK. Komunikat może być łańcuchem tekstowym, zawartością zmien­nej lub wynikiem wyrażenia JavaScriptu. Okno dialogowe alert() musi być usunięte, za­nim użytkownik będzie mógł kontynuować pracę (taki typ okna nazywany jest mo­dalnym).

Rysunek 26.1.

Metoda alert() jest prostym sposobem dostarczania użytkownikom dowolnych informacji

Poniższy kod informuje użytkownika o zakończeniu operacji przetwarzania wsado­wego:

alert("Ukończone!")

confirm (komunikat)

Metoda confirm() wyświetla łańcuch tekstowy w modalnym oknie dialogowym, a nas­tęp­nie oczekuje, aż użytkownik kliknie przycisk OK lub Cancel (rysunek 26.2). Wartość zwra­cana funkcji to prawda, gdy użytkownik kliknie przycisk OK i fałsz po kliknięciu przycisku Ca­n­cel

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)

prompt (nagłówek, tekst)

Metoda prompt() umożliwia użytkownikowi wpisywanie w modalnym oknie dialo­go­wym (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 teks­towego, 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 pra­cy skryptu:

function getName()

Obecnie metoda prompt() jest jedynym mechanizmem umożli­wia­jącym programistom, rozszerzającym możliwości Fireworks, groma­dze­nie para­me­trów od użytkownika. Niektórzy autorzy rozszerzeń do po­bie­ra­nia danych od użytkownika używają wielu metod prompt lub jed­nej, zawie­rającej wartości oddzielane od siebie przecinkami. Jednym z bar­dziej zaawansowanych zastosowań jest otwarcie formularza parame­trów Dreamweavera i wykorzystanie ich do uruchomienia polece­nia Fire­works.

 

WRITE_HTML (arg1[, arg2, ..., argN])

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 jedy­nie w trak­cie eksportu. Wszystkie argumenty są zapisywane jeden po drugim, co umoż­li­wia łat­we łą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
Win­dows i
Carriage Return dla systemów MacOS. Cudzysłowy mogą być eliminowane po­przez 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 pli­ku 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">

write (arg1[, arg2, ..., argN])

Metoda write() działa dokładnie tak samo, jak metoda WRITE_HTML(). Macromedia za­leca stosowanie metody WRITE_HTML() zamiast write(), aby zapobiec sytuacji, w któ­rej programista pomyli ją z metodą JavaScriptu - document.write

Obiekty globalne

Obiekty globalne Fireworks umożliwiają zarządzanie plikami, inicjowanie operacji "znajdź i zamień", generowanie raportów o błędach w zlokalizowanym języku oraz do­star­czanie prawie wszystkich informacji o ustawieniach dokumentów lub bieżącej apli­ka­cji. 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 przy­dat­ne 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.

fw

Obiekt fw daje dostęp do informacji o aplikacji Fireworks zainstalowanej w systemie użyt­kownika. Poprzez obiekt fw programiści mogą określać wersję systemu ope­ra­cyj­ne­go, położenia określonych katalogów, takich jak Commands i Templates, typy aktual­nie otwartych plików oraz wiele innych danych.

Dwie najbardziej przydatne metody obiektu fw to getPref() i setPref(). Za ich po­mo­cą możesz sterować każdym elementem interfejsu Fireworks, jego ustawieniami i op­cja­mi przywracania.

Właściwości

Wię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, dismissDia­log­WhenDone, progressCountCurrent oraz progressCountTotal

appBatchCodeDir

Wartością zwracaną jest ścieżka dostępu do katalogu Batch Code

appDir

Wartością zwracaną jest ścieżka dostępu do katalogu aplikacji Fireworks.

appExportSettingsDir

Wartością zwracaną jest ścieżka dostępu do katalogu Export Settings.

appFavoritesDir

Wartością zwracaną jest ścieżka dostępu do katalogu URL Libraries.

appHelpDir

Wartością zwracaną jest ścieżka dostępu do katalogu Help.

appHtmlCodeDir

Wartością zwracaną jest ścieżka dostępu do katalogu HTML Code.

appJsCommandsDir

Wartością zwracaną jest ścieżka dostępu do katalogu Commands.

appJsExtensionsDir

Wartością zwracaną jest ścieżka dostępu do katalogu JSExtensions.

appMacCreator

Macintosh identyfikuje aplikację otwierającą dany plik za pomocą jego kodu Creator. W MacOS właściwość appMacCreator zwraca dla Fireworks kod Creator MKBY

appMacJsfFileType

Mac identyfikuje typ pliku określonego dokumentu za pomocą wbudowanego kodu File Ty­pe (Typ pliku). W systemach MacOS kodem File Type plików tekstowych jest TEXT. Po­lecenia i skryptlety Fireworks są plikami tekstowymi, więc właściwość appMac­Jsf­FileType zwraca łańcuch TEXT

appPatternsDir

Wartością zwracaną jest ścieżka dostępu do katalogu Patterns.

appPresetsDir

Wartością zwracaną jest ścieżka dostępu do katalogu Presets.

appSettingsDir

Wartością zwracaną jest ścieżka dostępu do katalogu Settings.

appStylesDir

Wartością zwracaną jest ścieżka dostępu do katalogu Styles.

appSymbolLibrariesDir

Wartością zwracaną jest ścieżka dostępu do katalogu Libraries.

appTexturesDir

Wartością zwracaną jest ścieżka dostępu do katalogu Textures.

appXtrasDir

Wartością zwracaną jest ścieżka dostępu do katalogu Xtras.

batchStatusString

Właściwość batchStatusString (która jest tylko do odczytu) jest używana do wy­świe­tlania bieżącego łańcucha w oknie dialogowym Batch Progress. Możesz ustawić no­wy 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 prze­twarzanego pliku:

fw.batchStatusString = Files.getFilename(sourceDocumentPath)

dismissBatchDialogWhenDone

Przy wyświetlaniu okna dialogowego Batch Progress możesz je automatycznie opusz­czać poprzez ustawienie właściwości dismissBatchDialogWhenDone (która oczy­wiś­cie nie jest tylko do odczytu) na TRUE, jak w poniższym przykładzie:

fw.dismissBatchDialogWhenDone = true;

documentList

Właściwość documentList zwraca za pomocą obiektu Document tablicę, zawierającą wszys­tkie 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

platform

Właściwość platform zwraca win, jeśli Fireworks jest uruchomiony w Windows i mac, jeśli jest uruchomiony w MacOS.

progressCountCurrent

W czasie operacji przetwarzania wsadowego, okno dialogowe informuje o ilości prze­two­rzonych plików, wyświetlając tekst typu "1 of 6 files processed" ("Przetwo­rzono 1 z 6 plików"). Właściwość progressCountCurrent (która nie jest tylko do od­czytu) jest odpowiedzialna za pierwszą liczbę wyświetlaną w tym oknie dia­lo­go­wym. Używana jest w pętli zwiększającej liczbę o jeden po każdym zakończeniu prze­twa­rzania pliku.

progressCountTotal

Właściwość progressCountTotal jest odpowiedzialna za drugą liczbę wyświetlaną w oknie dialogowym Batch Progress, czyli całkowitą liczbę plików do przetworzenia. War­tość tej właściwości może być ustawiana dla liczby dokumentów wybieranych w ok­nie dialogowym wyświetlanym na początku operacji przetwarzania wsadowego. Ta­ką listę plików zwraca właściwość chooseScriptTargetDialog(). Aby zatem zde­­­fi­niować całkowitą liczbę plików do przetworzenia, możesz użyć następującego kodu:

var theDocList = fw.chooseScriptTargetDialog(PNG)

fw.progressCountTotal = theDocList.length;

Metody

Wszystkie funkcje związane z obiektem fw są bardzo przydatne. Za ich pomocą mo­żesz otworzyć określony plik, zmienić dowolną preferencję Fireworks lub nawet zam­knąć program.

Wszystkie metody obiektu fw są statyczne.

 

chooseScriptTargetDialog(listaFormatów)

Podobnie jak locateDocDialog(), metoda chooseScriptTargetDialog() wyświe­tla okno dialogowe, w którym użytkownik może wybrać pliki, które mają być prze­twa­rza­ne. W przeciwieństwie do locateDocDialog(), w tej metodzie jako argument wy­ma­gana jest lista formatów i nie trzeba definiować maksymalnej liczy dokumentów. W po­niż­szym przykładzie lista formatów została ograniczona do plików TIFF:

var theFiles = fw.chooseScriptTargetDialogů ("kMoaCfFormat_TIFF")

Aby ograniczyć okno dialogowe wyświetlane za pomocą metody choose­ScriptTargetDialog() do wielu typów plików, użyj tablicy po­dob­nej do tej, jakiej używaliśmy w metodzie locateDocDialog().

 

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 argu­ment ś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 wszys­tkich preferencji Fireworks. Możliwości oferowane przez te dwie metody są na­praw­dę duże - od zmiany domyślnego koloru wypełnienia po modyfikacje współ­rzęd­nych x i y wyświetlanych w oknie dialogowym Edit Gradient

Argumenty prefname (nazwaPreferencji) i prefval (wartośćPreferencji) są słowami klu­czowymi zawartymi w pliku Fireworks 4 Preferences.

Więcej informacji o pliku Fireworks 4 Preferences i o ustawieniach pre­­ferencji znajdziesz w rozdziale 25.

 

locateDocDialog(maksymalnaLiczbaDokumentów [, listaFormatów])

Metoda locateDocDialog() wyświetla okno dialogowe (rysunek 26.4) umożliwiające użyt­kownikowi wybranie jednego lub więcej plików.

Rysunek 26.4.

Za pomocą metody locateDocDialog() możesz otworzyć okno dialogowe pozwalające wybrać pliki
dla określonej operacji

Argument maksymalnaLicz­ba­Pli­ków mówi Fireworks, czy użyć standardowego okna dialo­go­we­go Open do otwarcia po­jedynczego pliku, czy też okna Open Multiple Files do zała­do­wa­nia więcej niż jednego pli­ku. Użyj wartości 1, 0 lub -1, aby otworzyć okno dialo­go­we Open, lub dowolnej war­tości większej od 1, aby otworzyć okno dialogowe Open Multiple Files. Liczba wyko­rzys­tana 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ć otwie­ra­ne w Fireworks. Jeśli argument ten zostanie pominięty, w oknie dialogowym wyświe­tla­ne będą wszystkie pliki. Argument listaFormatów podawany jest w formie ta­bli­cy. Aby na przykład zdefiniować formaty PNG i TIFF dla okna dialogowego Open, użyj na­­stępującego kodu:

var formats = [ "PNG", "kMoaCfFormat_TIFF" ];

var theFiles = fw.locateDocDialog(1, formats)

for (f in theFiles)

Wyświetlane powyższym kodem okno dialogowe umożliwia użyt­kow­ni­ko­wi także wybranie opcji All Readable Files (Wszystkie zgodne pliki) i All Files (Wszystkie pliki).

 

Metoda locateDocDialog() zwraca tablicę nazw plików lub - jeśli okno dialogowe zo­stanie anulowane - zero.

Możesz również udostępnić wszystkie typy plików znajdujących się w sys­temie użytkownika, definiując ustawienie MultiFileBatchTypes za po­mocą następującego kodu:

var thePrefs = fw.getPrefs(MultiFileBatchTypes)

var theFile = fw.locateDocDialog(1,thePrefs)

 

W tabeli 26.1 znajdziesz wszystkie argumenty listy formatów

Tabela 26.1.

Argumenty listy formatów

Argument

Dokument

Rozszerzenie pliku

Kod File Type w MacOS

ADOBE AI3

Adobe Illustrator

.ai

uMsk

Fireworks JavaScript

Fireworks JSF

.jsf

TEXT

kMoaCfFormat_BMP

Bitmapa

.bmp

BMP

kMoaCfFormat _FreeHand7and8

Macromedia FreeHand 7.0 lub 8.0

.fh7 lub .fh8

AGD3

kMoaCfFormat_GIF

Obrazek GIF

.gif

GIFf

kMoaCfFormat_JPEG

Obrazek JPEG

.jpg lub .jpeg

JPEG

kMoaCfFormat_PICT

Obrazek MacOS

.pict, .pic lub .p

PICT

kMoaCfFormat_RTF

Rich Text Format

.rtf

RTF

kMoaCfFormat_Text

Plik tekstowy ASCII

.txt

TEXT

kMoaCfFormat_TIFF

Obrazek TIFF

.tif lub .tiff

TIFF

PNG

Obrazek PNG

.png

PNGf

PS30

Dokument Photoshopa
(w wersji 3.0 lub późniejszej)

.psd

8BIM

openDocument (ścieżkaDostępu[, otwórzJakoBezTytułu])

Metoda openDocument() otwiera plik znajdujący się w lokalizacji definiowanej argu­men­tem ścieżkaDostępu. Metoda ta otwiera kolejną kopię aktualnie otwartego pli­ku, zatem metoda openDocument() najczęściej jest stosowana w połączeniu z metodą findOpenDocument().. Jeżeli plik nie może zostać otwarty, openDocument() zwraca ze­ro. Jeżeli opcjonalny argument otwórzJakoBezTytułu jest ustawiony na TRUE, do­ku­ment jest otwierany w nowym oknie bez tytułu.

quit()

Metoda quit() zamyka Fireworks. Jeśli nie ma otwartych żadnych dokumentów, które zo­stały zmodyfikowane i nie były zapisane, nie jest wyświetlane żadne potwierdzenie zam­knięcia programu. Wykorzystując metodę confirm() możesz jednak utworzyć włas­ne okno potwierdzenia:

if (confirm("Na pewno chcesz wyjść?"))

Obiekt Document

Obiekt Document w Fireworks podobny jest do obiektu Document używanego w Java­Script. Oba umożliwiają precyzyjne sterowanie dokumentami. Obiekt Document Fire­works jest wykorzystywany do definiowania parametrów eksportu oraz o wiele pros­t­szych usta­wień, takich jak opcje operacji "znajdź i zamień".

Ponieważ w większości przypadków obiekt ten występuje w połączeniu z konkretnym do­kumentem nie posiada żadnych statycznych właściwości, ma tylko dwie statyczne me­tody: findExportFormatOptionsByName() i makeGoodNativeFilePath

Właściwości

Obiekt 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 in­nych operacji.

Wszystkie właściwości obiektu Document dotyczą określonych dokumentów, więc mu­szą być związane z określoną kopią obiektu Document, a nie z samym obiektem. Aby po­brać kopię obiektu Document, użyj następującego kodu wykorzystującego funk­cję 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)

backgroundColor

Właściwość koloru tła dokumentu.

backgroundUrl

Względny lub absolutny URL przydzielony do łącza tła.

brushes

Wł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 ob­ry­sów używanych w dokumencie. Kompletną listę wszystkich właściwości i wartości obiek­tu Brush znajdziesz w dokumentacji Extending Fireworks.

currentFrameNum

Aktualnie zaznaczona klatka w palecie Frames

currentLayerNum

Aktualnie zaznaczona warstwa w palecie Layers

defaultAltText

Domyślny tekst zastępczy, jeśli nie został określony żaden inny dla pojedynczego lub plas­trowanego obrazka.

exportFormatOptions

Identyczna jak właściwość exportOptions (opisywana poniżej). Została zachowana, aby zapewnić zgodność ze skryptami Fireworks 2.

exportOptions

Mimo że ważne są wszystkie właściwości wszystkich obiektów, najbardziej złożoną i naj­­prawdopodobniej najczęściej stosowaną właściwością obiektu Document jest ex­por­tOptions. Właściwość ta zwraca obiekt zawierający bieżące ustawienia eks­por­tu. Większość ustawień eksportu wyrażanych jest za pomocą wartości liczbowych za­miast ł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 usta­wień: paletteInfo paletteEnries i frameInfo wyrażanych jest za pomocą ta­blic.

W tabeli 26.2 znajduje się szczegółowa lista ustawień właściwości exportOptions

Tabela 26.2.

Ustawienia właściwości exportOptions

Ustawienie

Możliwe wartości

animAutoCrop

True|False

animAutoDifference

True|False

applyScale

True|False

ColorMode

(indeksowany) (24-bitowy kolor) lub 2 (32-bitowy). Indeksowany jest wartością domyślną

crop

True|False

cropBottom

0 - wysokość obrazka minus 1

cropLeft

0 - szerokość obrazka minus 1

cropRight

0 - szerokość obrazka minus 1

cropTop

0 - wysokość obrazka minus 1

ditherMode

(brak) ( x ) lub 2 (dyfuzja), domyślne jest "brak"

ditherPercent

0-100, domyślne jest 100

exportFormat

(GIF) (JPEG) (PNG) (własne, wliczając TIFF i BMP)
lub 4
(Animowany GIF)

frameInfo (array)

delayTime

frameHidden

True|False

frameName

Tekst: nazwa klatki pokazywanej w palecie Frames

gifDisposalMethod

(nieokreślona) (brak) (tło) lub 3 (poprzednia)

interlacedGIF

True|False

jpegQuality

1-100, domyślne jest 80

jpegSmoothness

0-8, domyślne jest 0

jpegSubsampling

0-4, domyślne jest 1

localAdaptive

True|False

lossyGifAmount

0-100, domyślne jest 0

macFileCreator

"XXXX" (kod Macintosh Creator code, dla Fireworks jest to "MKBY")

macFileType

"XXXX" (kod Macintosh File Type, używany do wyboru formatu pliku jeśli exportFormat = 3

name

Tekst-Nazwa ustawienia

Tabela 26.2.

Ustawienia właściwości exportOptions (ciąg dalszy)

Ustawienie

Możliwe wartości

numCustomEntries

0-256, domyślne jest 0

numEntriesRequested

0-256, domyślne jest 128

numGridEntries

0-256, domyślne jest 6

optimized

True|False

paletteEntries (array)

colorstring1
colorstring2
itd.

Wartości kanałów Red-Green-Blue-Alpha (Czerowny-Zielony-Niebieski-Alfa, z których każda należy do zakresu od 0 do 255. Przykład: "255 0 0 255". Jeśli wartość kanału alfa wynosi 0, kolor jest kompletnie przezroczysty.

paletteInfo (array)

colorLocked

True|False

colorModified

True|False

colorSelected

True|False

colorTransparent

True|False

colorDeleted

True|False

paletteMode

"adaptacyjna" (domyślne), "własny", "siatka", "monochromatyczna)", "Macintosh", "Windows", "dokładna" lub "Web 216"

paletteTransparencyType

(brak) (indeksowana) (indeksowana alfa) lub 3 (RGBA); domyślne jest "brak"

percentScale

1-100000, domyślne jest 100

progressiveJPEG

True|False

savedAnimationRepeat

0-1000000, domyślne jest 0

sorting

transparencyIndex

0-255 lub -1, jeśli brak przezroczystości

useScale

True|False

webSnapAdaptive

True|False

webSnapTolerance

Zawsze ustawiona na 14

xSize

-100000 do 100000

ySize

-100000 do 100000

Ustawienia useScale i applyScale obiektu Document są uzależnione od siebie przy de­finiowaniu stosowanej metody skalowania. Przy jej określaniu obowiązują na­stę­pu­ją­ce zasady:

u      Jeśli useScale i applyScale wynoszą FALSE, przy eksporcie nie jest wy­ko­ny­wane żadne skalowanie.

u      Jeśli useScale wynosi TRUE, niezależnie od ustawienia applyScale stoso­wa­na jest percentScale

u      Jeśli useScale wynosi FALSE, zaś applyScale wynosi TRUE, do de­fi­nio­wa­nia skali używane są właściwości xSize i ySize

u      Jeśli wartość jest dodatnia, wykorzystywana jest do definiowania współ­rzęd­nych na osi x lub y.

u      Jeśli wartość wynosi 0, współrzędne x i y mogą się zmieniać bez ogra­niczeń.

u      Jeśli wartość jest ujemna, współrzędne x i y mogą się zmieniać, ale nie mo­gą 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 war­tość dodatnia.

ExportSettings

Obiekt ExportSettings posiada właściwości, takie jak htmlDestination "sa­me" one up" "custom" "clipboard") i shimGeneration "none" "tran­s­pa­rent" "internal" "nested tables" Kompletną listę właściwości i wartości związ­anych z obiektem ExportSettings znajdziesz w dokumentacji tech­nicznej Extending Fireworks.

filePathForRevert

Właściwość filePathForRevert zwraca ścieżkę dostępu, którą może odczytać po­le­ce­nie Revert (Przywróć). Innymi słowy, zwracana jest ścieżka dostępu do pliku ot­war­te­go przy tworzeniu dokumentu. Stosuj filePathForRevert do determinowania orygi­nal­nej ścieżki dostępu dla plików nie będących plikami źródłowymi Fireworks oraz doku­men­tó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.

filePathForSave

Właściwość filePathForSave jest używana do odnajdywania i ustawiania nazwy pli­ku bieżącego dokumentu. Właściwość ta jest niezbędna do tworzenia zapasowych kopii pli­ków. Jeżeli plik nie został zapisany, zwracane jest zero. Poniższy kod używa właś­ci­woś­ci filePathForSave do przechowania nazwy pliku do późniejszego wykorzys­ta­nia w trakcie operacji tworzenia kopii zapasowych:

function saveName(theDoc)

fills

Wł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 gradientpat­tern. Kompletną listę właściwości i wartości obiektu Fill znajdziesz w doku­men­ta­cji Extending Fireworks.

frameCount

Liczba klatek w dokumencie.

frameLoopingCount

Moż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;

frames

Właściwość frames jest tylko do odczytu i jest tablicą zawierającą obiekty Frames znaj­dujące się w dokumencie. Obiekt Frame posiada właściwości takie jak layersdelay. Kompletną listę właściwości i wartości obiektu Frame znajdziesz w doku­men­ta­cji Extending Fireworks.

gammaPreview

Właściwość gammaPreview może być ustawiana na TRUE lub FALSE. W systemach Win­dows TRUE oznacza, że włączona jest opcja View Macintosh Gamma. W MacOS TRUE oznacza, że włączona jest opcja View Windows Gamma

gradients

Właściwość gradients jest przeznaczoną tylko do odczytu tablicą zawierającą obiek­ty Gradient dostępne w bieżącym dokumencie. Kompletną listę właściwości i war­tości obiektu Gradient znajdziesz w dokumentacji Extending Fireworks.

gridColor

Kolor, w jakim wyświetlana jest siatka dokumentu, który można ustawiać również w ok­nie dialogowym Grid

gridOrigin

Punkt definiujący początek siatki. Początek siatki może być również ustawiany poprzez prze­ciąganie punktu przecięcia linijki poziomej z pionową.

gridSize

Odległ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

guides

Właściwość guides jest tylko do odczytu i jest związana z obiektem Guides, po­sia­da­ją­cym właściwości, takie jak color i locked. Kompletną listę właściwości i wartości obiek­tu Guides znajdziesz w dokumentacji Extending Fireworks.

height

Wysokość dokumentu, mierzona w pikselach.

isDirty

Często przed wykonaniem operacji na plikach konieczne jest określenie, czy pli­ki te zostały zmodyfikowane. Właściwość isDirty zwraca TRUE, jeśli dokument zo­stał zmodyfikowany od ostatniego zapisu lub nie został w ogóle zapisany. W prze­ciw­nym wypadku, zwracane jest FALSE

isPaintMode

Właściwość tylko do odczytu, która zwraca TRUE, jeśli dokument jest w edycji trybu malowania; w prze­ciw­nym wypadku, zwracane jest FALSE

isSymbolDocument

Właściwość tylko do odczytu, która zwraca TRUE, jeśli dokument jest symbolem gra­ficznym lub symbolem przycisku. W przeciwnym wypadku zwracane jest FALSE. Ok­no edycji symbolu jest dokumentem jak każdy inny.

isValid

Właściwość isValid zwraca TRUE, jeśli bieżący dokument jest nadal otwarty, lub FALSE jeśli został zamknięty

lastExportDirectory

Docelowy katalog ostatniej operacji eksportu, wyrażany jako URL pliku.

lastExportFile

Docelowy plik ostatniej operacji eksportu, wyrażany jako URL pliku.

layers

Wł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ą lis­tę właściwości i wartości obiektu layer znajdziesz w dokumentacji Extending Fire­works.

left

Właściwość left jest podawaną w pikselach wartością określającą odległość najdalej wy­suniętego obiektu dokumentu od lewej krawędzi obszaru roboczego.

mapType

Typ mapy obrazka tworzonej przez dokument. Możliwe wartości to client server lub obie naraz.

matteColor

Wartość koloru Matte w dokumencie, która może być definiowana także w palecie Optimize

onionSkinAfter

Liczba klatek znajdujących się po bieżącej klatce, które mogą być wyświetlane w tech­ni­ce "onion skinning". Wartość ta może być definiowana również w oknie dialogowym Onion Skinning, dostępnym z poziomu palety Frames

onionSkinBefore

Liczba klatek znajdujących się przed bieżącą klatką, które mogą być wyświetlone w tech­nice "onion skinning".

pathAttributes

Wł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 doku­men­ta­cji Extending Fireworks.

pngText

Właściwość pngText jest tekstem znajdującym się w obiekcie Fireworks.

resolution

Ustawienia rozdzielczości drukowania dokumentu. Wartości tej właściwości należą do przedziału od 1 do 5000.

resolutionUnits

Jednostka miary ustawień rozdzielczości drukowania dokumentu (właściwości reso­lution). Jednostkami tymi mogą być cale lub centymetry, oznaczane odpo­wied­nio "inch" i "cm"

textures

Właściwość textures jest przeznaczoną tylko do odczytu tablicą obiektów Texture dostępnych w bieżącym dokumencie. Obiekt Texture posiada jedną właś­ci­wość tylko do odczytu - name - zawierającą nazwę tekstury.

top

Właściwość określająca odległość najwyżej położonego obiektu od gór­nej krawędzi dokumentu.

useMatteColor

Może wynosić TRUE lub FALSE. Jeśli wynosi TRUE, przy eksportowaniu używany jest ko­lor Matte zdefiniowany w palecie Optimize lub za pomocą właściwości matteColor

width

Mierzona w pikselach szerokość dokumentu.

Metody

Metody obiektu Document pozwalają użytkownikowi na wykonywanie wielu przy­dat­nych operacji. Za ich pomocą można uaktywniać, zapisywać, zamykać pliki i wyko­ny­wać wiele innych zadań. Metody findExportFormatOptions() i make­Good­Native­Fi­lePath() 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żkaDo­stę­pu jest obowiązkowy, zaś jeśli pominiesz argument opcjeEksportu, użyte zo­sta­ną bieżące ustawienia eksportu. Jeżeli opcjeEksportu zostaną zdefiniowane, ich wykorzystanie nie będzie miało żadnego wpływu na właściwość dokumentu - ex­port­Options. 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ń eks­por­tu. Jeśli ustawienie posiada określoną nazwę, zwracany jest obiekt Document z takimi samy­mi ustawieniami, jakie ma właściwość exportOptions. Jeśli nie ma usta­wień o podanej nazwie, zwracane jest zero.

makeActive()

Metodę makeActive() można wykorzystać do uaktywniania dokumentów w Fire­works. Aktywny dokument jest następnie przenoszony na wierzch wszystkich pozos­ta­łych dokumentów.

makeGoodNativeFilePath(ścieżkaDostępu)

Statyczna metoda makeGoodNativeFilePath pozwala upewnić się, czy podana ścież­ka do­stępu kończy się właściwym rozszerzeniem pliku, czyli .png. Po zastosowaniu tej me­tody, wszystkie rozszerzenia plików zamieniane są na .png. Poniższy kod, jako wynik wszys­tkich 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 loka­li­zacjach domyślnych. Jeśli opcjonalny argument gotoweAbyZapisaćJako wynosi TRUE, użyt­kow­nik 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 za­pisany, operacja zakończy się niepowodzeniem i zwrócone zostanie FALSE. Po po­praw­nym zapisaniu pliku, znacznik dokumentu jest usuwany. Metoda save() zwraca TRUE, je­śli operacja zapisu zakończy się powodzeniem i FALSE w przeciwnym przypadku.

Aby wymusić wyświetlenie okna dialogowego Save As (Zapisz jako), przed wywołaniem Document.save() ustaw właściwość fw.filePath­For­Save na zero.

 

saveCopyAs(pathname)

Aby zapisać kopię bieżącego dokumentu, możesz użyć metody saveCopyAs(). Musi zo­stać użyta pełna ścieżka dostępu do pliku, na przykład "file:///images/logo.png". Za po­mocą tej metody nie są modyfikowane właściwości filePathForSave i isDirty

Błędy

Fireworks API zawiera obiekt Errors informujący użytkownika o błędach wystę­pu­ją­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 znaj­d­ziesz 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

Właściwość

Komunikat

EAppAlreadyRunning

An internal error occurred. Fireworks is optimizing an image. (Wystąpił wewnętrzny błąd. Fireworks optymalizuje obrazek.)

EAppNotSerialized

An internal error occurred. (Wystąpił wewnętrzny błąd.)

EArrayIndexOutOfBounds

An internal error occurred. (Wystąpił wewnętrzny błąd.)

EBadFileContents

Unsupported file format. (Nieobsługiwany format pliku.)

EBadJIsVersion

This script does not work in this version of Fireworks. (Ten skrypt nie działa w tej wersji Fireworks.)

EBadNesting

An internal error occurred. (Wystąpił wewnętrzny błąd.)

EBadParam

A parameter was incorrect. (Nieprawidłowy parametr.)

EBadParamType

A parameter was not the correct type. (Nieprawidłowy typ parametru.)

EBadSelection

The selection was incorrect for this operation. (Niewłaściwy wybór dla tej operacji.)

EBufferTooSmall

An internal error occurred. (Wystąpił wewnętrzny błąd.)

ECharConversionFailed

An internal error occurred. (Wystąpił wewnętrzny błąd.)

EDatabaseError

An internal error occurred. (Wystąpił wewnętrzny błąd.)

EDeletingLastMasterChild

A symbol must contain at least one object. (Symbol musi zawierać co najmniej jeden obiekt.)

EDiskFull

The disk is full. (Dysk jest pełny.)

Tabela 26.3.

Właściwości obiektu Errors (ciąg dalszy)

Właściwość

Komunikat

EDuplicateFileNname

File name is already in use. (Taka nazwa pliku już istnieje.)

EFileIsReadOnly

File is locked. (Plik jest zablokowany.)

EFileNotFound

The file was not found. (Plik nie został odnaleziony.)

EGenericErrorOccurred

An error occurred. (Wystąpił błąd.)

EGroupDepth

An internal error occurred. (Wystąpił wewnętrzny błąd.)

EIllegalThreadAccess

An internal error occurred. (Wystąpił wewnętrzny błąd.)

EInternalError

An internal error occurred. (Wystąpił wewnętrzny błąd.)

ELowOnMem

Memory is nearly full. (Pamięć jest prawie zapełniona.)

ENoActiveDocument

This command requires an active document. (Polecenie wymaga aktywnego dokumentu.)

ENoFilesSelected

At least one file must be selected for scripts to operate. (Aby wykonać skrypt, trzeba zaznaczyć przynajmniej jeden plik.)

ENoNestedMastersOrAliases

Although symbols may contain other symbols, a symbol can not contain a copy of itself. Symbols may not contain Instances or other Symbols. (Mimo że symbole mogą zawierać inne symbole, symbol nie może zawierać kopii samego siebie. Symbole nie mogą zawierać kopii.)

ENoNestedPasting

The JavaScript contains a paste step, which would create an endless loop. (JavaScript zawiera wklejony krok, który może utworzyć niekończącą się pętlę.)

ENoSliceableElems

No paths were found. Objects were cut. (Ścieżki nie zostały odnalezione. Obiekty zostaną wycięte.)

ENoSuchElement

An internal error occurred. (Wystąpił wewnętrzny błąd.)

ENotImplemented

An internal error occurred. (Wystąpił wewnętrzny błąd.)

ENotMyType

An internal error occurred. (Wystąpił wewnętrzny błąd.)

EOutOfMem

Fireworks is low on memory. (Zbyt mało pamięci dla Fireworks.)

EResourceNotFound

An internal error occurred. (Wystąpił wewnętrzny błąd.

ESharingViolation

An internal error occurred. (Wystąpił wewnętrzny błąd.)

EUnknownReaderFormat

Unknown file type. (Nieznany typ pliku.)

EUserCanceled

An internal error occurred. (Wystąpił wewnętrzny błąd.)

EUserInterrupted

An internal error occurred. (Wystąpił wewnętrzny błąd.)

EWrongType

An internal error occurred. (Wystąpił wewnętrzny błąd.)

Celowe wywoływanie błędów

Podczas programowania w Fireworks na pewno przyda Ci się wiedza na temat błędów, na jakie może natknąć się użytkownik podczas pra­cy ze stworzonym przez Ciebie programem. Kiedy użytkownik zgłasza błąd, zwykle podaje kod błędu, jaki otrzymał. Na szczęście Fireworks wy­świetla opisowe komunikaty błędów, a nie ciągi cyfr zrozumiałe je­dy­­nie dla kogoś, kto posiada ich opis.

W dokumentacji Extending Fireworks kody błę­dów opisane są jedynie w postaci posortowanej alfabetycznie listy:

EAppAlreadyRunning, EAppNotSerialized, EArrayIndexOutOfBounds, EBadFileContents, EBadJsVersion, EBadNesting, EBadParam, EBadParamType, EBadSelection, EBufferTooSmall, ECharConversionFailed, EDatabaseError, EDeletingLastMasterChild, EDiskFull, EDuplicateFileName, EFileIsReadOnly, EFileNotFound, EGenericErrorOccurred, EGroupDepth, EIllegalThreadAccess, EInternalError, ELowOnMem, ENoActiveDocument, ENoFilesSelected, ENoNestedMastersOrAliases, ENoNestedPasting, ENoSliceableElems, ENoSuchElement, ENotImplemented, ENotMyType, EOutOfMem, EResourceNotFound, ESharingViolation, EUnknownReaderFormat, EUserCancelled, EUserInterrupted, EWrongType.

Komunikaty błędów wymienione w tabeli 26.3 występują w angielskiej wer­sji programu. Jak więc programista może zorientować się, co te ko­munikaty oznaczają w je­go języku? Używam do tego celu samego Fire­works i makropoleceń.

Jeśli muszę przekonwertować tekst pomiędzy różnymi formatami, uży­wam do tego celu Worda. W tym przypadku musiałem wykorzystać lis­tę kodów oddzielanych przecinkami i wstawić ją do kodu generującego ko­munikaty błędów. Kod mojego generatora błędów wyglądał nastę­pująco:

var theError = Errors.errorCode

Alert (theError)

W którym zmienna errorCode wskazywała na jeden z trzydziestu sied­miu kodów. Aby zrealizować mój plan, najpierw wykorzystałem wyszu­ki­wanie w Wordzie do znalezienia w li­ście kodów wszystkich połączeń prze­cinka i spacji (te znaki oddzielają od siebie kody błędów) i zamia­ny ich na kod nowego wiersza. W ten sposób otrzymałem listę, w któ­rej każ­dy kod znajdował się w nowej linii. Potem wykorzystałem makro­po­le­cenie wsta­wiające do listy tekst var theError = errors. przed kodem błę­du i tekst alert(theError) po kodzie błędu. Teraz więc to, co wyglą­da­ło tak:

EAppAlreadyRunning

EAppNotSerialized

EArrayIndexOutOfBounds

zostało zmienione na:

var theError = Errors.EAppAlreadyRunning

alert(theError)

var theError = Errors.EAppNotSerialized

alert(theError)

var thError = Errors.EArrayIndexOutOfBounds

alert(theError)

W ten sposób zamieniona została cała lista błędów. Następnie za­pi­sa­łem ten plik jako standardowy plik tekstowy, dodając mu rozsze­rze­nie .jsf i tworząc w ten sposób polecenie Fireworks. Po uruchomieniu tego polecenia Fireworks wyświetlił kolejno wszystkie komunikaty błę­dów.

Obiekt Find

W 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 funk­cja "znajdź i zamień" w Fireworks umożliwia wyszukiwanie bardzo różnych ele­men­tów, takich jak tekst, czcionka, kolor i URL, argument findParms pozwala pobierać ta­bele 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ą na­stę­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 obiek­tu Find, określane za pomocą metody whatToFind(). W tabeli 23.4 znajduje się szcze­gó­łowy opis czterech typów parametrów obiektu Find text (tekst), font (czcionka), color (kolor) i url (URL).

Podczas definiowania kolorów w operacjach "znajdź i zamień", dobrze jest określić kilka kluczowych zmiennych i wielokrotnie je wyko­rzys­tywać:

var kSolidWhite = "255 255 255 255";

var kSolidBlack = "0 0 0 255";

var kTransparent = "255 255 255 0";

var kRed = "255 0 0 255";

var kGreen = "0 255 0 255";

var kBlue = "0 0 255 255";

 

Obiekt Files

Obiekt Files jest ważnym obiektem Fireworks API, który zawiera ponad 20 funkcji umo­żli­wia­jących wykonywanie większości operacji na plikach. Wszystkie metody obiektu Fi­les, z wyjątkiem close readline() i write(), są statyczne i muszą być wy­wo­ły­wane 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

Typ wyszukiwania

Właściwość lub metoda

Możliwe wartości

tekst

whatToFind

"text"

find

"Dowolny łańcuch tekstowy"

replace

"Dowolny łańcuch tekstowy"

wholeWord

(TRUE|FALSE)

matchCase

(TRUE|FALSE)

regExp

(TRUE|FALSE)

czcionka

whatToFind

"font"

find

"nazwa poszukiwanej czcionki"

replace

"nazwa zamiennej czcionki"

findStyle

(od -1 do 7)

gdzie -1 to (dowolny styl),

0 - (brak stylów), 1 - (pogrubienie), 2 - (kursywa),

3 - (pogrubienie i kursywa),

4 - (podkreślenie),

5 - (pogrubienie i podkreślenie),

6 - (kursywa i podkreślenie)

i 7 - (pogrubienie, kursywa i podkreślenie)

replaceStyle

(od -1 do 7) tak jak w metodzie findStyle

findMinSize

findMaxSize

replaceSize

(0-9999 lub -1 oznaczające "ten sam rozmiar")

kolor

whatToFind

"color"

find

Wartości kanałów RGB i alfa z przedziału od 0 do 255

replace

Wartości kanałów RGB i alfa z przedziału od 0 do 255

fills

(TRUE|FALSE)

strokes

(TRUE|FALSE)

effects

(TRUE|FALSE)

URL

whatToFind

"url"

find

"poszukiwany url"

replace

"zamienny url"

wholeWord

(TRUE|FALSE)

matchCase

(TRUE|FALSE)

regExp

(TRUE|FALSE)

close()

Jak można wywnioskować z jej nazwy, metoda close() zamyka pliki. Nie jest ona nie­zbęd­na - 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 argu­men­cie docelowaŚcieżkaDostępu już istnieje. Innymi słowy - copy() nie potrafi nad­pisywać plików. Za pomocą tej funkcji nie można także kopiować całych kata­logów.

createDirectory(ścieżkaDostępu)

Rzadko w trakcie przetwarzania wsadowego występuje potrzeba utworzenia nowego ka­talogu, 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 po­da­nej nazwie już istnieje, metoda zakończy się niepowodzeniem. Argumenty mactype (typ pliku) i maccreator (związana z plikiem aplikacja) są niezbędne do poprawnego two­rzenia plików w systemach MacOS.

Więcej informacji o kodach typów plików w MacOS znajdziesz w roz­dzia­le 14.

 

deleteFile(ścieżkaDostępu)

Metoda deleteFile() służy do usuwania plików lub całych katalogów. Jeśli zostanie z po­wodzeniem 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 za­rów­no 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ąć odna­le­zio­nego pliku.

enumFiles(ścieżkaDostępu)

Metoda enumFiles() zwraca tablicę ścieżek dostępu wszystkich plików zdefi­nio­wa­nych w argumencie. Argument ścieżkaDostępu nie powinien być jednak wskaź­ni­kiem 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 ka­ta­log. FALSE jest zwracane jedynie w przypadku, gdy plik lub katalog nie istnieje albo po­dana ś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 ka­talogu. 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 pli­ku 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 getFi­lename(), która wydobywa z pełnej ścieżki dostępu jedynie nazwę pliku. Po­niż­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 ko­piowania 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 ko­lej­nych podrozdziałów. Zwróć uwagę, że metoda getLastErrorString() przeznaczona jest do zwracania błędów wywoływanych przez metody obiektu Files. Obiekt Errors jest uży­wany do wyświetlania komunikatów o błędach powstających w innych sy­tuacjach.

getTempFilePath([nazwaKatalogu])

Metoda getTempFilePath() zwraca ścieżkę dostępu do systemowego tymczasowego ka­talogu plików. Funkcja ta nie tworzy pliku, zwraca jedynie unikatową ścieżkę dos­tę­pu, nie kolidującą z żadnym istniejącym plikiem. Jeśli zostanie podany argument
nazwaKatalogu
(i nie będzie wynosił zero), ścieżka dostępu będzie wskazywała plik w podanym katalogu, a nie w katalogu tymczasowym. Argument nazwaKatalogu traktowany jest dosłownie i nie są dodawane żadne inne informacje o ścieżce.

W systemach Windows - metoda getTempFilePath() - w zależności od ustawień sys­temowych - zwraca przeważnie ścieżkę file:///C|/windows/TEMP/00000001. Na MacOS zwracana jest przeważnie ścieżka file:///Ma­cintosh%20HD/Tem­po­rary 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ę ka­talogu z jednego źródła, zaś nazwę pliku z innego źródła, a następnie połączyć je, aby za­pisać plik. Taką właśnie operację wykonuje metoda makePathFromDirAndFile(). Naz­wa katalogu określana jest przez pierwszy argument, a nazwa pliku przez drugi ar­gu­ment, 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 odczy­ta­nia 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 Fire­works funkcja ta obsługiwana jest za pomocą metody opartej na kopiach - readline(). Wier­sze 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 przy­kład poniższy kod:

Files.rename("file:///images/logo.png", "newlogo.png")

zmienia nazwę pliku "logo.png" na "newlogo.png" i zwraca file:///images/new­logo.png

setFilename(ścieżkaDostępu, nazwaPliku)

Metoda setFilename() zamienia nazwę pliku znajdującego się w określonym poło­że­niu 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 żad­ne­go wpływu na pliki zapisane na dysku, lecz manipuluje ścieżkami dostępu. Podczas gdy me­toda setFileName() wykonuje takie same operacje co rename(), tylko rename() zmie­nia 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 eks­portu. 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ą.

Metoda swap() posiada dwa ograniczenia. Po pierwsze - możesz pod­mie­niać tylko pliki, ale nie katalogi. Po drugie - oba wykorzystywane w zamianie pliki muszą znajdować się na tym samym dysku.

 

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, mu­sisz dołączyć do kodu wyrażenie \n, jak w poniższym przykładzie:

theString = "Log Report\n";

theFile.write(theString)

Obiekty Hotspot

Obszary aktywne (ang. hotspots) są jednym z dwóch typów obiektów internetowych w Fire­works. Wraz z plastrami, aktywne obszary umożliwiają tworzenie wielu różnych in­terakcji. Obiekty obszarów aktywnych w Fireworks API to w większości właściwości prze­zna­czo­ne tylko do odczytu, które pozwalają na zbieranie dowolnych infor­ma­cji o ma­pach obrazków osadzanych w dokumentach Fireworks.

Ponieważ obszary aktywne i plastry obsługiwane są przez wiele ta­kich samych mechanizmów, kilka obiektów Fireworks API (exportDoc, BehaviorInfo i BehaviorsList) wymienionych w poniższej tabeli dla obiek­tów Hotspot obowiązuje także dla plastrów.

 

exportDoc

Obiekt 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ę po­za 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ów

Z 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 ak­tyw­nych obszarów, ale i określać, jakie behawiory są do nich przydzielone.

Tabela 26.5.

Właściwości obiektu exportDoc

Właściwość

Możliwe wartości

Opis

altText

Tekst

Łańcuch tekstowy wykorzystywany jako zastępczy tekst (Alt Text) dla dokumentu

backgroundColor

Łańcuch szesnastkowy

Łańcuch definiujący szesnastkowy kolor obszaru roboczego dokumentu

backgroundIsTransparent

TRUE|FALSE

Zwraca TRUE, jeśli obszar roboczy jest przezroczysty lub jeśli obszar jest eksportowany jako przezroczysty GIF

backgroundLink

URL

Względny lub absolutny adres URL łącza tła

docID

Liczba

Liczba przydzielana do każdego dokumentu dla identyfikacji stworzonego z niego HTML. Liczba nie zmienia się, ale wynikiem wielu poleceń "Save As" (Zapisz jako) może być wiele dokumentów z tą samą właściwością docID

docSaveName

Tekst

Nazwa pliku użyta podczas jego zapisywania, np. "nav.gif". Informacje o ścieżce dostępu nie są zamieszczone

emptyCellColor

Tekst

Łańcuch koloru komórki pustej tabeli

emptyCellContents

Liczba

Określa, co należy do pustych komórek; wartości 1 (nic), 2 (obrazek jednopikselowy), 3 (odstęp nieprzerwany)

emptyCellUsesCanvasColor

TRUE|FALSE

Jeżeli TRUE, puste komórki otrzymują wartość backgroundColor; jeżeli FALSE, otrzymują wartość emptyCellColor

filename

Względny URL

Adres URL eksportowanego obrazka zależny od generowanego dokumentu HTML, na przykład images/Button.gif. W szablonie slices.htt właściwość ta zwraca nazwę bazową i rozszerzenie, na przykład Button_r2_c2.gif

generateHeader

TRUE|FALSE

Zwraca TRUE, jeśli eksportowany jest plik HTML, zaś FALSE jeśli kod HTML jest eksportowany do schowka

hasAltText

TRUE|FALSE

Zwraca TRUE, jeśli w oknie dialogowym HTML Properties został zdefiniowany tekst zastępczy

hasBackgroundLink

TRUE|FALSE

Zwraca TRUE, jeśli w oknie dialogowym HTML Properties zostało zdefiniowane łącze tła

height

Liczba

Wysokość eksportowanego obrazka, mierzona w pikselach. W szablonie slices.htt jest to suma wysokości wszystkich eksportowanych obrazków.

Tabela 26.5.

Właściwości obiektu exportDoc (ciąg dalszy)

Właściwość

Możliwe wartości

Opis

htmlOutputPath

URL

Kompletny URL pliku, do którego zostanie zapisany kod HTML

imagename

Tekst

Nazwa bazowa obrazka, bez rozszerzenia pliku, na przykład Button

includeHTMLComments

TRUE|FALSE

Jeżeli TRUE, komentarze pozostają w HTML; jeżeli FALSE, usuwane są wszystkie zbędne komentarze

numFrames

Liczba

Liczba klatek w pliku

pathBase

Ścieżka dostępu bez rozszerzenia pliku

Nazwa pliku bez rozszerzenia, na przykład images/Button

pathSuffix

Rozszerzenie w nazwie pliku

Rozszerzenie nazwy pliku, na przykład gif

startColumn

Liczba

Wskazuje kolumnę dla plastra podczas eksportowania kodu HTML dla pojedynczego plastra. Używana jedynie w szablonie metafile.htt

startRow

Liczba

Wskazuje rząd plastra podczas eksportowania kodu HTML dla pojedynczego plastra. Używana jedynie w szablonie metafile.htt

style

Tekst

Styl HTML użyty do eksportu, np. "Dreamweaver", "Generic" lub "FrontPage"

width

Liczba

Szerokość eksportowanego obrazka, mierzona w pikselach. W szablonie slices.htt jest to suma szerokości wszystkich eksportowanych plastrów

Obiekt ImageMap

Podobnie jak w przypadku kilku innych rozszerzeń Fireworks API, większość zadań obiek­tu ImageMap obsługiwana jest za pomocą tablic. Każdy element tablicy tego obiek­tu 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ści

Wł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.

Metody

Jedyne 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

 

Właściwość

Możliwe wartości

Opis

 

 

altText

Tekst

Definiuje tekst zastępczy

 

 

behaviors

Obiekt BehaviorsList (opisany w jednym z kolejnych podrozdziałów)

Zwraca opis behawiorów przydzielonych do aktywnych obszarów

 

 

hasAltText

TRUE|FALSE

Zwraca TRUE, jeśli określony został tekst zastępczy

 

 

hasHref

TRUE|FALSE

Zwraca TRUE, jeśli do aktywnego obszaru został przydzielony URL

 

 

hasTargetText

TRUE|FALSE

Zwraca TRUE, jeśli został zdefiniowany cel aktywnego obszaru

 

 

href

Względny lub absolutny URL

Przydzielony URL

 

 

numCoords

1 dla okręgu, 2 dla prostokąta i dowolna liczba dla wielokąta

Współrzędne służące do opisu obszaru aktywnego w kodzie HTML

 

 

radius

Liczba

Promień okrągłego obszaru aktywnego

 

 

shape

circle (okrąg), rectangle (prostokąt) lub polygon (wielokąt)

Typ obszaru aktywnego

 

 

targetText

Nazwa ramki HTML

Określony cel

 

Z obiektem ImageMap związana jest jeszcze jedna właściwość - Be­ha­viors. Obiekt BehaviorInfo pracuje również z plastrami, więc został opi­sany szczegółowo w kolejnym podrozdziale.

 

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ś­ci­woś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 ImageMapList

Obiekt 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 wykorzysty­wa­na 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.

Behawiory

Behawiory Fireworks to elementy umożliwiające eksportowanie kodów JavaScript do­łą­cza­nych do stron WWW. Behawior jest przydzielony do obiektu internetowego (plastra lub obszaru aktywnego) i uruchamiany przez określoną czynność użytkownika, na przy­kład kliknięcie myszą lub najechanie na obrazek. Z behawiorami związane są dwa obiek­ty: BehaviorList i BehaviorInfo

Obiekt BehaviorInfo

Wszystkie 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 zda­rze­nia: onMouseOver OnClick onMouseOut i onLoad

W tabeli 26.7 znajdziesz właściwości obiektu BehaviorInfo i ich możliwe wartości.

Obiekt BehaviorsList

Jedyna właściwość obiektu BehaviorsList numberOfBehaviors - jest używana w ten sam sposób, co numberOfURLs z obiektem ImageMap, aby określić, ile beha­wio­ró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++)

Plastry

Plastrowanie 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 plas­trami związane są dwa obiekty: SliceInfo i Slices

Tabela 26.7.

Właściwości obiektu BehaviorInfo

Właściwość

Możliwe wartości

Opis

action

(Status Message)

(Swap Image)

(Button Down)

(Swap Image Restore)

(Button Highlight)

(Button Restore)

lub 9 (lista rozwijana)

Typ behawiora

downHighlight

TRUE|FALSE

Zwraca TRUE dla behawiora Button Highlight, jeśli istnieje wyróżniony obrazek

event

(onMouseOver)

(onClick)

(onMouseOut)

lub 3 (onLoad)

Zdarzenie uruchamiające behawior

hasHref

TRUE|FALSE

Zwraca TRUE dla behawiora Swap Image, jeśli przełączany obrazek znajduje się w zewnętrznym pliku, a nie w innej klatce Fireworks

hasStatusText

TRUE|FALSE

Zwraca TRUE dla behawiora Status Message, jeśli tekst wyświetlany w pasku stanu nie jest pusty

hasTargetFrame

TRUE|FALSE

Zwraca TRUE dla behawiora Swap Image, jeśli przełączany obrazek znajduje się w innej klatce pliku Fireworks, a nie w pliku zewnętrznym

horzOffset

Liczba

Jeżeli właściwość action ma wartość 9 (lista rozwijana), właściwość horzOffset jest poziomym przesunięciem listy, w pikselach

href

URL pliku

URL używany w behawiorze Swap Image do przełączenia obrazka na plik zewnętrzny

preload

TRUE|FALSE

Zwraca TRUE dla behawiora Swap Image, jeśli obrazek będzie wstępnie ładowany

restoreOnMouseout

TRUE|FALSE

Zwraca TRUE dla behawiora Swap Image, jeśli zdarzenie onMouseOut przywraca oryginalny obrazek

statusText

Łańcuch tekstowy

Tekst używany w behawiorze Status Message

targetColumnNum

Liczba

Dla behawiora Swap Image oznacza kolumnę w tabeli plastrów, która powinna zostać wymieniona

targetFrameNum

Liczba (od 0 do liczby klatek minus 1)

Jeśli właściwość hasTargetFrame dla behawiora Swap Image wynosi TRUE, właściwość ta oznacza numer klatki, na którą będzie przełączany dokument. Pierwsza klatka ma numer 0

targetRowNum

Liczba

Dla behawiora Swap Image oznacza wiersz w tabeli plastrów, który powinien zostać wymieniony

vertOffset

Liczba

Jeżeli właściwość action ma wartość 9 (lista rozwijana), właściwość vertOffset jest pionowym przesunięciem listy, w pikselach

Obiekt SliceInfo

Obiekt SliceInfo umożliwia przeanalizowanie każdego aspektu pojedynczego plastra bę­dącego częścią większego obrazka.

Właściwości

Wszystkie 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

Właściwość

Możliwe wartości

Opis

altText

Tekst

Zastępczy tekst dla plastra

behaviors

Obiekt BehaviorsList

Obiekt BehaviorsList opisujący dowolne behawiory przydzielone do bieżącego plastra

cellHeight

Liczba pikseli

Wysokość bieżącego wiersza tabeli HTML

cellWidth

Liczba pikseli

Szerokość bieżącej kolumny tabeli HTML

downIndex

Liczba

Wskaźnik plastra używany przy eksporcie przycisku jako wielu plików

getFrameFileName (frameIndex)

Liczba

Zwraca nazwę bazową plastra na określonej klatce

hasAltText

TRUE|FALSE

Zwraca TRUE, jeśli plaster posiada tekst zastępczy

hasHref

TRUE|FALSE

Zwraca TRUE, jeśli plaster posiada URL

hasHtmlText

TRUE|FALSE

Zwraca TRUE, jeśli plaster jest tylko tekstowy

hasImage

TRUE|FALSE

Zwraca TRUE, jeśli bieżący plaster zawiera obrazek. W przypadku plastra tekstowego zwracane jest FALSE

hasImageMap

TRUE|FALSE

Zwraca TRUE, jeśli z bieżącym plastrem związany jest jakiś obszar aktywny

hasTargetText

TRUE|FALSE

Zwraca TRUE, jeśli dla bieżącego plastra zdefiniowany jest jakiś cel

height

Liczba pikseli

Wysokość obrazka znajdującego się w plastrze. Wliczane są także odległości od marginesów komórki tabeli

href

URL

URL bieżącego plastra

htmlText

Tekst

Łańcuch tekstowy dla tekstowego plastra

imagemap

Obiekt ImageMapList

Obiekt ImageMapList opisujący wszystkie aktywne obszary przydzielone do plastra

imageSuffix

Rozszerzenie pliku

Rozszerzenie pliku obrazka znajdującego się w bieżącym plastrze, wraz z kropką

Tabela 26.8.

Właściwości obiektu SliceInfo (ciąg dalszy)

Właściwość

Możliwe wartości

Opis

isUndefined

TRUE|FALSE

Zwraca TRUE, jeśli bieżący plaster nie jest związany z żadnym plastrem narysowanym przez użytkownika. Fireworks automatycznie generuje plastry dla pokrycia tych niezdefiniowanych komórek

left

Liczba pikseli

Lewy bok komórki podawany w pikselach, rozpoczynając od zera

nestedTableSlices

Obiekt Slices (opisany w kolejnym podrozdziale)

Obiekt Slices opisujący tabelę zagnieżdżoną w bieżącej komórce tabeli. Zwraca zero, jeśli w komórce nie jest zagnieżdżona żadna tabela

setFrameFileName (frameIndex)

Liczba całkowita, poczynając od zera

Sprawdza określoną klatkę i nadaje nazwę pliku dla plastra, bez informacji o ścieżce. Jeżeli ustawisz nazwę "" (pusty łańcuch), obrazek nie będzie eksportowany

skipCell

TRUE|FALSE

Zwraca TRUE, jeśli komórka tabeli z bieżącym plastrem znajduje się w poprzednim wierszu lub kolumnie tabeli

targetText

Nazwa ramki HTML

Cel bieżącej ramki

top

Liczba pikseli

Górna krawędź komórki podawana w pikselach, rozpoczynając od 0

width

Liczba pikseli

Szerokość obrazka znajdującego się w plastrze. Wliczane są także odległości od marginesów komórki tabeli

Metody

Obiekt SliceInfo posiada dwie metody: getFrameFileName() i setFrameFileName Obie są metodami statycznymi.

getFrameFileName(klatka)

Metoda getFrameFileName() odczytuje nazwę pliku dla bieżącego plastra i klatki. Zwra­cana nazwa nie zawiera żadnych informacji o ścieżkach dostępu, takich jak rozszerzenie ka­talogu lub pliku. Na przykład, korzystając z wartości domyślnych Fireworks, nazwa pierw­szego plastra pliku o nazwie newLogo.gif powinna brzmieć newLogo_r1_c1. Pierw­sza klatka pliku ma zawsze numer 0, a wszystkie znajdujące się w niej plastry są prze­ważnie nazwane. Dla klatki z numerem 1 i następnych, nazywane są tylko plastry uży­wane 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 po­mocą dwóch argumentów określ numer klatki i nową nazwę plastra, jak w po­niż­szym kodzie:

SliceInfo.setFrameFileName(swapFrame, fileName)

Interesującym efektem ubocznym metody setFrameFileName() jest moż­liwość określenia, które obrazki są zapisane. Domyślnie Fire­works jest tak ustawiony, że wszystkie plastry znajdujące się w klatce z numerem 0 są nazwane, a wszystkie inne pozostają bez nazw. Jeśli be­hawior Swap Image używa plastra z drugiego wiersza, trzeciej ko­lum­ny w klatce 2, szablon eksportu ustawi nazwę pliku klatki, aby mógł zostać zapisany. Plastrom znajdującym się w klatce zero możesz rów­nież przydzielać puste łańcuchy, jeśli nie chcesz, aby były za­pi­sy­wa­ne. Jest to dokładnie taka sama metoda, jakiej używa opcja "Don't export undefined slices" ("Nie eksportuj niezdefiniowanych plastrów").

Obiekt Slices

Obiekt 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 dwu­wy­miarowa przechowuje numery wierszy i kolumn oraz oznacza każdą kopię plas­tra. Na przykład plaster znajdujący się w pierwszym wierszu pierwszej kolumny ozna­czany jest wyrażeniem slices[0][0]. Kod podobny do poniższego umożliwi Ci prze­tworzenie 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 sta­tycz­ne właściwości: numRows i numColumns. Po zdefiniowaniu dwuwymiarowej tablicy iden­tyfikują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ł op­cję 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 API

Dodana 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 po­wtórzenia krok, każda z nich musi być dostępna jako osobna funkcja.

Tabela 26.9.

Właściwości obiektu Slices

Właściwość

Możliwe wartości

Opis

demoindex

Wskaźnik każdego pliku generowanego przy eksporcie wielostanowego przycisku

doDemoHTML

TRUE|FALSE

Zwraca TRUE dla eksportu rollovera składającego się z wielu plików

doShimEdges

TRUE|FALSE

Zwraca TRUE, jeśli znajdująca się w preferencjach dokumentu opcja Table Shims jest ustawiona na Transparent Image

doShimInternal

TRUE|FALSE

Zwraca TRUE, jeśli znajdująca się w preferencjach dokumentu opcja Table Shims jest ustawiona na Shims from Image

doSkipUndefined

TRUE|FALSE

Zwraca TRUE, jeśli znajdująca się w preferencjach dokumentu opcja Export Undefined Slices jest wyłączona

imagesDirPath

Względny URL

Ścieżka dostępu katalogu używanego do przechowywania obrazków znajdujących się w plastrach w tabeli. Jeśli obrazki i plik HTML znajdują się w tym samym katalogu, zwracany jest pusty łańcuch

numColumns

Liczba

Całkowita liczba kolumn tabeli HTML, z wyłączeniem kolumn zawierających jednopikselowe obrazki

numRows

Liczba

Całkowita liczba wierszy tabeli HTML, z wyłączeniem wierszy zawierających jednopikselowe obrazki

shimPath

Względny URL

Ścieżka do pliku GIF używanego jako jednopikselowy obrazek, na przykład images/shim.gif

Funkcje Fireworks JavaScript API można podzielić na trzy grupy, funk­cje dokumentu, funkcje palety History i ogólne funkcje Fireworks. Za pomocą tych funk­cji możesz powielić prawie każde polecenie Fireworks.

Fireworks JavaScript API (a także wszystkie inne metody i właściwości Fireworks) zos­tał opisany przez firmę Macromedia w dokumentacji Extending Fireworks. Zamiast po­wie­lać informacje zawarte w dokumentacji, w tym podrozdziale przedstawię, jak najlepiej je wyko­rzystać.

Funkcje obiektu Document

Jak zostało wspomniane już wcześniej, model rozszerzalności Fireworks jest w dużym stop­niu uzależniony od Document Object Model (DOM) - Obiektowego Modelu Doku­mentu. 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ą ak­cję, klikając przycisk Copy Selected Steps to Clipboard (Kopiuj zaznaczone kroki do schow­ka) i wklejając zawartość schowka do edytora tekstowego. Mimo tego, że tego typu dzia­łanie doskonale sprawdza się w operacjach wykonywanych na pojedynczych wier­szach, wypisywanie za każdym razem całej funkcji może być nieco kłopotliwe w pro­gra­mowaniu, 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 od­czy­tać 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. Naj­szyb­szym sposobem na zapisanie kodu odpowiedzialnego za wykonywanie okre­ślo­nych 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 od­tworzenia Twojej akcji. Następnym krokiem w tworzeniu polecenia jest zazwyczaj uogól­nienie parametrów, tak aby polecenie mogło być stosowane w wielu różnych przypad­kach. Jeśli na przykład w dokumencie Fireworks tworzony jest owal, Fireworks wy­ge­neruje 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 prze­pro­wa­dził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żyt­kow­nika lub przez inne funkcje kodu.

Funkcje Fireworks

Jedną z grup funkcji API tworzą funkcje Fireworks. Dotyczą one ogólnych operacji na dokumentach: tworzenia, eksportowania, zamykania i przywracania, a także przepro­wa­dzania operacji "znajdź i zamień". W kategorii tej często stosowana jest również funk­cja getDocumentDOM

Funkcje Fireworks są poprzedzane przedrostkami fireworks lub fw, które mogą występować zamiennie.

 

Funkcja getDocumentDOM() nie jest jedynym sposobem na uzyskanie dostępu do Do­cu­ment Object Model. Obie funkcje: createDocument() i createFireworksDocument() zwra­­cają 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 create­Fi­re­worksDocument() wymiary, rozdzielczość i kolor obszaru roboczego muszą zostać podane.

Kilka funkcji należących do tej kategorii jest używanych do połączeń z plikami znaj­du­ją­cymi się poza Fireworks. Za pomocą funkcji browseDocument() możesz obejrzeć doku­ment HTML lub inny zgodny plik w głównej przeglądarce internetowej. Jednym z za­stosowań tej funkcji jest wyświetlanie plików pomocy lub programowy podgląd eks­portowanych plików w przeglądarce internetowej. Dwie inne funkcje: browse­For­FileURL() i browseForFolderURL() pomagają w zapisywaniu plików w Fire­works. 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

W MacOS litera dysku (w tym przypadku C) zostanie zastąpiona nazwą napędu.

 

Funkcja browseForFolderURL() zwraca ścieżkę dostępu katalogu. Jest ona szcze­gól­nie przydatna, gdy chcesz zapisać grupę generowanych grafik we wspólnym katalogu i pro­gramowo 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 History

Jak można wywnioskować z ich nazwy, funkcje palety History dotyczą wyłącznie ope­ra­cji 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 roz­szerzają możliwości automatyzacji pracy w Fireworks. Przykładowo, zbudowałem po­le­cenie Repeat History (Powtórz historię), które pozwala użytkownikowi na pow­tó­rze­nie 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 aktu­al­nie zaznaczonych w palecie History

var theSteps = fw.historyPalette.getSelection

Następnie konieczne jest sprawdzenie, czy zaznaczono jakieś polecenia. Jeśli w palecie His­tory nie wybrano żadnych akcji, użytkownik jest proszony o zaznaczenie przy­naj­mniej jednej i ponowne wydanie polecenia:

if (theSteps.length == 0)

Po wybraniu co najmniej jednego polecenia, użytkownik jest proszony o podanie żą­da­nej 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. Ko­lej­ny 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 Dupli­ca­te (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 Trans­form. Później zaznaczę Clone i Rotate w palecie History i wydam polecenie Repeat His­tory, określając dla niego dziesięć powtórzeń. Utworzony zostanie w ten sposób efekt wybuchającej gwiazdy.

Polecenie Repeat History znajdziesz na dołączonym do książki CD-ROM-ie w katalogu Additional Extensions Joseph Lowery.

 

Przerabianie wbudowanych poleceń

Doskonałym przykładem na to, jak niewielki kod może pomóc w pracy jest do­sto­so­wy­wa­nie wbudowanych poleceń Fireworks. Na przykład, działanie bardzo przydatnych po­le­ceń z podmenu Animation jest ograniczone do 12 klatek. Nieważne, jaką animację two­rzysz, zawsze będzie ona miała tylko 12 klatek.

Po uruchomieniu polecenia animacji zostanie wyświetlone okno dialogowe wyja­śnia­jące jego działanie. Okno dialogowe potwierdzenia jest generowane za pomocą funk­cji 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ę con­firm(). 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 przy­padkach wartość funkcji confirm() jest przechowywana w zmiennej message. Następnym krokiem jest - "jeśli zmienna message wynosi TRUE, wykonaj polecenia znaj­dują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óż­ni­ce w wyświetlanych oknach dialogowych możesz zobaczyć na rysunku 26.5.

Rysunek 26.5.

Oryginalne polecenie Animation używa funkcji confirm()
do wyświetlenia prostego okna dialogowego potwierdzenia (u góry). Jeśli funkcję confirm() zastąpisz funkcją prompt(), wyświetlone zostanie okno dialogowe (na dole), umożliwiające wpisanie liczby, która zostanie wykorzystana jako liczba klatek w tworzonej animacji

Najważniejszą zmianą w modyfikowanym kodzie jest ustawienie zmiennej kNumFrames (a więc liczby klatek tworzonych za pomocą polecenia) na wartość wprowadzaną przez użyt­kownika w wyświetlanym oknie dialogowym. Za pomocą funkcji prompt() możesz rów­nież 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ą war­tość i polecenie nie wykona żadnych działań. Może się jednak zdarzyć, że użytkownik zde­finiuje 50, 100 lub 500 klatek i potem będzie tego gorzko żałował, gdy Fireworks będzie do­dawał do dokumentu klatkę po klatce, co na słabszych komputerach może trochę po­trwać. Większość animacji jest tworzonych z myślą o animowanych GIF-ach, więc praw­dopodobnie 30 klatek w zupełności wystarczy każdemu projektantowi. GIF skła­da­ją­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 war­tości, która niezależnie od zdefiniowanej liczby klatek zawsze obróci obiekt o 360ş. W ory­­ginalnym 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 wy­nió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.

Przed rozpoczęciem pisania kodu dobrze jest wiedzieć, z ilu kroków ma się składać animacja. Pisanie kodów rozpoczynam przeważnie od komentarzy. Proste komentarze pomagają w późniejszym ana­li­zo­wa­niu kodu, ale nie są bez znaczenia także podczas jego pisania.

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 te­go użytkownik) jak oryginalne polecenie Rotate. Po kliknięciu przycisku OK, użyt­kow­nik otrzyma 12-klatkową animację obiektów obracających się o 360ş. Użytkownik ma jed­nak, co najważniejsze, możliwość zdefiniowania innej liczby kroków animacji (rysunek 26.6).

 

Rysunek 26.6.

Zmodyfikowane polecenie Rotate (które nazwałem RotatePlus) umożliwia tworzenia animacji o dowolnej liczbie kroków. Na ilustracji (rozpoczynając od lewej) widać 6-, 12- i 36-krokowe obroty stylizowanej litery S, wyświetlanej z wykorzystaniem techniki "Onion Skinning"

 

Przed zmodyfikowaniem dowolnego polecenia dobrze jest najpierw sko­piować i zmienić nazwę pliku oryginalnego. Praca z kopią pliku poz­wala uchronić się przez zniszczeniem oryginalnego polecenia i za­cho­wać je na wypadek, gdybyś miał problemy przy two­rze­niu nowego polecenia. Zanim zacząłem modyfikowanie polecenia Rotate, skopiowałem je pod inną nazwą - RotatePlus i pozostawiłem w katalogu Commands/Animation. Aby je przetestować, wystarczyło za­pisać polecenie i wybrać jego nazwę z menu Commands Fireworks.

u      Pamiętaj, że do Fireworks wbudowany jest interpreter JavaScript 1.4. Dla­te­go też jest dostępnych o wiele więcej poleceń, niż tylko te oferowane przez i tak silny Fireworks API. JavaScript 1.4 pozwala na tworzenie zwy­kłych wyrażeń, funkcji "znajdź i zamień" oraz wiele innych operacji.

u      Upewnij się, że na końcu ostatniego wiersza kodu wstawiłeś znak końca wier­sza (Enter). Jeśli tego nie zrobisz, Fireworks nie wykona ostatniego wiersza ko­du, co może spowodować wystąpienie błędu.

u      Tworzenie skryptów możesz rozpocząć od wykonania jakichś działań w Fire­works, zaznaczenia reprezentujących te działania kroków w palecie History i sko­pio­wania ich do schowka za pomocą przycisku Copy Selected Steps to Clipboard (Kopiuj zaznaczone kroki do schowka), znajdującego się w palecie History. Następnie możesz wkleić za­wartość schowka do edytora tekstu i dostosować kod do własnych potrzeb.

Więcej informacji o palecie History znajdziesz w rozdziale 19.

 

Podsumowanie

Fireworks zawiera pełny zestaw JavaScript API umożliwiający dostęp z poziomu skryptów do większości funkcji aplikacji. Tworząc skrypty w Fireworks, pamiętaj o następu­ją­cych rzeczach:

u      Poprzez skrypty Fireworks można uzyskać dostęp do prawie wszystkich funk­cji programu.

u      Niestandardowe typy danych, takie jak kolory, maski i punkty, musisz właś­ci­wie sformatować w swoich skryptach.

u      Dostępnych jest pięć globalnych metod: alert confirm prompt WRITE_HTML() i write(). Metody te możesz wykorzystać do wyświetlania okien dialogowych oraz pobierania danych od użytkownika i zapisywania teks­tu lub kodu HTML w eksportowanych dokumentach.

u      Fireworks oferuje pięć zawsze dostępnych obiektów globalnych:

u      Obiekt fw daje dostęp do wielu funkcji Fireworks, takich jak preferencje i typ plat­formy, na jakiej uruchomiony jest program.

u      Obiekt Document daje dostęp do poszczególnych dokumentów, umożliwiając mo­dyfikowanie warstw, ustawianie opcji eksportu lub sprawdzanie, czy do­ku­men­ty były zmodyfikowane od ostatniego otwarcia.

u      Obiekt Errors pozwala na generowanie w skryptach komunikatów o błędach, któ­re są wyświetlane w zlokalizowanym języku.

u      Obiekt Files może być stosowany do kopiowania plików, tworzenia kata­lo­gów i wykonywania wielu innych operacji na plikach.

u      Obiekt Find daje dostęp do funkcji związanych z operacjami typu "znajdź i za­mień".

u      Obiekty takie jak BehaviorInfo BehaviorsList exportDoc ImageMapImageMapList umożliwiają sterowanie opcjami eksportu zdefiniowanymi w sza­blonach eksportu.

u      Dobrym początkiem w tworzeniu własnych skryptów jest modyfikowanie wbu­do­wanych poleceń Fireworks.


Document Info


Accesari: 1828
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )