Tải bản đầy đủ (.doc) (70 trang)

công nghệ shockwave _ dịch vụ thông tin world wide web

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.12 MB, 70 trang )

Mục lục
Ph n I: Tìm hi u v Macromedia Director 8ầ ể ề 3
Ch ng 1: C b n v Director 8ươ ơ ả ề 3
I.GI I THI U V MACROMEDIA DIRECTORỚ Ệ Ề 3
Có gì c bi t trong Director?đặ ệ 3
Shockwave: a s n ph m Director lên m ngđư ả ẩ ạ 4
II.CÁC THÀNH PH N C A DIRECTORẦ Ủ 4
C a s castử ổ 4
Stage 4
C a s Scoreử ổ 5
Sprite 5
Sprite Span 6
Sprite Overlay 6
Khung hình 7
Kênh 7
Kênh Tempo 7
Kênh palette 7
Kênh Transtion 8
Hai kênh âm thanh 8
Kênh script 8
Control Panel 9
III.CÁC K THU T T O HO T HÌNH TRONG DIRECTORỸ Ậ Ạ Ạ 9
K thu t Tweening trong Directorỹ ậ 10
Thay i ng i c a m t spriteđổ đườ đ ủ ộ 11
Chuy n i các thành ph n cast c a m t spriteể đổ ầ ủ ộ 11
Ho t hình theo k thu t thay i khung hình (Frame-by-frame animation)ạ ỹ ậ đổ 12
Nhanh chóng t o ho t hình dùng nhi u thành ph n castạ ạ ề ầ 13
S dông Cast to Timeử 13
S d ng l nh Space to Timeử ụ ệ 13
S dông film loopử 14
T o ho t hình dùng l nh Lingoạ ạ ệ 14


Ch ng 2: Lingo script trong Directorươ 16
I. S QUA V LINGOƠ Ề 16
Các lo i Lingo scriptạ 18
Các hàm x lý s ki n c a h th ng (system handler)ử ự ệ ủ ệ ố 19
Th t phân c p các thông báoứ ự ấ 19
Truy n các thông báo s ki nề ự ệ 21
II. CÁC KI U BI N TRONG DIRECTORỂ Ế 22
Bi n c c bế ụ ộ 22
Bi n toàn c cế ụ 22
Ki u danh sáchể 22
Ki u s nguyên (integer)ể ố 25
Ki u s th p phânể ố ậ 25
Ki u bi u t ngể ể ượ 25
III. DÙNG CÁC XTRAS M R NG CH C N NG C A DIRECTORĐỂ Ở Ộ Ứ Ă Ủ 25
Các ki u Xtrasể 25
L u tr trong các file ngoài dùng FileIOXtraư ữ 26
Ch ng 3: L p trình h ng i t ng b ng Lingoươ ậ ướ đố ượ ằ 27
I. SO SÁNH V I CÁC NGÔN NG H NG I T NG KHÁCỚ Ữ ƯỚ ĐỐ ƯỢ 27
II. C B N V SCRIPT CHA VÀ I T NG CON (CHILD OBJECT)Ơ Ả Ề ĐỐ ƯỢ 28
S khác nhau gi a i t ng con (child object) và behavior (hành vi)ự ữ đố ượ 28
Vi t mét script chaế 28
Dùng bi n meế 29
T o m t i t ng conạ ộ đố ượ 29
Ki m tra các thu c tính c a i t ng conể ộ ủ đố ượ 29
Ph n II: Công ngh shockwave trên internetầ ệ 31
Ch ng 4 : D ch v thông tin World Wide Webươ ị ụ 31
I. NGU N G C RA I C A WORLD WIDE WEBỒ Ố ĐỜ Ủ 31
II. KI N TRÚC C A WORLD WIDE WEBẾ Ủ 32
Web Server 32
Web Browser 32

Khái ni m HTTPệ 33
Khái ni m HTMLệ 34
III. TÍCH H P CÁC D CH V THÔNG TIN TRONG WWWỢ Ị Ụ 34
World Wide Web và Gopher 34
World Wide Web và FTP 35
World Wide Web và WAIS 35
Tích h p các d ch v khác trong World Wide Webợ ị ụ 36
IV. NG D NG C A WEBỨ Ụ Ủ 36
Website trên Internet 36
ng d ng c a Webứ ụ ủ 38
V. GI I THI U V CGI (COMMON GATEWAY INTERFACE)Ớ Ệ Ề 39
Gi i thi u chungớ ệ 39
L p trình CGI là gì?ậ 41
HTML, HTTP và ch ng trình CGIươ 41
Các th m c trên serverư ụ 42
M u l p trình CGIẫ ậ 44
Các ch ng trình CGI và v n b o m tươ ấ đề ả ậ 45
Truy n thông gi a server và browserề ữ 46
Ch ng 5: Công ngh Shockwaveươ ệ 49
I. LINGO CHO HO T NG TRÊN INTERNETẠ ĐỘ 49
L y d li u t m ngấ ữ ệ ừ ạ 49
Ki m tra tr ng thái c a ho t ng backgroundloadingể ạ ủ ạ độ 50
Streaming multimedia 51
II. S D NG URL V I LINGOỬ Ụ Ớ 51
III. I U KHI N TRÌNH DUY TĐỀ Ể Ệ 52
Nh ng i m khác khi dùng Lingo trong trình duy tữ để ệ 52
Scripting trên trình duy tệ 52
IV. LINGO GIAO TI P V I TRÌNH DUY TẾ Ớ Ệ 53
Ph n III: xây d ng Ch ng trìnhầ ự ươ 54
Ch ng 6: Phân tích ch ng trìnhươ ươ 54

I. N I DUNG CH NG TRÌNH:Ộ ƯƠ 54
II. T NG TH CH NG TRÌNHỔ Ể ƯƠ 55
Ch ng 7: Xây d ng ch ng trìnhươ ự ươ 55
I. PHIM LEFT.DIR 55
C u trúc d li uấ ữ ệ 56
Ho t ng c a ch ng trìnhạ độ ủ ươ 60
II. PHIM SUAMENU.DIR: 67
Ho t ng c a ch ng trìnhạ độ ủ ươ 67
Ch ng 8: ánh giá và h ng phát tri nươ Đ ướ ể 70
I. CÁC K T QU T CẾ ẢĐẠ ĐƯỢ 70
II. H NG PHÁT TRI NƯỚ Ể 70
III. THAM KH OẢ 70
1. 70
2. 70
Phần I: Tìm hiểu về Macromedia Director 8
Chương 1: Cơ bản về Director 8
I.GIỚI THIỆU VỀ MACROMEDIA DIRECTOR
Chương trình multimedia là một chương trình tích hợp cả văn bản, âm thanh, hình ảnh.
Để tạo ra những chương trình mulitmeda sống động đòi hỏi phải có các công cụ chuyên
để tạo lập chúng. Macromedia Director là một công cụ phục vụ cho mục đích này.
Director là một công cụ chuẩn công nghiệp để xây dựng các sản phẩm multimedia và
các ứng dụng chạy trên mạng Internet hay còng nh mạng intranet. Director không chỉ có
khả năng kết hợp các phần tử để tạo ra các sản phẩm, mà còn cung cấp khả năng lập
trình mềm dẻo bằng ngôn ngữ Lingo Scrpt để tạo các hiệu quả mong muốn. Hiện nay,
Director được dùng rộng rãi để tạo ra các trang WEB multimedia, các chương trình dạy
học, các trò chơi trên máy tính.
Bởi vì Director có khả năng kết hợp âm thanh còng nh hình ảnh tĩnh và động, người ta
gọi các sản phẩm của nó là multimedia (đa phương tiện). Trên thị trường đĩa CD-ROM,
Director là một công cụ tạo lập tiêu chuẩn. Một vài công cụ multimeda đang được sử
dụng để tạo ra các sản phẩm trên đĩa CD, nhưng Macromedia đã lên tục cải tiến và nâng

