T×m hiÓu vÒ Macromedia Director 8
Cơ bản về Director 8
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, nhng 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, nhng 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 nhng 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“di chuyển từ một hệ thống sang hệ thống khác (th” từ một hệ thống sang hệ thống khác (th ờng là Macintosh sang Windows, và ngợc lại), nhng 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
“di ” từ một hệ thống sang hệ thống khác (th
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, nhng 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 nhng 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 Nhng 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 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, nhng ta vẫn có thể truy nhập chúng từ cửa sổ cast.
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
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.
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.
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 trng 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 trng 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,
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 để lu 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
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
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“di ” từ một hệ thống sang hệ thống khác (th
(focus), đa phim đó nổi lên“di ” từ một hệ thống sang hệ thống khác (th
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“di ” từ một hệ thống sang hệ thống khác (th ơng trình hiện tại
Lệnh close windowEnterFrame đầu đọc nhập vào một khung hìnhExitFrame đầ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:
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.
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à cha đợ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.
Lập trình hớng đối tợng bằng Lingo
Director cho phép ta lập trình theo kiểu hớng đối tợng nh trong các ngôn ngữ khác, tạo thuận lợi để phát triển một ứng dụng Ta có thể dùng script cha để tạo các đối tợng script mà có thể hoạt động nh là các đối tợng độc lập
Lingo có thể tạo nhiều bản copy hay instance (thực thể) của một script cha Mỗi instance của một script cha đợc gọi là một đối tợng con (đối tợng con) Ta có thể tạo các đối tợng con theo nhu cầu khi phim chạy Director không giới hạn số đối tợng con có thể tạo ra từ cùng một script cha Ta có thể tạo nhiều đối tợng con tuỳ theo dung lợng bộ nhớ
Chơng này trình bày cơ bản về cách viết script cha , tạo và sử dụng các đối tợng con
I So sánh với các ngôn ngữ hớng đối tợng khác
Nếu đã quen với một ngôn ngữ lập trình hớng đối tợng khác nh là Java hay C++, ta có thể dễ dàng hiểu đợc các khái niệm về script cha Những thuật ngữ mà Director dùng để mô tả script cha và đối tợng con tơng ứng các thuật ngữ trong lập trình hớng đối tợng:
Script cha tơng ứng với class (lớp) đối tợng con tơng ứng với instance (thực thể)
Property variable tơng ứng với instance variable hay member variable (biến thành phần)
Handler tơng ứng với method (phơng thức)
Ancestor script tơng ứng với the Super class hay base class (lớp gốc)
II Cơ bản về Script cha và đối tợng con (child object)
Một script cha là một tập các hàm xử lý và thuộc tính đợc dùng để xác định một đối tợng con; chính nó không phải là một đối tợng con Một đối tợng con là một thể hiện đầy đủ và độc lập của script cha Các đối tợng con của cùng một script cha có các hàm xử lý và các thuộc tính tơng tự nhau, vì vậy các đối tợng con trong cùng một nhóm trả lời các sự kiện và thông báo tơng tự nhau.
Thông thờng, script cha đợc dùng để xây dựng các đối tợng con Những đối t- ợng con này khi phim đòi hỏi cùng một cơ chế xử lý đợc chạy đồng thời nhng khác nhau về tham số.
Bởi vì tất cả đối tợng con của cùng một script cha có các hàm xử lý giống nhau, những đối tợng con đáp ứng các sự kiện theo cách tơng tự nhau Tuy nhiên, bởi vì mỗi đối tợng con chứa các giá trị độc lập cho các thuộc tính khai báo trong script cha, nên mỗi đối tợng con có thể hoạt động khác nhau.
Lấy ví dụ,, ta có thể tạo một script cha trong đó mô tả các text field có thể soạn thảo đợc với các thuộc tính nh màu, chữ … Bằng cách thay đổi các giá trị của các thuộc tính trong các đối tợng con cụ thể, ta có thể thay đổi các đặc điểm của chúng trong khi phim đang chạy mà không ảnh hởng đến nhau.
Sự khác nhau giữa đối tợng con (child object) và behavior (hành vi)
Mặc dù đối tợng con và behavior tơng tự nhau vì chúng có thể có nhiều thể hiện, chúng cũng có nhiều điểm khác biệt Sự khác biệt lớn nhất giữa đối tợng con và behavior là behavior đợc gán với sprite Các đối tợng behavior đợc tự động tạo ra khi sprite đợc tạo ra Ngợc lại, đối tợng con phải đợc tạo ra một cách tờng minh bởi một hàm xử lý.
Behavior và đối tợng con khác nhau ở cách chúng đợc gán với sprite Director tự động gán một behavior với một sprite, nhng ta phải gán một đối tợng con bằng lệnh Lingo.
Một script cha chứa các lệnh Lingo cần thiết để tạo các đối tợng con và xác định các hành động và thuộc tính cho chúng Trớc hết ta cần xác định xem các đối t- ợng con sẽ hành động nh thế nào Sau đó ta có thể viết một script cha để thể hiện Trong script cha, khai báo các biến và các thuộc tính, sau đó khởi tạo chúng trong hàm on new Viết thêm các hàm xử lý để điều khiển các hành động của các đối tợng con.
Thông thơng, một script cha tạo ra nhiều đối tợng con, và mỗi đối tợng con có hơn một hàm xử lý Thuật ngữ me là một biến tham số đặc biệt Nó luôn phải là tham số đầu tiên đợc khai báo trong mỗi hàm xử lý trong một script cha.
Biến me báo cho các hàm xử lý trong đối tợng con rằng chúng chỉ thao tác trên những thuộc tính của nó chứ không phải là của đối tợng khác Theo cách này,khi một hàm xử lý trong một đối tợng con tham chiếu đến các thuộc tính, thì sẽ dùng các giá trị của thuộc tính bên trong chính nó
Tạo một đối tợng con Đối tợng con tồn tại hoàn toàn trong RAM; chúng không đợc lu lại cùng với phim. Chỉ có script cha và ancestor script tồn tại trên đĩa. Để tạo một đối tợng con mới, ta dùng hàm new và gắn đối tợng con với một tên biến hay vị trí trong một list để có thể truy nhập đến sau này Để tạo ra một đối tợng con và gán với một biến, dùng cú pháp: set variableName = new(script "scriptName", argument1,
, argument2, argument3 ) trong đó scriptName là tên của script cha và argument1, argument2, argument3 là các tham số ta truyền cho đối tợng con bằng hàm on new hàm new() tạo một đối tợng con mà lớp cơ sở của nó là scriptName Sau đó nó gọi hàm on new trong đối tợng con với các tham số xác định.
Ta có thể gọi một hàm tạo mới ở bất kỳ đâu trong một phim Có thể đặt các giá trị ban đầu của đối tợng con bằng cách thay đổi các tham số đầu vào trong hàm new().
Công nghệ shockwave trên internet
Dịch vụ thông tin World Wide Web
Trong thời gian gần đây, một trong những dịch vụ hấp dẫn và đ ợc quan tâm nhiều nhất trên Internet chính là World Wide Web Đây là dịch vụ thông tin mới
Yêu cầu thông tin của Client đ ợc gửi lên Internet Server HTTP nhận yêu cầu, xử lý nó và gửi kết quả về cho Client thông qua Internet ra đời nhng lại phát triển nhanh nhất, tạo nên một tiềm năng to lớn trong việc phổ biến thông tin toàn cầu, góp phần thúc đẩy xã hội loài ngời bớc vào kỷ nguyên mới của khoa học kỹ thuật, kỷ nguyên của Công nghệ thông tin Trong chơng này, tôi xin đợc trình bày những đặc điểm khiến cho World Wide Web đã trở nên quan trọng đến nh vậy.
I Nguồn gốc ra đời của World Wide Web
World Wide Web ra đời từ một dự án nghiên cứu phát triển tại phòng thí nghiệm vật lý hạt nhân châu Âu vào năm 1989 Nhóm nghiên cứu do Tim Berners-Lee và Robert Calliau đứng đầu, đã phát triển và đa ra một giao thức truyền và nhận các tệp siêu văn bản (Hypertext) theo mô hình Client/Server, gọi tắt là HTTP (HyperText Transfer Protocol) để phục vụ cho việc trao đổi thông tin trên Internet Sau đó nhóm phát triển đã công bô rộng rãi th viện chơng trình nguồn của giao thức này cho các nhà phát triển và các tổ chức nghiên cứu Internet để họ phát triển các phần mềm Web Client nhằm hiểu đợc và hiển thị các tệp Hypertext Kể từ đó, thuật ngữ World Wide Web hay gọi gọn hơn là Web đã ra đời và đợc công nhận rộng rãi trên Internet nh là một từ chỉ tới một dịch vụ phát triển mạnh mẽ nhất và hấp dẫn nhất Các tổ chức và các công ty sử dụng Internet đã thành lập nên một uỷ ban (W3 Consortium) để đa các tiêu chuẩn cho World Wide Web và chuẩn hoá các cấp độ (Levels) cho ngôn ngữ HTML.
Nh vậy, World Wide Web đợc định nghĩa nh là một dịch vụ thông tin toàn cầu nhằm cung cấp các t liệu thông tin đa phơng tiện thông qua một giao thức mức cao đợc gọi là HTTP Các tài liệu trên World Wide Web đợc viết bởi ngôn ngữ
HTML Sau khi các tài liệu đợc chuyển tới Client, các phần mềm Web Browser sẽ diễn dịch lại tài liệu này và trình bày các thông tin dới nhiều dạng khác nhau nh văn bản, hình ảnh, âm thanh, phim số hoá
II Kiến trúc của World Wide Web
World Wide Web đợc xây dựng theo mô hình Client/Server, tức là ngời ta sẽ thiết lập một máy phục vụ cho việc lu giữ các tài liệu Hypertext gọi là Web Server Phía ngời sử dụng, có một máy tính cùng với các phần mềm có khả năng hiểu đợc các tài liệu HTML và giao tiếp đợc với máy Server gọi là Web Client hoặc Web Bowser Khi ngời sử dụng yêu cầu một tài liệu nào đó, thì Web Server se phục vụ cho Web Bowser tài liệu đó và Web Bowser sẽ hiển thị nó lên màn hình với các khuôn dạng thích hợp.
Dới đây là mô hình Client/ Server của World Wide Web:
Mô hình Client/Server của WWW
Các Server khác Web Browser HTTP
Chức năng của Web Browser
Một Web Server là một phần mềm đợc sử dụng ở máy phục vụ, nó luôn "lắng nghe" những yêu cầu của ngời sử dụng từ một cổng truyền thông TCP/IP nào đó (ngầm định là cổng 80) Khi phía máy khách yêu cầu một trang Web, máy Server sẽ tìm trong tài nguyên của mình xem có đáp ứng đợc đòi hỏi đó không, nếu có thể nó sẽ gửi trả kết quả về phía Client, các kết quả trả về th ờng là các trang HTML chứa văn bản thuần tuý hoặc là các dạng dữ liệu đa phơng tiện nh các tệp hình ảnh, âm thanh
Web Browser là một phần mềm đợc dùngở phía ngời sử dụng, nhiệm vụ của nó là khởi tạo các con trỏ địa chỉ URL (sẽ đợc giải thích ở phần tiếp theo) để gửi tới cho Wen Server Web Browser sẽ diễn dịch nội dung dới ngôn ngữ HTML và trình bày chúng cho ngời sử dụng dới nhiều hình thức phong phú Hiện nay, các Web Browser chủ yếu dùng giao diện đồ hoạ với ngời dùng để trình bày tài liệu một các hấp dẫn hơn.
Ngoài các chức năng nh trên, ta còn có thể thực hiện nhiều thao tác thông th- ờng khác nh là lu tệp tin lên đĩa; sử dụng E-mail; hoặc sử dụng để biên soạn một tài liệu HTML nguồn (Web Editor).
Các Web Server và Web Browser giao tiếp với nhau thông qua một giao thức gọi là giao thức truyền siêu văn bản (HyperText Transfer Protocol), và gọi tắt là giao thức HTTP.
Khi Client gửi một yêu cầu về phía Web Server thì giữa Client và Server sẽ hình thành một đờng kết nối logic dựa trên giao thức HTTP Khi kết thúc quá trình trao đổi giữa Web Server và Web Browser (khi Web Server đ phục vụã xong yêu cầu của Web Browser) thì sự kết nối này sẽ chấm dứt Nh vậy, mối liên hệ giữa Client và Server chỉ đợc thiết lập và tồn tại trong quá trình trao đổi với nhau Điều này có một lợi điểm rất lớn là giảm đợc sự lu thông trên hệ thống mạng.
Khi dữ liệu đợc truyền từ Web Server về phía Client thì giao thức HTTP sẽ thêm vào phần đầu đề của khối dữ liệu một thông tin header tuân theo tiêu chuẩn MIME (Multipurpose Internet Mail Extension) để phục vụ cho việc trao đổi thông tin một cách đa dạng Những tài liệu HTML sẽ có phần đầu đề theo dạng "Text/ Html", các dạng dữ liệu khác có phần đầu đề riêng của mình; ví dụ nh văn bản thuần tuý có phần đầu đề là "text/plain", tệp ảnh GIF sẽ có phần đầu đề là
"Image/Gif" Khi Client gửi một yêu cầu tới Web Server, nó sẽ gửi theo một danh sách tất các các dạng MIME mà nó có thể hiểu đợc, dựa vào đó mà Web Server chỉ phục vụ những dữ liệu mà Client đó có khả năng hỗ trợ Khi nhận đợc tài liệu, trình Browser sẽ dựa vào mô tả MIME cuẩ tài liệu đó để có cách trình bày thích hợp.
HTML đợc viết tắt từ cụm từ HyperText Markup Language, tạm dịch là "ngôn ngữ đánh dấu siêu văn bản", dùng để xây dựng nên các trang Web Các tài liệu HTML cho phép ta mô tả về cấu trúc cũng nh định dạng của một tài liệu, tạo ra sự tích hợp giữa các dạng thông tin khác nhau nh hình ảnh; âm thanh, phim số hoá vào trong một tệp tin đơn giản Nó cho phép ta mô tả các URL để tạo ra liên kết tới các dịch vụ khác nhau trên Internet Đây là công cụ rất mạnh để xây dựng các ứng dụng và tích hợp thông tin trên mạng Internet
III Tích hợp các dịch vụ thông tin trong WWW
Một trong những mục đích thiết kế chính của World Wide Web (Web) là khả năng hỗ trợ đợc các giao thức hiện thời của các ứng dụng sẵn có trên Internet. Chính vì vậy mà Web có thể hiểu đợc và hỗ trợ rất nhiều các dịch vụ sẵn có trên Internet nh FTP, Gopher, E-mail Điều này làm cho World Wide Web đợc chấp nhận và sử dụng rộng rãi.
World Wide Web và Gopher
Công nghệ Shockwave
Đối với multimedia trên internet, Shockwave là một phần khó bỏ qua trong chiến lợc phân phối sản phẩm Có các loại Lingo dùng cho mạng:
Lingo dành cho các hoạt động mạng – còn gọi là netLinggo - điều khiển giao tiếp giữa phim và các phần khác trên mạng.
Lingo để điều khiển multimedia theo cơ chế streaming khi các frame xác định của một phim đã sẵn sàng.
Lingo hỗ trợ URL , xem chúng là các tham chiếu đến các file ngoài, làm cho các tài nguyên internet sẵn sàng để đợc sử dụng.
Scripting trên trình duyệt cho phép bạn điều khiển sự tơng tác giữa phim và môi trờng chạy của nó.
Chơng này trình bày các thông tin cơ bản để sử dụng Lingo với phim Director trên một mạng máy tính Tất nhiên, công nghệ internet đang thay đổi liên tục Để xem thêm các thông tin cập nhật về Lingo, Shockwave, và các ví dụ của chúng các bạn phải vào các website cần thiết Chúng chứa nguồn thông tin quý giá về thông tin mới nhất, các thủ thuật dành cho các nhà phát triển, và các ví dụ tốt về phim Shockwave
I Lingo cho hoạt động trên Internet
Director cho phép một hoạt động trên mạng đợc thực hiện cho dù một hoạt động trên mạng khác cha hoàn thành Với khả năng này, thờng đợc gọi là background loading, cho phép các file đợc tải xuống trong khi các hoạt động khác đang tiến hành.
Background loading cho phép Director vừa thực hiện nhiều hành động một lúc vừa liên lạc với mạng Bởi vì trong file đợc tải về ở hậu tr“di ờng nên ng” từ một hệ thống sang hệ thống khác (th ời dùng không nhận thấy thời gian chờ đợi.
Tải dữ liệu từ mạng khác với tải các thành phần của cast trong Director Tải từ trên mạng tải dữ liệu về đĩa ở máy địa phơng Tải các thành phần cast tức là tải vào bộ nhớ.
Các bớc cơ bản để thực hiện một hoạt động netLingo:
2 Đảm bảo là hoạt động hoàn thành.
3 Nhận kết quả nếu hoạt động hoàn thành. Đối với background loading, việc quan trọng là phải kiểm tra tiến trình của hoạt động Những cách sau là những cách để kiểm tra xem một hoạt động đã hoàn thành hay cha và có thành công hay không:
Kiểm tra một trạng thái của hoạt động bằng cách sử dụng hàm netDone th- ờng xuyên đến hàm biểu thị rằng hành động đã hoàn thành, nhng thế vẫn cha đủ để khẳng định rằng hoạt động đã thành công hay không.
Kiểm tra một trạng thái lỗi bằng cách sử dụng hàm netError.
Lấy dữ liệu từ mạng
Tất cả hoạt động netLingo lấy dữ liệu từ mạng đều trả về một netID Ví dụ, lệnh sau đây gán một netID của một hoạt động getNetText vào một biến theNetID.
Set theNetID=getNetText(“http://www.thenews.com”)
Bảng sau liệt kê các netLingo lấy dữ liệu từ mạng:
GetNetText Bắt đầu lấy về một file từ server dới dạng text
Dùng netDone để kiểm tra khi nào getNetText hoàn thành. Dùng netTextResult để trả về kết quả của hàm getNetText GotoNetMovie Lấy về và chơi một phim Shockwave từ mạng Phim hiện tại sẽ tiếp tục chạy cho đến khi phim mới sẵn sàng.
GotoNetPage Mở một URL, cho dù đó là một phim Shockwave, HTML, hay dạng MIME khác.
Lệnh gotoNetPage có thể thay thế nội dung một trang hay mở một trang mới Nếu trình duyệt cha mở, lệnh này sẽ mở trình duyệt.
PreLoadnetThing Load trớc một file từ server vào cache của browser Điều này cho phép bạn dùng phần đã tải xuống mà không bị gián đoạn, nó đợc lấy ra từ bộ nhớ.
DownLoadnetThing Download một file từ server vào một file xác định trên đĩa địa phơng Để lặp lại một hoạt động mạng có cùng URL, trớc hết dùng lệnh netAbort để xoá bỏ hoạt động trớc có cùng URL Nếu không thì kết quả của hoạt động trớc sẽ còn trong cache.
Kiểm tra trạng thái của hoạt động backgroundloading
Bảng sau đây liệt kê các netLingo dùng để kiểm tra tiến trình của các hoạt động trên mạng
NetDone Kiểm tra xem hàm getNetText, downLoadNetThing, preLoadNetThing, hay gotoNetMovie đã hoàn thành hay cha NetError Kiểm tra xem một hoạt động mạng đã hoàn thành cha Một xâu rỗng sẽ đợc trả về cho đến khi hoạt động kết thúc.
Các Lingo sau đây sẽ lấy kết quả của hoạt động mạng:
NetTextResult Trả về kết quả của một hoạt động NetID đợc trả về bởi hoạt động mà ta đang lấy kết quả của nó.
NetLastModDate Trả về xâu ngày tháng đợc sửa đổi cuối cùng từ HTTP header. NetMime Trả về kiểu MiMe của HTTP
GetLatestNetID Trả về một định danh duy nhất đối với một hoạt động không đồng bộ cuối cùng đợc bắt đầu.
Các hàm netTextResult, netMime và netLastModDate chỉ có thể đợc gọi kể từ sau khi các hàm netDone hay netError trả về giá trị chỉ ra rằng hoạt động đó đã đợc kết thúc trớc khi hoạt động mới bắt đầu.
Streaming là cơ chế vừa chạy vừa tải về Director cho phép một phần của“di ” từ một hệ thống sang hệ thống khác (th phim bắt đầu chạy khi một phần dữ liệu và thành phần cast đợc tải về.
Lingo có thể dùng cơ chế streaming trong các cách sau:
§iÒu khiÓn ©m thanh SWA (Shockwave Audio)
Kiểm tra xem một thành phần của cast đã đợc tải về hay cha trớc khi bộ phim tiếp tục chạy.
Kiểm tra xem các thành phần cast dùng trong một frame đã đợc tải về hay cha trớc khi chạy frame.
GetError Xác định xem có lỗi xảy ra không
GetErrorString Lấy một xâu mô tả lỗi trong một file SWA
PauseMember Tạm dừng một file SWA
PercentPlayed Xác định số phần trăm file SWA đã đợc chơI
PlayMember Bắt đầu chơi một file SWA là thành phần cast
PreLoadBuffer Tải về trớc một file SWA vào bộ nhớ
PreLoadTime Xác định thời gian để tải về trớc khi chơi
SoundChannel Xác định số hiệu của kênh âm thanh trong đó file SWA đ- ợc chơi State of member Trạng thái bắt đầu, kết thúc, tạm ngừng hay đang chơi Stop member KÕt thóc mét file SWA
II Sử dụng URL với Lingo
Ngoài Lingo đợc thiết kế để sử dụng cho các hoạt động trên mạng, một số thành phần quan trọng có thể dùng URL nh là các tham chiếu đến các file ngoài Điều này cho phép bạn dùng internet và xem nó là một nguồn chứa các thành phần cast, phim, và các file ngoài khác.
Những thành phần Lingo này có thể dùng URL nh là các tham chiếu đến file trong tất cả các trờng hợp:
xây dựng Chơng trình
Phân tích chơng trình
Macromedia Director đợc dùng để xây dựng các phim trình diễn và việc đa âm thanh, hình ảnh hay các đối tợng multimedia khác rất thuận lợi Ngoài ra, muốn tạo ra các ứng dụng linh hoạt, có tính tơng tác cao thì ta còn phải dựa vào khả năng lập trình trong Director Trong nội dung đồ án này, tôi chú trọng đến khả năng lập trình của nó và lập trình theo kiểu hớng đối tợng.
Mục tiêu ở đây là xây dựng một bộ khung cho phép đa các trang web lên mạng và liên kết chúng theo các chủ đề Ngời dùng có thể thêm, bớt, sửa, xoá và cập nhật nội dung của website Ta xây dựng hai phim Director với hai mục đích khác nhau: phim thứ nhất sẽ đợc dịch thành dạng file exe và có nhiệm vụ cho phép“di ” từ một hệ thống sang hệ thống khác (th ta đọc cũng nh thay đổi nội dung file chứa menu của Website; phim thứ hai sẽ đ- ợc dịch thành dạng phim Shockwave và nhúng vào trang chủ của website, nó có nhiệm vụ đọc file menu từ Webserver và hiển thị lên trang chủ
II Tổng thể chơng trình
Sơ đồ hoạt động của chơng trình nh sau:
48 chọn trang web trên menu
Hiển thị nội dung trang web
Xây dựng chơng trình
Ta xây dựng trong Director một film tên là left và sau đó chuyển thành dạng film Shockwave (sẽ có tên là left.dcr) Phim left.dcr đợc nhúng vào trang web left.htm bằng dòng HTML:
Trang chủ của website có tên là home.htm, nó đợc chia thành hai frame chứa
Menu ở trang left.htm cho phép ngời dùng có thể chọn các trang web cần hiển thị Nh ở hình trên ta có thể click vào một trong các môn học để vào mức menu sâu hơn.
Trong phần này, chúng ta sẽ xem xét cụ thể cấu trúc dữ liệu của chơng trình. Phim left chỉ sử dụng một loại cast đó là internal cast (cast bên trong)
Cast này dùng để lu trữ các thủ tục của phim, các dữ liệu dạng field (một dạng dữ liệu dùng trong Director – chứa văn bản) Các field này sẽ chứa các tên trong menu và đợc hiển thị.
Trong cửa sổ score, ta dùng các kênh palette để đặt bảng màu, còn kênh script ta đặt ba thủ tục dạng frame script điều khiển hoạt động của phim.
Từ kênh 14 đến kênh 63, ta đặt sẵn các field trên đó Tạm thời ta cha sử dụng hết tất cả các field này vào việc hiển thị menu Chúng đợc dùng khi mở rộng ch- ơng trình, thêm vào nhiều menu item nữa Các field sẽ đợc đặt thuộc tính là hiển thị hay ẩn bằng lệnh Lingo thích hợp, field nào cha sử dụng sẽ đợc ẩn đi.
Các kênh còn lại cha đợc sử dụng.
Chơng trình sử dụng các biến toàn cục cho các dữ liệu dùng chung trong toàn bé phim global readok : biến kiểm tra hoạt động network global gNetID : gán cho một hoạt động network (net operation) global gbfirstsprite : sprite đầu tiên gán cho các mục trong menu global gblocv : vị trí global gbloch global gbSubjectList : danh sách chứa các đối tợng global gbMenuFileName: tên file chứa menu global FileContent : nội dung file download đợc
File menu chứa các dòng thể hiện theo một cấu trúc xác định Mỗi dòng có dạng nh sau:
[#Name, #URL,#menuLevel,#BrowseNewWindow] trong đó:
#URL : đờng dẫn đến trang web
#menuLevel : nếu =1 là menu cha
#BrowseNewWindow : thuộc tính này để kiểm tra xem là hiển thị nội dung trang web ở frame bên phải (right) hay hiển thị ở một cửa sổ mới
Các mức menu con nằm ngay sau menu cha Ví dụ, ta có một cấu trúc menu sau:
Hình giải tích Hình không gian
Với cấu trúc nh trên, ta sẽ ghi vào file menu nh sau:
TiÕng Anh,tienganh,2 Headway, headway.htm,3
Hình không gian,khonggian.htm,3
Hình giải tích,hinhgiaitich.htm,3 Đại số,daiso.htm,2
Chơng trình sử dụng một danh sách có tên là gbSubjectList để lu các đối tợng thuéc líp menuitemobject.
Tạo các đối tợng menuItemObject
Ta tạo ra một lớp có tên là menuItemObject, mỗi một mục trong menu là một đối tợng con (hay là một thực thể ) của lớp này Các thuộc tính của lớp gồm có: PspriteNumber : chỉ số của sprite đợc gán cho đối tợng này
PsubjectName : một xâu để hiển thị tên của menuitem
PURL : đờng dẫn đến trang web khi ngời dùng nhấn chuột vào menuitem tơng ứng pLevel : mức của menu plocv,pLoch : vị trí của menuitem pVisible : dựa vào thuộc tính này để hiển thị hay ẩn đối tợng.
PNewWindow : dựa vào thuộc tính này để xét xem có mở một trang Web trong một cửa sổ mới hay không.
Các ph ơng thức của lớp (class method)
1 Hàm tạo on new me return me end
Nhận các tham số đọc đợc từ file menu để gán cho các thuộc tính trong đối tợng. Mỗi khi đọc đợc một dòng từ menu file, ta sẽ tạo ra một đối tợng và khởi tạo cho nã. on Initialize me,mySpriteNumber, mySubjectName, myURL, myPapaOk,myVisible, myNewWindow pSpriteNumber = mySpriteNumber pSubjectName = mySubjectName pURL = myURL pIsPapa = myPapaOK pVisible = myVisible pNewWindow = myNewWindow end
Hàm này kiểm tra thuộc tính hiển thị của menuitem, đồng thời xem nó là menu con hay cha để có thuộc tính hiển thị thích hợp nh là màu chữ, cỡ chữ on CheckVisible me if me.pVisible=true then sprite(pSpriteNumber).visible=true sprite(pSpriteNumber).locV=gblocv
if me.FirstLevelse then la menu con thi thut vao sprite(pSpriteNumber).loch=gbloch+10*(pLevel-1)
member(sprite(pSpriteNumber).MemberNum).forecolor 65
member(sprite(pSpriteNumber).MemberNum).fontSize = 13 else member(sprite(pSpriteNumber).MemberNum).forecolor "0- (pLevel-1)*7 member(sprite(pSpriteNumber).MemberNum).fontSize = 16- (pLevel-1)
end if gblocv=gblocv+30 end if end
4 Các hàm xử lý sự kiện chuột
Các hàm này xử lý các sự kiện nh mousedown, mouseEnter, … on MouseDown me
if me.FirstLevelse then la menu con thi thut vao
member(sprite(pSpriteNumber).MemberNum).forecolor 70
else member(sprite(pSpriteNumber).MemberNum).forecolor 100-(pLevel-1)*7
Hoạt động của chơng trình
Thủ tục này đợc gọi mỗi khi phim bắt đầu chạy Nó thực hiện các nhiệm vụ dới ®©y:
1 Khai báo các biến toàn cục
2 Khai báo danh sách toàn cục
5 Nhảy tới khung hình đầu tiên on startMovie gblocvr gbloch( clearCache gNetID = void readokse gbfirstsprite gbMenuFileName = "menu" gbSubjectList=[] Subject ban dau rong day la linearlist hideAll
Thủ tục này gọi thủ tục ReadMenufromServer để đọc file menu từ Webserver vÒ. on ReadMenufromServer if not readok then clearCache gNetID = getNetText(the moviePath&"menu") end if end end
Lingo cung cấp một hàm quan trọng để download một file, đó là hàm getNetText() Sau khi gọi hàm này nó sẽ đợc gán một Network ID (ở đây là gNetID – biến toàn cục).
Sau khi bắt đầu phim bằng thủ tục onStartMovie, trong đó ta đã gọi hàm để download file menu về, phim sẽ nhảy đến khung hình đầu tiên và script này sẽ đợc gọi Thủ tục này có nhiệm vụ chính là chờ cho hàm getNetText() kết thúc và cất dữ liệu tuỳ theo có lỗi trả về hay không. on exitFrame me
gNetID is set to void unless there is an active net operation, so we only check for results when needed. if not(voidP(gNetID)) then if (netDone(gNetID) = TRUE) then if (netError(gNetID) = "OK") then – neu khong co loi member("netresult").text=netTextResult() readok=true else alert "khong doc duoc file menu"
FileContent="loi roi" end if
FileContent=member("netresult").text gNetID = void end if netDone go the frame end if end
Thủ tục này thực hiện các bớc:
1 Phân tích một dòng trong file menu
2 Khởi tạo một đối tợng menuitemobject (ta sẽ nói đến lớp menuitemobject sau) và gán các thuộc tính của đối tợng đó tuỳ theo dòng menu phân tích đợc.
3 Thêm đối tợng vào danh sách on AddStringtoList thelist,str, spriteNumber trimleft(str) set aSubjectname=trimleft(item 1 of str)