Węzeł Anchor generelanie służy do tworzenia linków między światem VRML a innymi miejscami w sieci. Może on również odsyłać do miejsc zdefiniowanych w tym samym świecie za pomocą węzła Viewpoint. Węzeł Anchor posiada następującą budowę:
Anchor {
eventIn
MFNode addChildren
eventIn
MFNode removeChildren
exposedField MFNode
children []
exposedField SFString
description ""
exposedField MFString
parameter []
exposedField MFString
url
[]
field
SFVec3f bboxCenter 0 0 0
field
SFVec3f bboxSize -1 -1
-1
}
Jak widzimy (zdarzenia add/remove
children oraz pole children)
węzeł Anchor
jest również węzłem grupującym. Wszystkie obiekty zgrupowane w tym węźle
(w polu children)będą
poddane jego działaniu.
W polu description (SFString) w cudzysłowiu umieszczamy opis miejsca, do którego się przeniesiemy po kliknięciu na aktywny obiekt. Gdzie ten opis zostanie wyświetlony zależy od przeglądarki (czasem w ogóle nie jest wyświetlany). Nie należy jednak mylić tego opisu z opisem miejsca zdefiniowanego w węźle Viewpoint, są to zupełnie dwa różne niezależne od siebie pola, pomimo identycznej nazwy.
W polu parameter możemy zdecydować, w której ramce (frame) pliku HTML (jeżeli takie są zdefiniowane) ma pojawić się dokument, do którego odsyłamy, np:
#VRML V2.0 utf8
Anchor {
parameter [ "target=nazwa_ramki"
]
description "Plik
filmowy otworzy się w ramce nazwa_ramki"
url "http://www.enter.pol.pl/vrml/kurs/test.mpg"
children [
Shape { geometry Box {} }
]
}
Powyższy przykład wyświetla na ekranie plik VRML z jednym obiektem - sześcianem, który objęty jest działaniem węzła Anchor. Po kliknięciu na ten obiekt w ramce nazwa_ramki dokumentu HTML zostanie załadowany plik filmowy test.mpg (o ile wasza przeglądarka WWW jest zdolna do wyświetlania tego rodzaju plików). Najlepiej przykład ten działalby wtedy gdyby w jednej ramce dokumentu HTML uruchomiony został właśnie ten świat, a druga ramka byłaby pusta i czekała na załadowanie pliku test.mpg.
Jak już zapewne zdążyliście się zorientować, w polu url umieszczamy adres URL pliku, do którego chcemy uzytkownika odesłać. Możemy umieścić w nim ścieżkę dostępu do każdego z plików, które jest w stanie wasza przeglądarka WWW odtworzyć. Możemy również odesłać do innego miejsca Viewpoint tego samego świata, np:
Anchor {
url "#Pod drzewem"
...
}
Powyższy zapis przeniesie użytkownika obecnego świata do miejsca o nazwie "Pod drzewem" zdefiniowanego w węźle Viewpoint. Możemy także odesłać użytkownika do innego miejsca Viewpoint, innego świata VRML, np:
Anchor {
url "http://www.enter.pol.pl/vrml/dziura.wrl#Ziemia"
...
}
Ten przykład z kolei załaduje świat dziura.wrl od razu umieszczając nas w miejscu "Ziemia" zdefiniowanym w węźle Viewpoint.
To nie koniec atrakcji związanych z węzłem Anchor. W polu url możemy również umieścić skrypty napisane w JavaScript. Skrypty te mogą mieć identyczną formę jak te występujące w plikach HTML, musimy jedynie zmienić wszystkie znaki " na '. Możemy w ten sposób odwoływać się do metod JavaScriptu uatrakcyjniając w ten sposób wędrówkę po naszym świecie, np:
Anchor {
url "javascript:
alert('Znalazłeś Magiczną Kulę')"
children [
Shape { geometry DEF MagicznaKula Sphere {} }
]
}
Powyższy przykład powoduje, że po kliknięciu na Kulę pojawia się okno informujące o znalezieniu magicznej kuli. Możemy jednak umieścić tutaj o wiele bardziej złożony przykład:
#VRML V2.0 utf8
Anchor {
url "javascript:
var question='Ile jest 2+2';
var answer='4';
var correct = 'Brawo. Prawidłowa odpowiedź';
var incorrect = 'Niestety błąd. Przeładuj świat i spróbuj jeszcze raz';
var response = prompt(question,'?');
var output = (response == answer) ? correct : incorrect;
alert(output);"
children [
Transform {
translation 0 0 0
children [
Shape {
geometry Box {size 2 2 2}
}
]
}
]
}
Po kliknięciu na sześcian pokaże się okno (metoda prompt) z pytaniem ile jest 2+2. Jeżeli podamy błędną odpowiedź lub dobrą odpowiedź poinformuje nas o tym odpowiedni komunikat. W ten sposób można pobierać dane od użytkownika i dowolnie je przetwarzać.
Stosowanie skryptów JavaScript w węźle Anchor ma jedną wadę - działają one tylko w przeglądarkach Netscape i nie ma tutaj znaczenia jakiej przeglądarki VRML obecnie używamy. Skrypty w węźle Anchor, inaczej niż skrypty w węźle Script (patrz część V kursu), kompilowane są bezpośrednio przez przeglądarkę WWW a nie przeglądarkę VRML. A jak powszechnie wiadomo oprogramowanie firmy Microsoft nie obsługuje języka JavaScript, który jest autorstwa firmy Netscape.
Skrypty w węźle Anchor nie są w stanie również
przetwarzać zdarzeń VRML, można tego dokonać poprzez zastosowanie węzła
Script. Dokładniejsze informacje na temat pisania skryptów w węźle Script
zostaną przedstawione w części V kursu.