cấp sản phẩm để đáp ứng nhu cầu cho Internet/intranet. Director 8 có các chức năng tiện
lợi để đưa multimedia lên mạng.
Có gì đặc biệt trong Director?
Director đi tiên phong trong lĩnh vực tạo multimedia, nhưng cũng có rất nhiều đối
thủ cạnh tranh nh: SuperCard, Apple Media Toolkit, và Quark/mFactory, mTropolis, và
ngay cả sản phẩm cùng hãng : Authorware Professional. Vậy điều gì đã làm cho
Director giữ được vị trí dẫn đầu của mình? Đó là do các ưu điểm của nã nh:
Khả năng tạo ảnh động
Director tạo ảnh chuyển động bằng kỹ thuật thay thế các thành phần trong từng líp và
trình diễn chúng qua từng khung hình một (frame-by-frame). Điều này có thể đòi hỏi
thời gian phát triển dài nhưng bù lại là ta có vật thể chuyển động thật hơn.
Khả năng chạy trên nhiều hệ thống
Không phải tất cả các phần mềm đều có thể chạy trên mọi máy tính. Có nhiều loại hệ
điều hành khác nhau, và hầu hết phần mềm được thiết kế để tương thích với một trong
các hệ điều hành đó. Một vài sản phẩm phần mềm được “di chuyển” từ một hệ thống
sang hệ thống khác (thường là Macintosh sang Windows, và ngược lại), nhưng những
phiên bản được chuyển này đòi hỏi phải được “viết lại” rất nhiều.
Khi thị trường multimedia hình thành, các nhà phát triển gặp phải một chút băn
khoăn. Đó là do Macintosh cung cấp khả năng đồ hoạ cao, vì thế nó là hệ điều hành
được các nhà thiết kế chọn lùa, nhưng với mục tiêu là số lượng người dùng thì Windows
vượt hẳn. Có thể kết hợp những mặt tốt của cả hai? Bằng cách xây dựng multimedia trên
Macintosh và sau đó chuyển sang Windows.
Director có thể làm cho quá trình trên trở nên đơn giản. Hiện nay, Director có hai
phiên bản chạy trên Macintosh và trên Windows, và các file được tạo ra trên hệ điều
hành này có thể được mở trực tiếp từ Director trên hệ điều hành kia. Quá trình chuyển
đổi mặc dù không được trơn tru lắm nhưng cũng ăn đứt việc viết lại chương trình.
Shockwave: đưa sản phẩm Director lên mạng
Với sự phát triển của công nghệ Shockwave, mọt phim Director có thể được đưa lên
trang web một cách đơn giản: người dùng có thể tương tác với phim Director trong trang
web. Chuyển từ phim Director thành dạng Shockwave rất dễ dàng và chỉ đòi hỏi một

chút hiều biết.
Trong môi trường tương tác trực tuyến, đối thủ cạnh tranh chính của Shockwave là
Java - và Java có một số ưu điểm so với Shockwave. Nhưng java đòi hỏi phải tạo
multimedia từ đầu, trong khi Shockwave chỉ đơn giản được chuyển từ Director sang.
Phim dạng Shockwave được nhúng vào trang Web ( nh Java Applet ) và chạy được nhờ
vào một plug-in riêng.
II.CÁC THÀNH PHẦN CỦA DIRECTOR
Director cung cấp hai loại cast là cast bên trong (internal cast) và cast ngoài (external
cast) và chúng được phân loại thành cast âm thanh, cast hình ảnh, video, cast, văn bản
hoặc thành cast nót bấm, cast thủ tục
Cửa sổ cast
Cửa sổ cast thể hiện các cast hiện có, cho phép người lập trình tạo mới các cast hay các
cast thành phần, soạn mới một cast, đặt các thuộc tính cho cast, viết các thủ tục cho cast
thành phần, xem số hiệu và tên cast thành phần, kéo thả một cast thành phần vào stage,
Để hiển thị các dữ liệu trên màn hình, Director phải truy nhập tới cơ sở dữ liệu của ứng
dụng. Đối với các phim được tạo bằng máy tính, cast bao gồm một số phần tử cơ bản
(media element) nh đồ hoạ, âm thanh, văn bản, các file 3D, video số và các phim
Director. Các loại dữ liệu khác của cast nh các bảng màu tự tạo, các thủ tục được nhập
từ ngoài hoặc được tạo ra trong quá trình làm việc với Director. Những cast này là cast
ngoài, nhưng ta vẫn có thể truy nhập chúng từ cửa sổ cast.
Stage
Stage là nơi trình diễn của phim, mọi cái người dùng có thể nhìn thấy và điều khiển đều
diễn ra ở stage
Trước khi xây dựng một ứng dụng, ta cần xác định kích thước của stage. Việc thay đổi
kích thước của stage sau khi xây dựng ứng dụng hay sau khi kết thúc công việc là một
điều rất bất lợi. Để thay đổi kích thước của stage, ta sử dông hộp thoại movie Properties
bằng cách chọn menu Modify->Movie->properties. Kích thước mặc định của stage là
640x480. Trong Director cũng có một thuộc tính dùng để hiển thị phim trên toàn bộ màn
hình (stage sẽ chiếm toàn bộ màn hình) đó là full screen.
Ta cũng có thể sử dụng hộp thoại Movie Properties để thay đổi màu của stage. Trong

hộp thoại này, kích vào ô bên cạnh stage color, một bảng màu sẽ hiện ra cho ta lùa chọn.
Ngoài ra, ta có thể thay đổi màu của stage bằng lệnh Lingo. Nháy đúp chuột vào kênh
script trong score sau đó đưa thêm dòng lệnh sau vào vị trí cần thiết
Set the stagecolor to color_num
Cửa sổ Score
Score là trung tâm điều khiển của Director, nó phản ánh tình trạng, nội dung của stage
và các đối tượng đặt trên stage trong mét khung hình nhất định nào đó. Có thể nói score
chính là biểu diễn của phim.
Sprite
Là hiện diện của một cast thành phần trên stage. Mỗi ô (cell) của score chứa thông tin về
một cast thành phần tại một thời điểm và được gọi là một sprite. Tại mỗi thời điểm,
Director 8 cung cấp tới 1000 kênh sprite và nó cho phép tắt các kênh không cần thiết
để tối ưu quá trình thực hiện. Vị trí của sprite được xác định dùa vào gốc toạ độ ( góc
trái trên cùng của stage).
Sprite không phải là một cast thành phần mà chỉ chứa thông tin liên quan tới cast thành
phần đó trên stage, nh vị trí hiển thị, các hiệu ứng đặc biệt, mỗi sprite chiếm một
vùng hình chữ nhật trên stage. Mỗi khi ta đặt một cast thành phần vào stage, mét sprite
Playback head
Sprite trong
score
sẽ xuất hiện trong score và ngược lại, khi ta đặt một cast thành phần vào score nó cũng
tự động được đặt vào stage.
Khi thực hiện, score của Director sẽ kiểm tra xem cast thành phần nào được hiển thị trên
stage và truy cập các thông tin về nó tại mỗi thời điểm ( điều này toạ điều kiện trong quá
trình xử lý ảnh động). Khi chuyển sang khung hình tiếp theo, Director sẽ đọc score,
kiểm tra các thông tin của các sprite và phát hiện ra các sprite có thay đổi. Khi đó,
Director chỉ cần đọc dữ liệu từ các cast thành phần tương ứng và hiển thị nó lên màn
hình. Score của Director có tới 1000 kênh sprite nên tại mỗi thời điểm nó có thể hiển thị
1000 sprite lên stage.
Mỗi sprite có thể có nhiều kích thước, hình dạng khác nhau trong phim, các thuộc tính

