1. Trang chủ
  2. » Luận Văn - Báo Cáo

đồ án công nghệ thông tin Chương trình Macromedia Director

110 278 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 110
Dung lượng 653 KB

Nội dung

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

Trang 1

Mục lục

Ph n I: Tìm hi u v Macromedia Director 8 ầ ể ề 4

Ch ươ ng 1: C b n v Director 8 ơ ả ề 4

I.Gi i thi u v Macromedia Director ớ ệ ề 4

Có gì đặ c bi t trong Director? ệ 4

Shockwave: đư a s n ph m Director lên m ng ả ẩ ạ 5

II.Các thành ph n c a Director ầ ủ 6

C a s cast ử ổ 6

Stage 7

C a s Score ử ổ 8

Sprite 8

Sprite Span 9

Sprite Overlay 10

Khung hình 10

Kênh 11

Kênh Tempo 11

Kênh palette 12

Kênh Transtion 13

Hai kênh âm thanh 13

Kênh script 14

Control Panel 15

III.Các k thu t t o ho t hình trong Director ỹ ậ ạ ạ 15

K thu t Tweening trong Director ỹ ậ 16

Thay đổ đườ i ng i c a m t sprite đ ủ ộ 19

Chuy n ể đổ i các thành ph n cast c a m t sprite ầ ủ ộ 20

Ho t hình theo k thu t thay ạ ỹ ậ đổ i khung hình (Frame-by-frame animation) 21

Nhanh chóng t o ho t hình dùng nhi u thành ph n cast ạ ạ ề ầ 22

S dông Cast to Time ử 22

S d ng l nh Space to Time ử ụ ệ 23

S dông film loop ử 23

T o ho t hình dùng l nh Lingo ạ ạ ệ 24

Ch ươ ng 2: Lingo script trong Director 26

I S qua v Lingo ơ ề 26

Các lo i Lingo script ạ 30

Các hàm x lý s ki n c a h th ng (system handler) ử ự ệ ủ ệ ố 31

Th t phân c p các thông báo ứ ự ấ 32

Truy n các thông báo s ki n ề ự ệ 35

II Các ki u bi n trong Director ể ế 35

Bi n c c b ế ụ ộ 36

Bi n toàn c c ế ụ 36

Ki u danh sách ể 37

Ki u s nguyên (integer) ể ố 41

Ki u s th p phân ể ố ậ 41

Trang 2

Ki u bi u t ể ể ượ 41 ng

III Dùng các Xtras để ở ộ m r ng ch c n ng c a Director ứ ă ủ 42

Các ki u Xtras ể 42

L u tr trong các file ngoài dùng FileIOXtra ư ữ 43

Ch ươ ng 3: L p trình h ậ ướ ng đố ượ i t ng b ng Lingo ằ 45

I So sánh v i các ngôn ng h ớ ữ ướ ng đố ượ i t ng khác 46

II C b n v Script cha và ơ ả ề đố ượ i t ng con (child object) 47

S khác nhau gi a ự ữ đố ượ i t ng con (child object) và behavior (hành vi) 47

Vi t mét script cha ế 48

Dùng bi n me ế 48

T o m t ạ ộ đố ượ i t ng con 48

Ki m tra các thu c tính c a ể ộ ủ đố ượ i t ng con 50

Ph n II: Công ngh shockwave trên internet ầ ệ 52

Ch ươ ng 4 : D ch v thông tin World Wide Web ị ụ 52

I Ngu n g c ra ồ ố đờ ủ i c a World Wide Web 52

II Ki n trúc c a World Wide Web ế ủ 53

Web Server 54

Web Browser 54

Khái ni m HTTP ệ 55

Khái ni m HTML ệ 56

III Tích h p các d ch v thông tin trong WWW ợ ị ụ 56

World Wide Web và Gopher 56

World Wide Web và FTP 57

World Wide Web và WAIS 58

Tích h p các d ch v khác trong World Wide Web ợ ị ụ 59

IV ng d ng c a Web ứ ụ ủ 59

Website trên Internet 59

ng d ng c a Web ứ ụ ủ 61

V Gi i thi u v CGI (common gateway interface) ớ ệ ề 63

Gi i thi u chung ớ ệ 63

L p trình CGI là gì? ậ 65

HTML, HTTP và ch ươ ng trình CGI 65

Các th m c trên server ư ụ 67

M u l p trình CGI ẫ ậ 69

Các ch ươ ng trình CGI và v n ấ đề ả b o m t ậ 70

Truy n thông gi a server và browser ề ữ 72

Ch ươ ng 5: Công ngh Shockwave ệ 75

I Lingo cho ho t ạ độ ng trên Internet 76

L y d li u t m ng ấ ữ ệ ừ ạ 77

Ki m tra tr ng thái c a ho t ể ạ ủ ạ độ ng backgroundloading 77

Streaming multimedia 78

II S d ng URL v i Lingo ử ụ ớ 79

III i u khi n trình duy t Đ ề ể ệ 81

Nh ng i m khác khi dùng Lingo trong trình duy t ữ đ ể ệ 81