này thay đổi được mặc dù phim vẫn truy nhập đến cùng một cast thành phần của cast và
cast thành phần đó không thay đổi. Mỗi cast thành phần có thể xuất hiện nhiều lần trong
phim, tức là chiếm nhiều sprite, nhưng nó vẫn chỉ chiếm một vị trí trong cửa sổ cast.
Người ta thường dùng lệnh Lingo để thay đổi các thuộc tính của sprite khi người dùng
có tương tác với phim. Thông thường ta truy cập sprite bằng số hiệu của nã. Director 8
chứa nhiều loại sprite hơn các phiên bản trước, nh :
Sprite Span
Mỗi sprite chiếm giữ một ô và ta phải dùng In-between Sprite dọc theo score khi ta
muốn nhìn thấy chúng trên stage. Trong Director ta có thể dùng các lệnh In-Between
Linear và In-Between Special để tạo các hình ảnh động và các hoạt động trên stage tại
bất kỳ thời điểm nào.
Director xem các sprite nh các đối tượng trong một khoảng thời gian xác định. Khi ta
kéo một cast thành phần vào stage, sprite đã tạo ra sẽ chiếm 28 khung, mỗi khung chứa
một thể hiện xác định của sprite. Giá trị mặc định này có thể thay đổi trong một hộp
thoại sprite preferences.
Khi ta dịch chuyển một sprite trên stage, mọi thể hiện của sprite đó trong Sprite Span
cũng dịch chuyển theo. Nếu ta kích vào một ô trên score, không phải chỉ một ô mà toàn
bộ sprite ta vừa chọn sẽ sáng lên. Tương tự nếu ta dịch chuyển này trong score toàn bộ
sprite sẽ dịch chuyển. Nếu ta muốn soạn thảo các khung riêng biệt trong mét sprite, nh
trong các phiên bản trước, ta có thể chọn Edit->edit sprite frames. Khi soạn thảo ở chế
độ này, việc cập nhật sẽ diễn ra trong từng ô riêng biệt. Để đưa chúng trở lại thành sprite
span hoàn chỉnh, ta chọn các sprite này trên menu Edit->Edit entire sprite. Dùng lùa
chọn này, việc soạn thảo sẽ làm thay đổi toàn bộ sprite span. Ta có thể thày đổi số khung
mà sprite span từ 28 đến một giá trị tuỳ ý bằng cách dùng hộp thoại Sprite Preferences.
Để làm việc với từng sprite nh trong phiên bản trước đổi span duration về 1.
Sprite Overlay
Nếu bật Sprite Overlay, ta có thể nhìn trực tiếp thông tin về sprite trong một hình chữ
nhật nhỏ, trong suốt nằm dưới sprite trên stage. Sprite Overlay hiển thị tự động thông tin
sprite.
Ta không cần mở hộp thoại Sprite Properties để soạn thảo các thuộc tính của sprite. Ta

có thể dùng Sprite Overlay và Sprite inspector với nhau để soạn trực tiếp các sprite trên
stage. Nếu ta cần mở hộp thoại Sprite Properties cho các ứng dụng khác, ta có tể nhanh
chóng mở nó từ nót có chữ I màu đỏ trong Sprite Overlay. Ta cũng có thể mở trực tiếp
hộp thoại Cast Member Properties và Behavior inspector từ Sprite Overlay.
Để thay đổi các thiết lập Sprite Overlay, mở hộp thoại Overlay Settings từ menu View,
Sprite Overlay, Settings.
Khung hình
Khung hình được hiển thị trong stage dưới dạng một cột. Mỗi cột gồm có 1000 hàng.
Mỗi hàng là một trong 1000 kênh của score. Số lượng khung hình không hạn chế. Ta có
thể nhìn thấy soó hiệu khung hình hiện thới đang dược hiển thị trên score hoặc control
panel của Director.
Mỗi khung hình hiển thị một cảnh nào đó khi Director đọc tới vị trí khung hình đó trong
cửa sổ score. Theo mặc định, Director sẽ đọc qua tất cả các khung hình cho đến hết
phim, đây chính là nguyên tắc của các phim tuyến tính. Ta có thể tạo một phim Director
chỉ có một khung hình nhưng trong trường hợp đó ta phải dùng các lệnh Lingo để tạo
các thay đổi cần thiết.
Kênh
Mỗi kênh là một hàng trong score, Director cung cấp cho ta 1000 kênh. Thông tin chứa
trong các kênh đều có ảnh hưởng tới việc hiển thị các khung hình trên stage. Thông tin
đó bao gồm tốc độ phim, các pallette màu, các hiệu ứng chuyển đổi (transition), âm
thanh, các thủ tục Lingo, và các vị trí của sprite trên stage.
Kênh Tempo
Kênh Tempo được dùng để đặt các thuộc tính về thời gian đợi cho phim. Với kênh
Tempo ta có thể đặt tốc độ cho phim (fps/frame per second), khoảng thời gian đợi cho
khung hình đố tính theo giây, đợi một sự kiện phím bấm hoặc nhấy chuột, đợi kênh âm
thanh 1 hoặc 2 kết thúc, đợi một kênh Video nào đó kết thúc. Dùng kênh tempo rất đơn
giản và nhanh gọn, tuy nhiên nó chỉ cho phép tạo các phim dưới dạng trình diễn
(presentation) hay còn gọi là các phim tuyến tính. Các thuộc tính đặt trong kênh tempo
cũng có thể thay đổi bằng các lệnh Lingo, lệnh Lingo cho phép tạo ra các tương tác
trong chương trình. Ta có thể đặt tốc độ cho phim làm cho phim chuyển động nhanh hay

chậm tuỳ ý.
Kênh palette
Kênh palette dùng bảng màu đã được kích hoạt để thay đổi bảng màu và thực hiện các
hiệu ứng màu trong phim. Nháy đúp vào kênh Palette của một khung hình , ta sẽ xem
được bảng màu hiện thời của khung hình đó. Khi sử dụng kênh palette, ta cần quan tâm
đến các vấn đề sau:
Kªnh tempo
Kªnh palette
Kªnh transition
Kªnh ©m thanh
Kªnh behavior
Kªnh sprite
Độ phân giải màu: Liên quan tới số lượng màu trên màn hình. Ta kiểm tra độ phân giải
màu bằng lệnh put the colorDepth, kết quả nhận được sẽ là độ phân giải màu hiện thời.
Director cho phép xây dựng các phim có độ phân giải màu 32 bit
Chuyển đổi giữa các bảng màu: Giả sử máy của ta hiển thị được 256 màu và ta dùng
scanner để quét ảnh dùng trong ứng dụng, khi đó ta cần chuyển đổi các ảnh về mức 256
màu. Nếu các ảnh được quét bằng scanner có sèo lượng màu lớn hơn 256, ta phải dùng
các coong cụ soạn thảo đồ hoạ để chuyển chúng về 256 màu.
Khi import một ảnh từ ngoài vào và bảng màu nó dùng không phải bảng màu chuẩn , ta
có theer vẫn giữ nguyên bảng màu đó và coi nó như một cast thành phần hoặc ánh xạ
bảng màu đó thành bảng màu của hệ thốgn. Nếu giữ nguyên bảng màu, ta phải đảm bảo
khi cast thành phần đó được dùng thì bảng màu tương ứng của nó phải được đặt trong
kênh Palette của khung hình mà nó xuất hiện. Các công việc trên được thực hiện bằng
cách dùng những lùa chọn trong khung hội thoại khi ta import ảnh vào.
Việc thay đổi bảng màu một cách thường xuyên là không nên, do đó ta nên dùng các
bảng màu chuẩn hoặc tạo ra các bảng màu của riêng ta để dùng chung cho tất cả các ảnh
trong ứng dông.
Khi đã có một bảng màu dùng chung, ta chỉ cần đặt nó vào kenh Palette trong khung
hình thứ nhất, bảng màu đó sẽ được kích hoạt trong suốt quá trình ứng dụng chạy nếu ta

không kích hoạt thêm một bảng màu nào khác.
Kênh Transtion
Kênh này dùng để đặt các hiệu ứng đặc biệt, chuyển đổi giữa các cảnh trong phim ta xây
dựng. Để đặt các hiệu ứng cho mét khung hình nào đó, ta nháy đúp vào kênh Transition
ứng với khung hình đó. Ta có thể đặt các hiệu ứng của kênh này cho toàn bôj stage hay
chỉ cho những phần thay đổi của stage mà thôi. Sau khi đã đặt hiệu ứng Transition trong
mét khung hình, Director tự động lưu trữ nó trong cast tương ứng như một cast thành
phần. Do đó nếu ta không muốn dùng hiệu ứng chuyển đổi đó nữa ta cần phải xoá cast
thành phần của hiệu ứng đó.
Các hiệu ứng Transiton là một trong những nhiệm vụ nặng nề mà CPU phải thực hiện
và nó chiếm khá nhiều bộ nhớ. Thời gian cần thiết để thực hiện hiệu ứng Transition sẽ
làm giảm toàn bộ tốc độ thực hiện của hệ thống.
Hai kênh âm thanh
Macintosh cho phép dùng tới 8 kênh âm thanh trong khi đó Windows chỉ cho phép dùng
hai kênh, những thư viện MảcoMix.dll mà Director cung cấp giúp ta trộn nhiều file âm
thanh vào trong một kênh âm thanh.
Trong Score kích đúp vào kênh âm thanh ứng với khung hình ta muốn bắt đầu đoạn âm
thanh, chọn cast âm thanh thành phần muốn dùng, đoạn âm thanh của cast thành phần đó
sẽ bắt đầu chơi từ khung hình ta vừa đặt. Director còng cho phép kéo thả các cast âm
thanh thành phần từ cast vào một trong hai kênh âm thanh.
Việc dùng score tá ra rất nhanh và tiện lợi nhưng nó có nhược điểm là nó tốn bộ nhớ và
đôi khi không đạt hiệu quả như mong muốn, trong trường hợp đó dùng các lệnh Lingo sẽ
hữu hiệu hơn. Kênh âm thanh thứ hai sẽ được dùng cho âm thanh nền, kênh 1 dùng cho
các âm thanh được điều khiển bằng lệnh puppet sound của Lingo.
Kênh script
Dùng để chứa các thủ tục viết bằng Lingo, các thủ tục đó chỉ có tác dụng trong khung
hình tương ứng. Các thủ tục này (còn gọi là các script) được gọi là các thủ tục khung
hình (frame script). Thủ tục còn được gọi là handler vì các thủ tục này tương ứng với
một sự kiện và nó sẽ thực hiện khi sự kiện tương ứng xuất hiện.
Để đưa vào kênh script, ta nháy đúp chuột vào script của khung hình, ta sẽ nhận được

một thủ tục tên là exitframe tương ứng với sự kiện kết thúc khung hình này và chuyển
sang khung hình tiếp theo.
Mỗi khi bắt đầu một khung hình, các kênh được đọc và thực hiện theo thứ tự từ trên
xuống, từ kênh tempo đến kênh script thứ 1000. Những kênh đặc biệt cung cấp thông tin
về các hiệu ứng đặc biệt được dùng trong khung hình, còn các script 1 đến 1000 sẽ được
hiển thị trên stage. Thứ tự các kênh rất quan trọng, kênh thứ nhất được hiển thị đầu tiên
sau đó đến kênh thứ hai Theo thứ tự hiển thị trên stage, ta thấy kênh 1000 được vẽ trên
cùng chèn lên các kênh khác còn kênh 1 nằm dưới cùng. Quá trình này tiếp diễn với tất
cả các khung hình.
Control Panel
Bảng điều khiển là một cửa sổ và nó cho phép người dùng điều khiển phim trong môi
trường Director. Các nốt điều khiển của bảng này giống nh các nót điều khiển của một
đầu video. Ngoài ra, bảng điều khiển còn hiển thị và cho phép ta thay đổi một số thông
tin nh khung hình hiện thời, số khung hình/giây, thay đổi tốc độ phim, đặt chế độ lặp
cho phim, điều khiển âm lượng.
Bảng điều khiển rất có Ých trong các phim tuyến tính, đặc biệt là trong khi chạy thử
nghiệm để xem khả năng của chương trình. Nó cũng giúp cho công việc của người lập
trình đơn giản đi một chút khi sử dụng các khả năng của nó để điều khiển các thành
phần multimedia mà không cần phải sử dụng các lệnh điều khiển Lingo.
III.CÁC KỸ THUẬT TẠO HOẠT HÌNH TRONG DIRECTOR
Hoạt hình là sự thay đổi của ảnh theo thời gian. Các loại hoạt hình thường thấy nhất là di
chuyển một sprite trên cửa sổ Stage ( hoạt hình kiểu tweening) và dùng một loạt các
thành phần cast trên cùng một sprite (hoạt hình kiểu frame-by-frame hay còn gọi là kiểu
thay đổi theo khung hình).
Tweening là một thuật ngữ trong kỹ thuật hoạt hình, nó mô tả quá trình trong đó người
chỉ đạo vẽ các khung hình chính còn các trợ lý vẽ các hình thay đổi giữa các hình chính
đó.
Kỹ thuật hoạt hình frame-by-frame đòi hỏi tạo ra mỗi khung hình trong phim hoạt hình.
Các kỹ thuật hoạt hình khác bao gồm thay đổi kích thước, quay, thay đổi màu, hay thay
đổi độ sáng của một sprite.

Để đặt các thuộc tính trong Tweening, ta dùng hộp thoại Sprite Tweening
Để mở hộp thoại Sprite Tweening :
1Chọn mét sprite Chän mét sprite
2Vào Modify > Sprite > Tweening. Vµo Modify > Sprite > Tweening.
Kỹ thuật Tweening trong Director
Để dùng kỹ thuật này trong Director, ta xác định các thuộc tính cho mét sprite trong
những frame gọi là key frame và để cho Director thay đổi những thuộc tính trong những
frame nằm giữa.
Tweening rất có hiệu quả trong việc thêm hoạt hình vào trang Web, vì nó không cần
download thêm các dữ liệu khi một thành phần cast thanh đổi.
Mét keyframe thường được dùng khi có thay đổi trong các thuộc tính của một sprite. Có
thể thay đổi các thuộc tính vị trí, kích thước, góc quay, độ sáng, màu nền và màu nổi.
Mỗi keyframe xác định một giá trị cho các thuộc tính trên.
Thay đổi đường đi của một sprite
Đường đi của sprite là những đường biều diễn sự di chuyển trên cửa sổ Stage của một
sprite. Đường đi của Sprite được kiểm soát trong hộp thoại Sprite Overlay Settings.
Bạn có thể thay đổi đường đi của một sprite trực tiếp trên cửa sổ Stage bằng cách kéo-
thả các keyframe.
Để thay đổi đường đi của một sprite:
1. Đặt mét sprite trên cửa sổ Stage nơi bạn muốn bắt đầu của đường đi, nếu đã có
rồi thì chỉ việc chọn nã.
2. Nếu cần chọn View > Sprite Overlay > Show Paths để hiện đường đi của sprite
3. Chèn các keyframe vào frame nào mà bạn muốn thay đổi đường đi
4. Kéo đầu đỏ của đường đi trên Stage đến chỗ bạn muốn kết thúc đường đi.
5. Để thay đổi đường cong trên đường đi, giữ phím Alt (Windows) hay phím Option
(Macintosh) và dùng chuột kéo trên đường cong.
6. Muốn thay đổi độ cong giữa các keyframe, chọn Modify > Sprite > Tweening và
điều chỉnh Curvature.
Ngoài việc thay đổi đường đi của một sprite, Director có thể thay đổi cả kích thước, góc
quay, độ sáng, màu nền và màu nổi. Thay đổi kích thước được áp dụng tốt nhất đối với