Scripting trên trình duy t ệ 81

IV Lingo giao ti p v i trình duy t ế ớ ệ 83

Trang 3

Ph n III: xây d ng Ch ầ ự ươ ng trình 84

Ch ươ ng 6: Phân tích ch ươ ng trình 85

I N i dung ch ộ ươ ng trình: 85

II T ng th ch ổ ể ươ ng trình 85

Ch ươ ng 7: Xây d ng ch ự ươ ng trình 86

I Phim left.dir 86

C u trúc d li u ấ ữ ệ 87

Ho t ạ độ ng c a ch ủ ươ ng trình 94

II Phim suamenu.dir: 105

Ho t ạ độ ng c a ch ủ ươ ng trình 106

Ch ươ ng 8: ánh giá và h Đ ướ ng phát tri n ể 110

I Các k t qu ế ả đạ đượ 110 t c II H ướ ng phát tri n ể 110

III Tham kh o ả 110

1.http://www.Macromedia.com 110

2.http://www.shockwave.com 110

Trang 4

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

Trang 5

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

Trang 6

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

Trang 7

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

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

Trang 8

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

Playback head

Sprite trong score

Trang 9

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

Trang 10

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

Trang 11

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 Kªnh palette Kªnh transition Kªnh ©m thanh Kªnh behavior Kªnh sprite

Trang 12

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:

Độ 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

Trang 13

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

Trang 14

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

Trang 15

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

Trang 16

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, độ

Trang 17

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.

Trang 19

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

Trang 20

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

Trang 21

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

Trang 22

2 Thay đổi độ dài cần của sprite theo ý muốn

3 Chọn View > Display > Cast Member để hiện tờn của mỗi thành phần cast trờn sprite

4 Vào View > Sprite Labels > Changes Only Đặt thế này để hiện tờn chỉ khi thành phần cast thay đổi

5 Vào Edit > Edit Sprite Frames

6 Sau đú chọn những frame muốn thay đổi thành phần cast

7 Mở cửa sổ Cast và chọn thành phần cast để thay đổi

8 Chọn Edit > Exchange Cast Members

Director thay thế những thành phần cast được chọn trờn sprite bằng thành phần cast trong cửa sổ Cast

9 Lặp lại đến khi hoàn thành Chọn Edit Entire Sprite khi làm xong

Nhanh chúng tạo hoạt hỡnh dựng nhiều thành phần cast

Cast to Time và Space to Time được dựng để tạo hoạt hỡnh một cỏch nhanh chúng dựng nhiều thành phần cast

Sử dụng Cast to Time

Để “nhột” một loạt cỏc thành phần cast vào Score như là một sprite duy

nhất, dựng lệnh Modify > Cast to Time, đõy là một lệnh cú ích nhất để

tạo hoạt hỡnh dựng nhiều thành phần cast Thường thỡ bạn tạo một loạt ảnh

và sau đú dựng lệnh Cast to Time để nhanh chúng đặt chỳng vào Score nh

là một sprite duy nhất

Cỏc bước tạo một sprite từ nhiều thành phần cast:

1 Chọn frame trờn Score nơi muốn đặt sprite mới Chọn frame trên Score nơi muốn đặt sprite mới

Trang 23

2 Mở cửa sổ Cast

3 Chọn các thành phần cast để đặt trên sprite mới tạo ra

4 Vào Modify > Cast to Time Vµo Modify > Cast to Time

Sử dụng lệnh Space to Time

Muốn chuyển các kênh lân cận vào một sprite,ta dùng lệnh Modify > Space

to Time Phương pháp này tiện lợi khi bạn muốn xếp một vài ảnh trên cửa

sổ Stage vào một frame và chuyển thành một sprite

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

Trang 24

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

Trang 26

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

Trang 27

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)

Trang 28

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

MouseEnter Con trá di chuyển đến một spriteMouseLeave Con trá di chuyển ra khái sprite

bởi một âm thanh, video sè QuickTime hoặc Xtra mà hỗ trợ các điểm nhắc

PrepareFrame Trước khi khung hiện tại được chiếu,

các khung đơn nhận message này

Trang 29

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

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

Lệnh close window

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

Trang 30

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

Trang 31

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:

Trang 32

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 đó:

Trang 33

Sprite script MouseEnter

MouseLeaveMouseWithinMouseUpMouseDownRightMouseUpRightMouseDownKeyUp

KeyDownBeginSpriteEndSpritePrepareFrameCast member’s script MouseEnter

MouseLeaveMouseWithinMouseUpMouseDownRightMouseUpRightMouseDownKeyUp

KeyDown

ExitFrame

Trang 34

KeyDownTimeOut

ExitFrameMouseUpMouseDownRightMouseUpRightMouseDownKeyUp

KeyDownIdle

StartMovieStopMovieActivateWindowMoveWindowResizeWindowDeactivateWindow

Trang 35

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

Trang 36

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:

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

Trang 37

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]

Trang 38

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

Trang 39

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

Trang 40

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.

SetAt ( twoDimensionList, Row, aRow)

End repeat

Ngày đăng: 25/04/2015, 12:37

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w