các thành phần cast có dạng vector (vector-based)
Chuyển đổi các thành phần cast của một sprite
Để thay đổi nội dung mét sprite mà lại muốn giữ nguyên các thuộc tính khác của sprite,
bạn đổi thành phần cast gắn với sprite đó.Kỹ thuật này rất có Ých khi bạn vừa áp dụng
Tweening cho mét sprite nhưng sau đó lại muốn dùng một thành phần cast khác. Khi
thay đổi thành phần cast, đường đi không thay đổi
Các bước để thay đổi thành phần cast trong Score
1 Muốn thay đổi trong tất cả các khung hình của một sprite, chọn toàn bộ. Nếu
không thì có thể chọn một phần.
Chọn một phần bằng cách nhấn phím Alt và click frame đầu tiên muốn chọn. Sau đó
nhấn Control-Alt(Windows) hay Option-Alt(Macintosh) và click các frame muốn
chọn
2 Mở cửa sổ Cast và chọn thành phần cast bạn muốn dùng để thay thế
3 Chọn Edit > Exchange Cast Members.
Hình: Trước khi thay đổi thành phần cast
Hình: Sau khi thay đổi thành phần cast, đường đi không đổi
Ngoài ra, có thể dùng lệnh Lingo để chuyển đổi thành phần cast của một sprite.
Hoạt hình theo kỹ thuật thay đổi khung hình (Frame-by-frame animation)
Để tạo ra hoạt hình phức tạp hơn là dùng kỹ thuật Tweening, bạn có thể dùng một loạt
các thành phần cast trong kỹ thuật hoạt hình frame-by-frame.Các sprite thường chỉ
chứa một thành phần cast, nhưng chúng có thể thay đổi thành phần cast theo từng thời
điểm.
Các bước để tạo hoạt hình của một sprite dùng nhiều thành phần cast:
1 Tạo ra mét sprite trên cửa sổ Stage
2 Thay đổi độ dài cần của sprite theo ý muốn
3 Chn View > Display > Cast Member hin tờn ca mi thnh phn cast trờn
sprite.
4 Vo View > Sprite Labels > Changes Only. t th ny hin tờn ch khi
thnh phn cast thay i.
5 Vo Edit > Edit Sprite Frames.

6 Sau ú chn nhng frame mun thay i thnh phn cast
7 M ca s Cast v chn thnh phn cast thay i
8 Chn Edit > Exchange Cast Members.
Director thay th nhng thnh phn cast c chn trờn sprite bng thnh phn cast
trong ca s Cast
9 Lp li n khi hon thnh. Chn Edit Entire Sprite khi lm xong.
Nhanh chúng to hot hỡnh dựng nhiu thnh phn cast
Cast to Time v Space to Time c dựng to hot hỡnh mt cỏch nhanh chúng dựng
nhiu thnh phn cast
S dụng Cast to Time
nhột mt lot cỏc thnh phn cast vo Score nh l mt sprite duy nht, dựng lnh
Modify > Cast to Time, õy l mt lnh cú ích nht to hot hỡnh dựng nhiu thnh
phn cast. Thng thỡ bn to mt lot nh v sau ú dựng lnh Cast to Time nhanh
chúng t chỳng vo Score nh l mt sprite duy nht.
Cỏc bc to mt sprite t nhiu thnh phn cast:
1 Chn frame trờn Score ni mun t sprite mi Chọn frame trên Score nơi
muốn đặt sprite mới
2 M ca s Cast
3 Chn cỏc thnh phn cast t trờn sprite mi to ra.
4 Vo Modify > Cast to Time Vào Modify > Cast to Time
S dng lnh Space to Time
Mun chuyn cỏc kờnh lõn cn vo mt sprite,ta dựng lnh Modify > Space to Time.
Phng phỏp ny tin li khi bn mun xp mt vi nh trờn ca s Stage vo mt
frame v chuyn thnh mt sprite.
dựng lnh Space to Time :
1Vo File > Preferences > Sprite v t Span Duration bng 1 frame. Vào File >
Preferences > Sprite và đặt Span Duration bằng 1 frame.
2Chn một frame cũn trng trờn Score. Chọn một frame còn trống trên Score.
3Kộo thnh phn cast vo Stage to ra cỏc sprite. Kéo thành phần cast vào Stage
để tạo ra các sprite.

Khi nh v sprite trờn ca s Stage, Director t mi sprite trờn mt kờnh riờng bit.
Hóy t cỏc sprite trờn cỏc kờnh liờn tip.
4 Chọn tất cả các sprite cần thiết trong chuỗi hình ảnh.
5 Vào Modify > Space to Time.
Hộp thoại Space to Time xuất hiện. Đặt số frame giữa các thành phần cast tuỳ ý.
Sử dông film loop
Mét film loop là một dãy hoạt hình mà ta có thể dùng như là một thành phần cast đơn.Ví
dụ, để tạo một hoạt hình diễn tả cảnh một con chim đang bay, ta có thể tạo ra mét film
loop gồm ảnh các thành phần cast các cảnh chim vỗ cánh.Thay vì dùng kỹ thuật frame-
by-frame, ta tạo một sprite chỉ chứa film loop và cho chạy qua bao nhiêu khung hình tuỳ
ý.
Có thể dùng film loop để làm gọn dữ liệu trên Score. Film loop đặc biệt hữu Ých khi cần
làm giảm số kênh sprite. Có thể kết hợp vài kênh trên Score thành một film loop và đặt
trên một kênh. Có thể đặt các thuộc tính cho film loop.
Các bước để tạo một film loop:
1Trên Score, chọn các sprite bạn muốn chuyển thành film loop. Trªn Score, chän
c¸c sprite b¹n muèn chuyÓn thµnh film loop.
Sử dông bao nhiêu sprite tuỳ thích – kể cả kênh âm thanh.
2Vào Insert > Film Vµo Insert > Film Loop.
Một hộp thoại xuất hiện.
3Đặt tên cho film loop mới tạo ra. §Æt tªn cho film loop míi t¹o ra.
Tạo hoạt hình dùng lệnh Lingo
Lingo có thể tạo hoạt hình bất kể những đặc tính được đặt trên Score. Điều này cho phép
bạn tạo ra hay sửa đổi một hoạt hình dùa trên tình trạng của phim.
Muốn di chuyển một sprite trên cửa sổ Stage, bạn có thể dùng các lệnh Lingo điều khiển
vị trí của sprite đó. Để tạo hoạt hình bằng cách thay đổi thành phần cast của sprite, có
thể dùng lệnh chuyển thuộc tính của sprite.
Chương 2: Lingo script trong Director
Muốn xây dựng các ứng dụng có tính tương tác với người dùng, Director cung cấp một

ngôn ngữ tiện lợi để viết lệnh điều khiển phim khi xảy ra một điều kiện hay một sự kiện
nào đó, đó là ngôn ngữ Lingo Script
Lingo tạo ra các tính năng mà nếu chỉ dùng các công cụ kéo-thả trong Director thì không
thể thực hiện được. Ví dụ, Lingo có thể chơi một âm thanh sau khi một phần dữ liệu âm
thanh được tải về từ mạng. Ngôn ngữ này có một điểm mạnh là nó dễ học, cú pháp gần
với ngôn ngữ tự nhiên. Đối với ngôn ngữ này, việc quan trọng nhất là ta cần hiểu cách
thức nó tương tác với các thành phần cast và Score, vị trí đặt đoạn mã để thu được kết
quả mong muốn.
I. SƠ QUA VỀ LINGO
Các thuật ngữ
Còng nh các ngôn ngữ lập trình khác, Lingo sử dụng các thuật ngữ và các cú pháp đặc
trưng mà người lập trình cần phải nắm được. Các thuật ngữ của Lingo có thể tóm tắt nh
sau:
Tham sè (Argument) là tên tượng trưng dùng thế chỗ cho các giá trị thực sự sẽ được
truyền cho hàm khi hàm được gọi.
Lệnh (Command) là một chỉ thị yêu cầu Director thực hiện một thao tác gì đó. Ví dô nh
chuyển đầu đọc tới một khung hình khác.
Hằng (Constant) là các yếu tố không thay đổi. Ví dô ta có các hằng TAB, EMPTY, và
RETURN.
Sự kiện (Event) là các hành động xảy ra khi phim đang chạy. Ví dụ, phim kết thúc, bắt
đầu một sprite, đầu đọc đi vào một khung hình, người dùng gõ phím, đều là những sự
kiện.
Biểu thức (Expression) là bất cứ phần nào của dòng lệnh mà tạo ra một giá trị. Ví dụ, 2 +
2 là một biểu thức.
Hàm (Function) trả về một giá trị.
Hàm xử lý (Handler) là tập hợp các lệnh Lingo, chạy khi một sự kiện nào xác định xảy
ra. Ví dụ, các dòng lệnh sau chứa một hàm xử lý, hàm này được gọi khi chuột được
nhấn:
on mouseDown
beep

end
Từ khoá (Keyword) là các từ dành riêng có ý nghĩa đặc biệt.
Danh sách (List) là tập hợp các giá trị dùng để theo dõi và cập nhật dãy dữ liệu.
Thông báo (Message) là những lời gọi do Director gửi đến script khi một sự kiện xác
định xảy ra.
Toán tử (Operator) dùng để tính toán tạo ra giá trị mới từ một hay nhiều giá trị cũ.
Thuộc tính (Propertie) là các tính chất để xác định một đối tượng.
Biến (Variable) là các thành phần dùng để lưu trữ và cập nhật giá trị.
Các sự kiện, thông báo và hàm xử lý(handler)
Mọi điều trong Lingo xảy ra nh kết quả của một sự kiện. Một số sự kiện là hoạt động
của người dùng, mouseUp, keyUp; mét số khác là của hệ thống, nh timeout. Bảng dưới
đây liệt kê các sự kiện chuẩn mà Lingo có thể nhận biết.
Các sự kiện chuẩn của Lingo
Sự kiện Xảy ra khi
MouseUp Nhả chuột
MouseDown Nhấn chuột
MouseEnter Con trá di chuyển đến một sprite
MouseLeave Con trá di chuyển ra khái sprite
MouseWithin Con trỏ nằm trong mét sprite
CuePassed Mỗi khi một điểm nhắc được truyền bởi
một âm thanh, video sè QuickTime hoặc
Xtra mà hỗ trợ các điểm nhắc
BeginSprite Đầu đọc nhập vào một sprite
EndSprite Đầu đọc thoát khỏi một sprite
PrepareFrame Trước khi khung hiện tại được chiếu, các
khung đơn nhận message này.
RightMouseUp Nhả nót chuột phải
RightMouseDown Nhấn nót chuột phải
KeyUp Nhả một phím
KeyDown Nhấn một phím

StartMovie Bắt đầu phim
StopMovie Kết thóc một phim
Xảy ra khi thực hiện lệnh quit
Hay lệnh play movie, go movie
ActivateWindow Người dùng kích vào một phim trong cửa
sổ mà hiện tại không được “nổi” (focus),
đưa phim đó “nổi”lên
MoveWindow Người dùng kéo một phim trong cửa sổ
ResizeWindow định lại kích thước một phim trong cửa sổ
DeactivateWindow Người dùng kích vào một phim trong cửa
sổ hiện tại, làm “chìm” chương trình hiện
tại
CloseWindow Đóng cửa sổ
Lệnh close window
EnterFrame đầu đọc nhập vào một khung hình
ExitFrame đầu đọc thoát khỏi một khung hình
Idle Không xử lý sự kiện nào
TimeOut Thuộc tính hệ thống timeLapsed >=thuộc
tính hệ thống timeoutLength
Khi Director nhận thấy một sự kiện đã xảy ra, nó sẽ một thông báo sự kiện (event
message), sau đó tìm trong các script trong phim xem có đoạn mã nào xử lý sự kiện đó
không ( tìm hàm handler). Thủ tục Lingo gồm một hoặc nhiều hàm xử lý sự kiện.
Các lệnh Lingo dùng để chỉ cho Director biết những việc cần làm khi thìm thấy một
thông báo sự kiện. Ta có thể tạo các sự kiện và các hàm xử lý sự kiện của riêng mình.
Các hàm xử lý sự kiện của người dùng có dạng nh sau:
On handlerName
Lingo statements
End
Không giống nh các hàm xử lý sự kiện được định nghĩa trước ( được dùng để trả lời một
sự kiện đã tìm thấy), các hàm xử lý sự kiện người dùng phải được gọi rõ ràng trong thủ

tục.
Các loại Lingo script
Director dùng bốn loại script: behavior script, movie script, script cha, và script gắn với
thành phần cast. Behavior script, movie scripts, và script cha tất cả đều là những thành
phần trong cửa sổ Cast.
Behavior là loại script được gán với sprite hay frame trong Score, được gọi là sprite
behavior hay frame behavior. Loại script này chứa các điều khiển xác định xem nó xử lý
một thông báo khi nào và ở đâu.
Tất cả các behavior được thêm vào cast xuất hiện trong menu Popup Behavior
Inspector. (các loại script không có ở đây).
Ta có thể gắn cùng một behavior vào nhiều vị trí trong Score. Khi soạn thảo mét
behavior, nó ảnh hưởng đến toàn bộ các vị trí được gán. Movie script đáp ứng các sự
kiện nh nhấn phím hay click chuột, và có thể kiểm soát các sự kiện khi phim bắt đầu, kết
thúc, hay tạm dừng. Các hàm xử lý trong mét movie script có thể được gọi từ các script
khác khi phim chạy.
Movie script có thể được dùng trong toàn bộ phim, bất kể là phim đang ở khung hình
nào, hay người dùng đang tương tác với sprite nào. Movie script sẽ nhận tất cả các thông
báo mà chưa được xử lý bởi behavior scipt, hay script của thành phần cast. Movie script
là nơi tốt nhất để đặt các hàm xử lý mặc định.
Script chas là script đặc biệt chứa các lệnh Lingo dùng để tạo các đối tượng con(child
object). Ta có thể dùng script cha để sinh ra các đối tượng script hoạt động độc lập với
nhau. Script cha được dùng để lập trình theo phong cách hướng đối tượng (object-
oriented).
Script của thành phần cast được gắn trực tiếp với một thành phần cast, không phụ
thuộc vào Score.
Không giống với behavior, movie script, và script cha, script của thành phần trong cast
không xuất hiện trong cửa sổ Cast.
Các hàm xử lý sự kiện của hệ thống (system handler)
Ngoài các loại script trên, còn có các hàm xử lý của hệ thống. Chúng khác các loại
script còn lại các đặc điểm sau:

• Các hàm xử lý còn lại không nhận các thông báo trừ khi các thông báo truyền
qua tất cả các mức phân cấp cao hơn. Còn các hàm xử lý sự kiện hệ thống sẽ
nhận các thông báo trước tất cả các hàm xử lý khác.
• Các hàm xử lý sự kiện khác giữ lại mọi sự kiện mà chúng nhận được, không
truyền tiếp đi. Còn các hàm xử lý hệ thống thực hiện thông báo nhận được , sau
đó tiếp tục gửi nó đến các mức phân cấp khác.
Sau đây là một vài hàm xử lý hệ thống:
MouseUpScript
MouseDownScript
KeyupScript
KeyDownScript
TimeOutScript
Ta có thể đặt lại một hàm xử lý hệ thống từ bất kỳ một script nào bằng cú pháp sau:
Set the eventScript to “code lines
Ví dô:
the keyDownScript = "if the key = RETURN then go to the frame + 1"
Hay đặt đến một hàm của người dùng
Set the mouseScript to “userhandler”
Có thể vô hiệu hoá hàm xử lý hệ thống bằng câu lệnh
Set the eventScript to EMPTY
Các hàm xử lý sự kiện hệ thống có lợi khi ta cần xử lý sự kiện chung. Nếu không ta phải
viết lệnh để xử lý các sự kiện ở tất cả các script khác.
Thứ tự phân cấp các thông báo
Director truyền các thông báo đến các script khác nhau theo môt trật tự xác định. Các
thông báo được truyền theo thứ tự sau:
Các hàm xử lý sự kiện của hệ thống ( system handlers)
Các hàm xử lý sự kiện của sprite ( sprite handlers)
Các hàm xử lý sự kiện của thành phần cast (cast member’s scripts)
Các hàm xử lý sự kiện của khung hình (frame handlers)
Các hàm xử lý sự kiện của phim (Movie handlers)

Muốn Director truyền thông báo đến hàm xử lý cần thiết, ta phải đặt nó trong loại script
có thể nhận được thông báo đó. Sau đây là bảng gồm các loại thông báo và các script có
thể nhận được các thông báo đó:
Kiểu script Các thông báo nhận được
Sprite script MouseEnter
MouseLeave
MouseWithin
MouseUp
MouseDown
RightMouseUp
RightMouseDown
KeyUp
KeyDown
BeginSprite
EndSprite
PrepareFrame
Cast member’s script MouseEnter
MouseLeave
MouseWithin
MouseUp
MouseDown
RightMouseUp
RightMouseDown
KeyUp
KeyDown
Frame script EnterFrame
ExitFrame
MouseUp
MouseDown
RightMouseUp

RightMouseDown
KeyUp
KeyDown
TimeOut
Movie script EnterFrame
ExitFrame
MouseUp
MouseDown
RightMouseUp
RightMouseDown
KeyUp
KeyDown
Idle
StartMovie
StopMovie
ActivateWindow
MoveWindow
ResizeWindow
DeactivateWindow
CloseWindow
TimeOut
Truyền các thông báo sự kiện
Thông thường các điều khiển thông báo sprite, cast, frame nhận được thông báo và nó
không tiếp tục truyền thông báo đến các mức tiếp theo nữa. Nhưng đôi khi ta muốn các
script tiếp theo cũng nhận được thông báo, muốn thế ta dùng lệnh pass. Khi ta thêm lệnh
pass vào trong một hàm xử lý sự kiện, thì sau khi sau khi thực hiện các hành động cần
thiết, nó sẽ truyền thông báo sự kiện tới các đối tượng khác trong mức khác.
Các hàm xử lý hệ thống luôn truyền đi các thông báo mà nó nhận được. Nếu ta dùng
lệnh stopEvent trong hàm xử lý hệ thống, nó sẽ không truyền đi nữa. Ngoài ra ta cũng có
thể tự sinh ra một thông báo và truyền nó đi. Ví du ta thêm dòng lệnh

MouseDown(script “button”)
Nếu button là tên của một sprite hay cast member script của một nót trên stage, nót sẽ
hoạt động nh thể là ngườidùng vừa nhấn chuột.
II. CÁC KIỂU BIẾN TRONG DIRECTOR
Director dùng các biến để lưu trữ và cập nhật các giá trị của dữ liệu. Một biến có thể
thay đổi giá trị của nó khi chạy phim. Bằng cách thay đổi giá trị của một biến khi phim
đang chạy ta có thể lưu trữ những giá trị cần quan tâm ví dụ như cất một đường dẫn
URL, theo dõi số lần một người tham gia vào một phiên chat, hay kiểm tra xem một hoạt
động mạng đã kết thúc chưa.
Các biến có thể là toàn cục hay biến cục bộ. Một biến toàn cục có thể tồn tại và duy trì
giá trị của nó khi nào mà phim còn chạy, trong khi đó một biến cục bộ chỉ tồn tại trong
một hàm xử lý hay.
Biến cục bộ
Một biến cục bộ chỉ tồn tại trong hãm xử lý có chứa nó đang chạy. Các biến cục bộ được
dùng cho các biến tạm thời trong một hàm xử lý. Điều này giúp tránh việc vô ý thay đổi
giá trị trong hàm xử lý khác có biến cục bộ cùng tên.
Ta khai báo một biến cục bộ trong một hàm bằng lệnh put hoặc lệnh set:
Set [variable]=[value]
hay
Put [value] into [variable]
Biến toàn cục
Các biến toàn cục có thể được chia sẻ giữa các hàm xử lý và các phim. Một biến toàn
cục tồn tại và duy trì giá trị của nó khi phim chạy hay đến khi bạn dùng lệnh
clearGlobasl để xoá.
Nếu một hàm xử lý khai báo một biến là toàn cục thì có thể dùng giá trị hiện tại của biến
đó. Nếu hàm này thay đổi giá trị của biến thì giá trị mới sẽ có tác dụng đối với các hàm
còn lại có sử dụng nó. Khai báo biến toàn cục nh sau:
Global gbvarName
Ta có thể khai báo biến toàn cục bên trong hay bên ngoài một hàm. Khi khai báo biến
toàn cục, ta không phải khởi tạo cho nã, Director sẽ gán cho nó một giá trị là <void>.

Bởi vì ta muốn dùng biến cục bộ trong suốt một bộ phim, tốt nhất là nên khai báo chúng
trong hàm xử lý prepareMovie , đảm bảo rằng chúng sẽ tồn tại ngay khi phim bắt đầu.
Các dòng lệnh sau đây khai báo biến toàn cục gName và gán nó giá trị là Mary:
global gName
gName = "Mary"
Nếu một biến toàn cục được khai báo bên trong một hàm xử lý và ta muốn sử dụng nó ở
một hàm khác, ta phải khai báo lại biến toàn cục đó, nếu không Director sẽ xem nó là
một biến cục bộ trùng tên với biến toàn cục. Còn nếu biến toàn cục được khai báo ở
trong mét MovieScript, bên ngoài tất cả các hàm, thì các hàm không phải khai báo lại
biến toàn cục.
Kiểu danh sách
Danh sách là một kiểu dữ liệu giúp ta dễ dàng theo dõi và cập nhật một dãy dữ liệu. Ví
dụ, nếu muốn lưu trữ nhiều tên hay sè trong một dự án Director, ta có thể lưu trong mét
danh sách. Toán tử ([ ]) dùng để biểu diễn một danh sách.
Có hai loại danh sách trong Lingo: danh sách tuyến tính và danh sách thuộc tính.
Trong mét danh sách tuyến tính, mỗi một thành phần là một giá trị đơn. Ví dụ, danh sách
dưới đây là một tập đơn giản các số:
[100, 150, 300, 350]
Trong mét danh sách thuộc tính, mỗi một thành phần chứa hai giá trị cách nhau bởi một
dấu “:”. Một thành phần là tên thuộc tính, luôn luôn có dấu thăng (#) đi trước; thành
phần kia là giá trị gắn với thuộc tính đó. Ví dụ, những lệnh sau đây sẽ đặt biến myList
thành một danh sách thuộc tính chứa các giá trị của các thuộc tính là #speed,
#direction,và #weight. Đây có thể là tính chất của một thiên thể.
myList = [#speed: 155, #direction: 237, #weight: 8746]
Các thuộc tính có thể xuất hiện nhiều lần trong mét danh sách.
Cả hai loại danh sách có thể là danh sách rông, không chứa giá trị nào cả. Một danh sách
tuyến tính chứa hai dấu móc vuông ([ ]). Mét danh sách thuộc tính rỗng chứa hai dấu
móc vuông và một dấu hai chấm ở giữa ([:]).
THAO TÁC TRÊN DANH SÁCH:
Lưu trữ và truy nhập danh sách

• Danh sách tuyến tính (linear list)
Để đặt một giá trị vào một danh sách tuyến tính:
Dùng toán tử “=”. (Có thể dùng lệnh setAt nh trong các phiên bản Director trước)
Ví dụ, dòng lệnh workerList[2] = "Tiffany" đặt giá trị phần tử thứ hai của danh sách là
Tiffany.
Để truy nhập một giá trị trong mét danh sách tuyến tính:
Dùng biến danh sách và chỉ số trỏ vào phần tử trong danh sách. (Còn có thể dùng lệnh
getAt hay getaProp)
Ví dô, trong mét danh sách tuyến tính tên là workerList, ta đặt các giá trị:
set workerList = ["Bruno ", "Heather ", "Carlos "],
thì biểu thức workerList[2] sẽ lấy giá trị của phần tử thứ hai trong workerList, giá trị là
Heather.
• Danh sách thuộc tính (property list)
Đối với danh sách thuộc tính thì có hai kiểu cú pháp có thể dùng để thao tác. Kiểu thứ
nhất là dùng dấu [] và tên của thuộc tính. Kiểu thứ hai là dùng dấu chấm (.). Giả sử ta có
một danh sách
list foodList = [#breakfast:"Waffles", #lunch:"Tofu Burger", #dinner:"Hungarian
Goulash"]
Có thể dùng một vài lệnh nh dưới đây để thao tác
foodList[#Bruno] = "sushi" (vào thuộc tính Bruno có giá trị “sushi”)
hay
foodList.Bruno = "sushi"
Kiểm tra các đặc điểm của một danh sách:
Ta có thể xác định các đặc điểm của một danh sách và số phần tử của nó bằng cách sử
dụng các lệnh sau:
• Đếm số phần tử dùng hàm count().
• Xác định kiểu của danh sách, dùng hàm ilk().
• Lấy giá trị lớn nhất hay nhỏ nhất, dùng hàm max() hay min()
• Xác định vị trí của một thuộc tính dùng các hàm findPos, findPosNear, or
getOne.

Copy các danh sách
Gán mét danh sách vào một biến và sau đó lại gán biến đó cho một biến khác không tạo
ra một bản copy riêng biệt và khác với danh sách ban đầu. Hai biến đó thực chất chỉ trỏ
vào cùng một danh sách mà thôi.
Để tạo ra một bản copy đúng nghĩa, độc lập với danh sách gốc, ta dùng hàm duplicate().
Các dòng lệnh sau tạo ra mét danh sách và sau đó lại tạo ra một bản copy của nó:
oldList = ["a", "b", "c"]
newList = duplicate(oldList)
Sau đó thì nếu ta có thay đổi một trong newList hay oldList danh sách kia không bị ảnh
hưởng.
Sắp xếp danh sách:
Có thể sắp xếp một danh sách trong đó các phần tử được xếp theo trình tự abc , sè đứng
trước xâu. Xâu được xếp tuỳ vào ký tự đầu tiên, bất kể nó dài bao nhiêu.
Lingo sắp xếp một danh sách tuyến tính theo các giá trị trong đó, còn với danh sách
thuộc tính thì theo thuộc tính. Dùng lệnh sort để sắp xếp.
Tạo mảng nhiều chiều
Mỗi phần tử của một danh sách lại chứa các danh sách con khác. Theo kiểu này ta có
thể tạo ra mảng nhiều chiều bằng danh sách.
Giả sử ta cần tạo mét mảng hai chiều tên là twoDimensionList, mỗi phần tử của danh
sách này lại là một danh sách. Đoạn chương trình sau sẽ tạo một mảng hai chiều với giá
trị các phần tử là #none.
Set twoDimensionList=[]
Repeat with row=1 to 10
Set aRow=[]
Repeat with column=1 to 10
SetAt (aRow,column,#none)
End repeat
SetAt ( twoDimensionList, Row, aRow)
End repeat
Kiểu số nguyên (integer)

Director xử lý số nguyên trong khoảng 2,147,483,648 đến +2,147,483,647. ( Ngoài
khoảng này nên dùng số thập phân, hay còn gọi là dấu phẩy động).
Ta có thể chuyển đổi một số thập phân thành số nguyên nhờ hàm integer(). Ví dô, lệnh
set theNumber = integer(3.9) làm tròn số thập phân 3.9 thành 4.
Kiểu số thập phân
Một số thập phân, hay còn gọi là số dấu phẩy động, là một số có chứa dấu chấm thập
phân. Ta có thể dùng kiểu ký hiệu số mũ với số thập phân: ví dô,
-1.1234e-100 or 123.4e+9
Để chuyển một giá trị nguyên thành thập phân ta dùng hàm float().
Kiểu biểu tượng
Kiểu biểu tượng là một kiểu dữ liệu đặc biệt, khác với ngôn ngữ khác. Mét kiểu biểu
tượng luôn bắt đầu bằng dấu thăng (#).
Kiểu biểu tượng là hằng do ngườidùng định nghĩa. Các phép so sánh có thể được thực
hiện rất nhanh khi dùng kiểu này.
Ví dụ, dòng lệnh
userLevel = #novice
chạy nhanh hơn dòng lệnh
userLevel = "novice"
Biểu tượng không thể chứa dấu cách hay dấu chấm.
Chuyển một xâu thành biểu tượng ta dùng hàm symbol(). Còn chuyển ngược từ
kiểu biểu tượng thành xâu ta lại dùng hàm string().
III. DÙNG CÁC XTRAS ĐỂ MỞ RỘNG CHỨC NĂNG CỦA
DIRECTOR
Xtras là những thành phần phần mềm mở rộng các chức năng của Director; một vài
Xtras được cài đặt cùng với Director còn lại được các nhà sản xuất trung gian phát triển.
Xtras cung cấp các khả năng như nối với Internet, thao tác trên file, thao tác với cơ sở
dữ liệu v.v. Dùng ngôn ngữ lập trình C ta có thể tạo ra được Xtras của riêng mình.
Các kiểu Xtras

×