62
Nguyn Anh Tun – Tp huấn tin học năm 2016 [email protected] LỜI NÓI ĐẦU Việc xây dựng chương trình tập huấn tin học của Nhà trường do tác giả biên soạn hoàn toàn dựa trên kinh nghiệm và các hiểu biết chủ quan của cá nhân, nội dung chương trình bao gồm 3 phần lớn: Phần 1: Tổng quan về các phương pháp lập trình Phần 2: Giới thiệu phần mềm Adobe Director Phần 3: Ngôn ngữ lập trình lingo script trong Director Nội dung trong tâm của chương trình tập huấn tập trung chủ yếu vào phần 3 dựa trên giáo trình điện tử VTC Macromedia Director 2004 lingo (http://www.vtc.com/products/Macromedia-director-mx-2004-lingo-tutorials.htm) tác giả dịch biên soạn lại. Do thời gian biên soạn ngắn, nguồn tài liệu bằng tiếng việt không có và hiểu biết của tác giả còn hạn chế rất mong bạn đọc thông cảm. Nội dung phần 1 và 2 yêu cầu bạn đọc tìm hiểu thêm qua các nguồn tài liệu khác nhất là trên youtube Đây là tài liệu dịch theo quan điểm cá nhân (có thể có nhiều nội dung chưa thật chuẩn xác) yêu cầu bạn đọc không phát tán trên mạng và copy cho người khác khi chưa được sự đồng ý của tác giả. Trong quá trình biên soạn tác giả nhận được sự động viên rất nhiều của Ban Giám Hiệu Nhà trường, Ban khoa học công nghệ, tác giả bày tỏ sự cảm ơn sâu sắc đến Ban Giám Hiệu và các đồng chí trong ban khoa học công nghệ của Nhà trường. Rất mong sự đóng góp ý kiến của bạn đọc. Tác giả

Macromedia director lingo

Embed Size (px)

Citation preview

Page 1: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

LỜI NÓI ĐẦU

Việc xây dựng chương trình tập huấn tin học của Nhà trường do tác giả biên soạn

hoàn toàn dựa trên kinh nghiệm và các hiểu biết chủ quan của cá nhân, nội dung chương

trình bao gồm 3 phần lớn:

Phần 1: Tổng quan về các phương pháp lập trình

Phần 2: Giới thiệu phần mềm Adobe Director

Phần 3: Ngôn ngữ lập trình lingo script trong Director

Nội dung trong tâm của chương trình tập huấn tập trung chủ yếu vào phần 3 dựa

trên giáo trình điện tử VTC Macromedia Director 2004 lingo

(http://www.vtc.com/products/Macromedia-director-mx-2004-lingo-tutorials.htm) tác

giả dịch biên soạn lại. Do thời gian biên soạn ngắn, nguồn tài liệu bằng tiếng việt không

có và hiểu biết của tác giả còn hạn chế rất mong bạn đọc thông cảm.

Nội dung phần 1 và 2 yêu cầu bạn đọc tìm hiểu thêm qua các nguồn tài liệu khác

nhất là trên youtube

Đây là tài liệu dịch theo quan điểm cá nhân (có thể có nhiều nội dung chưa thật

chuẩn xác) yêu cầu bạn đọc không phát tán trên mạng và copy cho người khác khi chưa

được sự đồng ý của tác giả.

Trong quá trình biên soạn tác giả nhận được sự động viên rất nhiều của Ban Giám

Hiệu Nhà trường, Ban khoa học công nghệ, tác giả bày tỏ sự cảm ơn sâu sắc đến Ban

Giám Hiệu và các đồng chí trong ban khoa học công nghệ của Nhà trường.

Rất mong sự đóng góp ý kiến của bạn đọc.

Tác giả

Page 2: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

BÀI 1: TỔNG QUAN VỀ CÁC PHƯƠNG PHÁP LẬP TRÌNH

VÀ PHẦN MỀM ADOBE DIRECTOR

1. Các phương pháp lập trình truyền thống

a) Lập trình tuyến tính

Toàn bộ chương trình chỉ là một đơn thể duy nhất, các lệnh được thực hiện

tuần tự theo thứ tự xuất hiện trong chương trình. Trong ngôn ngữ C, lập trình theo

kiểu tuyến tính sẽ chỉ có một hàm main.

Ví dụ : viết ct nhập họ tên sv, đlt, đth và tính đtb của sv.

#include <stdio.h>

void main()

{

char hoten[30];

float dlt,dth,dtb;

printf("Nhap ho ten:"); gets(hoten);

printf("Nhap dlt:"); scanf("%f",&dlt);

printf("Nhap dth:"); scanf("%f",&dth);

dtb=(dlt+dth)/2;

printf("\nHo ten: %s",hoten);

printf("\nDlt:%.2f",dlt);

printf("\nDth:%.2f",dth);

printf("\nDtb:%.2f",dtb);

}

* Nhận xét:

- Ưu điểm: đơn giản

Page 3: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

- Khuyết điểm: khó sửa lỗi, khó mở rộng

b) Lập trình hướng thủ tục

Là lập trình dựa vào các thủ tục (hàm). Mỗi hàm sẽ thực hiện một chức năng

của chương trình. Khi chương trình thực thi thì hàm main sẽ được thực hiện đầu

tiên, hàm main sẽ gọi các hàm khác khi cần và các hàm khác có thể gọi lẫn nhau.

Ví dụ:

int x; //x la du lieu co the truy xuat boi bat cu ham nao

void A()

{

B();

}

void B()

{

}

void main()

{

A();

}

Ví dụ : viết lại ct tính đtb bằng cách tách ct thành 3 hàm: hàm nhập, hàm tính dtb,

hàm xuất.

#include <stdio.h>

void nhap(char* hoten, float* dlt, float* dth)

Page 4: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

{

printf("Nhap ho ten:"); gets(hoten);

printf("Nhap dlt:"); scanf("%f",dlt);

printf("Nhap dth:"); scanf("%f",dth);

}

float tinhdtb(float dlt, float dth)

{

return (dlt+dth)/2;

}

void xuat(char* hoten, float dlt, float dth, float dtb)

{

printf("\nHo ten: %s",hoten);

printf("\nDlt:%.2f",dlt);

printf("\nDth:%.2f",dth);

printf("\nDtb:%.2f",dtb);

}

void main()

{

char hoten[30]; float dlt, dth, dtb;

nhap(hoten,&dlt,&dth);

dtb=tinhdtb(dlt,dth);

xuat(hoten,dlt,dth,dtb);

}

Page 5: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

* Nhận xét:

- Ưu điểm: dễ sửa lỗi, dễ mở rộng, phù hợp khi viết chương trình nhỏ

- Khuyết điểm: vì dữ liệu và hàm tách biệt nên có các khuyết điểm sau:

+ Khó bảo vệ dữ liệu và hàm để không bị truy xuất bởi các hàm không mong

đợi, khi sửa đổi dữ liệu các hàm truy xuất phải thay đổi theo (do không có tính

đóng gói).

+ Khó sử dụng lại các hàm đã viết sẵn (do không có tính thừa kế)

+ Không phù hợp với suy nghĩ của con người (do không có tính trừu tượng)

Để khắc phục các khuyết điểm của lập trình tuyến tính cũng như lập trình hướng

thủ tục, người ta đưa ra một phương pháp lập trình mới là lập trình hướng đối

tượng.

2. Lập trình hướng đối tượng (Object Oriented Programming)

Là lập trình dựa vào các đối tượng (object), đối tượng được tạo ra từ lớp, lớp gồm

có dữ liệu và phương thức (hàm) xử lý dữ liệu của lớp.

Ví dụ: viết lại ct tính đtb bằng cách thiết kế lớp sinh viên có các thuộc tính là

hoten, dlt, dth và các phương thức là nhập, tính dtb, xuất.

#include <iostream.h>

class sinhvien

{

private:

Object A

DATAS

METHOD

S

Object B

DATAS

METHOD

S

MÔ HÌNH CỦA LTHĐT

Page 6: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

char hoten[30]; float dlt,dth; //cac thuoc tinh

public:

void nhap() //phuong thuc nhap

{

cout<<"Nhap ho ten:"; cin.getline(hoten,30);

cout<<"Nhap dlt:"; cin>>dlt;

cout<<"Nhap dth:"; cin>>dth;

}

float tinhdtb()

{

return (dlt+dth)/2;

}

void xuat(float dtb)

{

cout<<endl<<"Ho ten: "<<hoten;

cout<<endl<<"Dlt: "<<dlt;

cout<<endl<<"Dth: "<<dth;

cout<<endl<<"Dtb: "<<dtb;

}

};

void main()

{

Page 7: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

sinhvien sv;

sv.nhap();

float dtb=sv.tinhdtb();

sv.xuat(dtb);

}

* Nhận xét: LTHĐT có 4 đặc tính sau:

- Tính trừu tượng (Abstraction): đối tượng trong LTHĐT là sự trừu tượng của

các đối tượng trong tự nhiên. Tính trừu tượng giúp việc lập trình trở nên tự

nhiên hơn, gần với suy nghĩ của con người hơn.

- Tính đóng gói (Encapsulation): Việc tổ chức dữ liệu và hàm trong một lớp

gọi là tính đóng gói, tính đóng gói cho phép che dấu dữ liệu và phương thức

trong lớp, bảo vệ dữ liệu không bị truy xuất bởi những hàm không hợp lệ.

- Tính thừa kế (Inheritance): Sử dụng lớp có trước (lớp cha) để xây dựng lớp

mới (lớp con) gọI là tính thừa kế. Lớp con được thừa hưởng những thuộc tính,

phương thức của lớp cha và có thể có thêm những thuộc tính, phương thức

riêng. Tính thừa kế giúp chương trình dễ mở rộng.

- Tính đa hình (Polymorphism): Một phương thức có thể thực hiện theo nhiều

cách khác nhau trên các lớp khác nhau gọi là tính đa hình. Tính đa hình giúp

cho việc viết chương trình trở nên đơn giản hơn.

Ngoài ra, khi LTHĐT không còn phải tìm cách chia chương trình thành các

hàm mà chỉ cần xem xét chương trình cần sử dụng những đối tượng nào, mỗi đối

tượng cần có những thuộc tính (dữ liệu, biến) và phương thức (hàm, thủ tục) nào,

từ đó xây dựng các lớp tương ứng.

Ví dụ:

Viết chương trình quản lý sinh viên gồm có các chức năng sau: quản lý hồ

sơ sinh viên, quản lý lớp mà sinh viên đang học.

Phân tích: Cần hai đối tượng sau

- Đối tượng sinh viên:

Thuộc tính: mã sv, họ tên sv, năm sinh, mã lớp mà sv đang học

Phương thức: Nhập sv, tìm sv, xem, xoá, sửa sv, xem ds sv

- Đối tượng lớp:

Page 8: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

Thuộc tính: mã lớp, tên lớp, gvcn, sỉ số, …

Phương thức: Tạo lớp mới, xem thông tin về lớp, xem ds lop

3. Phần mềm adobe director

Macromedia Director là gì?

Macromedia director là một phần mềm dùng trong multimedia của hang

macromedia, nó là một trong những công cụ rất mạnh và phù hợp cho việc thiết

kế các sản phẩm bài giảng điện tử dạng multimedia(sản phẩm này dùng ngôn ngữ

lingo để viết, đây la ngôn ngữ kịch bản khá dễ viết vì có nối viết gần gũi với C).

Director luôn được biết đến như là một ứng dụng multimedia tương tác.

Phiên bản Macromedia Director thậm chí còn đưa mọi thứ tiến xa hơn nữa nhờ

việc đưa vào các khả năng 3D mà các nhà thiết kế Shockwave và những người

làm multimedia chuyên nghiệp hằng mong ước. Việc kết hợp khả năng 3D với sự

hỗ trợ Flash, máy chủ Multiuser, Network Lingo tinh tế, Imaging Lingo, khả năng

điều khiển, kiểm soát video và âm thanh hàng đầu đã làm cho Director mạnh hơn

bao giờ hết.

- Các kỹ thuật tiên tiến trong Macromedia Director MX:

+ Kỹ thuật Lingo phức tạp, bao gồm cả lập trình OOP, Imaging Lingo và Network

Lingo.

+ Tính năng 3D mới của Director và 3D Lingo

+ Máy chủ Multiuser

+ Tích hợp âm thanh và video

+ Xtras

Director là chuẩn trong thực tế dùng để tạo trò chơi, CD-ROM tương tác,

trình diễn dùng audio/video... Các tập tin Shockwave có thể được tạo lập bằng

Page 9: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

Director 5.0. Đầu tiên phim phải được tạo trong phần mềm này và ghi theo dạng

thức của Director.

Do các tập tin như vậy được thiết kế đặc biệt cho Internet, điều quan trọng

là kích cỡ của chúng phải nhỏ. Bước tiếp theo là dùng Afterburner Xtra, một tiện

ích add-on, để nén phim Shockwave và đổi sang dạng .DCR. Tập tin kết quả có

thể được nhúng vào trang Web qua thẻ (với Navigator) hoặc (với IE). Cả 2 thẻ

này được sử dụng để đảm bảo cho phim Shockwave xem được trong cả hai trình

duyệt. Cần thay đổi đôi chút trên server, có thể phải yêu cầu ISP (nhà cung cấp

dịch vụ Internet) cấu hình server sao cho nó có thể nhận biết được các tập tin

Shockwave.

Tuy nhiên, trước khi người dùng có thể thưởng thức được phim Shockwave

tạo bởi Director, họ cần phải tải xuống Shockwave for Director, phần mềm bổ

sung (plug-in) dành cho Navigator hoặc điều khiển ActiveX cho Internet

Explorer.

Phiên bản 6.0 của Director có khả năng tạo trực tiếp các tập tin Shockwave,

phát triển Shocked CD (kết hợp nội dung kiểu CD và kiểu Internet), và hỗ trợ

JavaScript hoặc đặc ngữ khác thân thiện browser. Phim Director cũng có thể ghi

trực tiếp dưới dạng Shockwave.

Phiên bản hiện tại chúng ta đang sử dụng phổ biến là Macromedia Director

MX của hãng Macromedia sản xuất. Ngoài Macromedia thì Adobe cũng đã phát

triển sản phẩm Director cho riêng mình, nó có tên là Director 11, các tính năng

giống với của hãng Macromedia. Hiện nay, Adobe đã mua lại Director của

Macromedia nhằm thâu tóm thị trường đa phương tiện, phiên bản mới nhất của

Adobe là Director 12

Cần dùng macromedia director trong việc xây dựng bài giảng điện tử như

thế nào?

Nhắc tới các sản phẩm multimedia là phải nhắc tới director, các sản phẩm

trên thị trương về multimedia hiện nay phần lớn là dùng director để phát triển,

Page 10: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

Ngoài ra do các tính năng trên của Director rất phù hợp với yêu cầu tạo các bài

giảng điện tử hoặc xây dựng các thí nghiệm ảo nên người ta đã dùng rất nhiều nó

cho việc phát triển các bài giảng điện tử hoặc phát triển các thí nghiệm ảo (Ta có

thể sử dùng macromedia director để lập trình điều khiển đối tượng tạo ra các tương

tác trong phần mềm. Nó sẽ gọi và điều khiển các movie, âm thanh, hình ảnh trong

việc xây dựng bài giảng điện tử của chúng ta.)

Page 11: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

BÀI 2: GIỚI THIỆU SỬ DỤNG PHẦN MỀM ADOBE DIRECTOR

- Trong nội dung của chương trình tập huấn tác giả không thể giới thiệu chi tiết

về việc sử dụng phàn mềm adobe director, bài 2 chỉ giới thiệu các khái niệm cơ bản nhất

và việc sử dụng các tính năng chung của phần mềm. Yêu cầu người học tìm hiểu cách

sử dụng phần mềm qua các tái liệu khác

I. CÁC KHÁI NIỆM CƠ BẢN

1. Director Movie

Mọi thứ bạn tạo ra với adobe director là một bộ phim (một bộ phim ngắn). Một

bộ phim có bắt đầu, có diễn biến và có kết thúc. Bạn có thể tương tác với bộ phim chẳng

hạn như dừng bộ phim, chạy lại bộ phim, hoặc chạy các bộ phim cùng nhau, hoặc trình

diễn bộ phim này trong bộ phim khác…

2. The cast

Mọi thứ được trình diễn trên phim của bạn đều được lấy từ cast. Cast chứa tất cả

mọi thứ. Director cung cấp hai loại cast là cast bên trong (internal cast) và cast bên ngoài

(external cast) và chúng phân thành cast âm thanh, cast hình ảnh và cast video…

Hình 1. Cửa sổ cast

Cửa sổ cast hiện thị 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 thuộc tính cho cast, viết 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 trong

stage…

Page 12: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

Để hiển thị các dữ liệu trên màn hình, Director phải truy cập đến 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ư đồ họa, âm thanh, văn bản, các file 3D…

3. The 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 diễn ra ở stage:

Hình 2. Cửa sổ 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 bất lợi. Để thay đổi kích thước 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à 640x840. Trong Director cũng có một thuộc tính dùng để hiển thị toàn bộ màn

hình (stage sẽ chiếm toàn bộ màn hình) đó là full screen.

Ta có thể sử dụng hộp thoại movie properties để thay đổi màu của stage. Hoặc

thay đổi mầu của stage trong hộp thoại properties inspector

Page 13: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

4. The Score

Score là trung tâm điều khiển của Diretor, 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.

Hình 3. Cửa sổ Score

5. The Sprite

Là hiện diện của một cast thành phần trong stage. Mỗi ô (cell) của score chứa

thông tin về cast thành phần tại một thời điểm và được gọi là sprite. Tại mỗi thời điểm

Director cung cấp 1000 kênh sprite và nó cho phép tắt các kênh không cần thiết để tối

ưu hóa quá trình thực hiện. Vị trí của sprite được xác định dựa vào gốc tọa độ (góc trái

trên cùng của spirte).

Hình 4. Cửa sổ chứa Sprite

Page 14: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

Sprite không phải cast thành phần mà chỉ chứa thông tin 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 chữ

nhật trên stage. Mỗi khi ta đặt một cast thành phần vào trong stage, một sprite sẽ xuất

hiện trong cửa sổ 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 tạo đ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 sprite và phát hiện ra các sprite có thay đổi. Khi đó,

Director chỉ cần đọc dữ liệu từ 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 có thể hiện thị 1000

sprite trên stage.

Mỗi có thể có nhiều kích thước thể hiên khác nhau trong stage, các thuộc tính

này thay đổi được mặc dù phim vẫn truy cập đến cùng một cast thành phần 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

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 thuộc tính của sprite khi người dùng

muốn tương tác với phim. Thông thường truy cập sprite bằng số hiệu của nó.

Hai thuộc tính của sprite là:

a) Sprite span

Director xem các sprite như các đối tượng trong khoảng thời gian xác định. Khi ta

kéo một cast thành phần vào trong stage, sprite đã được tạo ra sẽ chiếm 30 khung, mỗi

khung chứa một thể hiện xác định của sprite. Giá trị này có thể thay đổi trong một hộp

thoại sprite preferences.

Khi ta dịch chuyển một sprite trong stage, mọi thể hiện của sprite trong đó sprite

span cũng dịch chuyển theo. Nếu ta kích hoạt vào một ô trên score, không phải chỉ một

ô mà toàn bộ sprite vừa chọn sẽ sáng lên. Tương tự nếu ta dịch chuyển sprite này trong

score toàn bộ sprite sẽ dịch chuyển theo. 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 menu 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. Để

Page 15: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

đưa chúng trở lại thành sprite span hoàn chỉnh, việc soạn thảo sẽ làm thay đổi toàn bộ

sprite span. Ta có thể thay đổi số khung mà sprite span từ 28 đến một giá trị tùy ý 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.

b) 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 khung 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 về sprite.

Hình 5. Sprite Overlay

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 thảo trực tiếp

các sprite trên stage. Nếu cần mở hộp thoại sprite properties cho các ứng dụng khác, ta

có thể 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 setting từ menu view,

sprite overlay, settings.

3. Khung hình

Khung hình được hiển thị trong stage dưới dạng 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 số hiệu khung hình hiện thời đang đượ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 tất cả các khung hình cho đến hết

phim, đây chính là nguyên tắc của phim tuyến tính. Ta có thể tạo một phim director chỉ

Page 16: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

có một khung hình nhưng trong trường hợp đó ta phải dùng lệnh lingo để tạo các thay

đổi cần thiết.

4. Kênh

Mỗi kênh là một hàng của 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.

Hình 6. Các kênh trong score

a) Kênh tempo

Được dùng để đặt thuộc tính thời gian đợi cho phim. Với kênh tempo có thể đặt tốc

độ cho phim, khoảng thời gian đợi cho khùng hình đó tính theo số giây, đợi cho một sự

kiện phím bấm hoặc nhấp chuột, đợi kênh âm thanh một hoặc kênh âm thanh 2 kết thúc,

đợi một kênh video kết thúc. Dùng kênh tempo rất đơn giản và nhanh gon, tuy nhiên chỉ

cho phép tạo dưới dạng trình diễn hay còn gọi là phim tuyến tính, các thuộc tính của

tempo có thể được thay đổi bằng các lệnh lingo.

Hình 7. Điều khiển tempo

Page 17: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

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

trong phim. Nháy đúp vào kênh palette của một khung hình, ta xem được bảng màu

hiện thời của khung hình đó.

Hình 8. Điều khiển palette

c) Kênh Transition

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 vào kênh

transition ứng với khung hình đó. Ta có thể đặt hiệu ứng cho kênh này cho toàn bộ stage

hay chỉ cho những phần thay đổi của stage mà thôi. Sau khi đặt hiệu ứng cho một khung

hình, director tự động lưu trữ nó trong cast tương ứng với cast thành phần. do đó nếu ta

không muốn sử dụng hiệu ứng chuyển đổi đó nữa ta cần xóa cast thành phần của hiệu

ứng đó.

Các hiệu ứng Transition chiếm dụng rất nhiều bộ nhớ cũng như khả năng tính toán

của CPU, do vây phải cân nhắc khi sử dụng.

Hình 9. Điều khiển Transition

Page 18: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

d) Hai kênh âm thanh

Trong score kích đúp vào vào kênh âm thanh ứng với khung hình ta muốn bắt đầu đoạn

âm thanh sau đó 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.

e) Kênh script

Kênh dùng để chứa các lệnh viết bằng lingo, các lệnh chỉ có tác dụng trong frame tương

ứng mà ta đặt lệnh, các lệnh này được gọi là script hay các frame script. Để đưa lệnh

vào kênh script ta nháy đúp chuột vào frame tương ứng ta sẽ nhận được một thủ tục có

tên là exitFrame tương ứng với sự kiện kết thúc khung hình này chuyển sang khung hình

tiếp theo.

4. Control Panel

Bảng điều khiển là một cửa sổ 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 trong bảng điều khiển này giống như nút điều khiển

trong đầu video.

Bảng điều khiển rất có ích trong các phim tuyến tính, đặt biệt là khi chạy thử nghiệm

và xem khả năng của chương trình.

Để mở control panel vào menu window chon control panel

Hình 10. Control Panel

II. CÁC KỸ THUẬT TẠO HOẠT HÌNH TRONG DIRECTOR

Hoạt hình là sự thay đổi ảnh liên tiếp theo thời gian. Trong director có hai kỹ

thuật tạo hoạt hình chính là Tweening và frame by frame.

1. Tweening

Là một thuật ngữ trong kỹ thuật hoạt hình, nó mô tả quá trình trong đó người sử

dụng vẽ các khung hình chính (keyFrame) còn phần mềm vẽ các hình thay đổi giữa các

khung hình đó.

Page 19: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

2. Frame by Frame

Là kỹ thuật hoạt hình cổ điển tương tự như ta vẽ một hình chuyển động ta phải

tự vẽ tất cả các khung hình liên tiếp sau đó ghép các khung hình và đặt thời gian chạy

cho bộ phim để đươc hình chuyển động.

Các kỹ thuật khác bao gồm thay đổi kích thước, quay, thay đổi màu, hay thay đổi độ

sáng của sprite.

Tìm hiểu thêm theo địa chỉ sau:

https://www.youtube.com/watch?v=B7VkwJreeCo&list=PLBjHHXY3S7GwO__-ZgyIlL8r7lnvKRIrD

Page 20: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

BÀI 3: TỔNG QUAN VỀ LINGO

1. Giới thiệu về khóa lập trình

Director là phần mềm hàng đầu trên thế giới để tạo ra các sản phẩm multimedia

cho CD, DVD, internet web, bài giảng điện tử…

Ngôn ngữ lập trình trong Director là ngôn ngữ lingo, một dạng ngôn ngữ script

(ngôn ngữ kịch bản), sử dụng lingo cho phép người dùng tương tác với video, sound,

image…

Lingo là ngôn ngữ lập trình hướng đối tượng nhưng cung cấp khả năng lập trình

verbose syntax và dot syntax.

- Ví dụ lập trình trong lingo bằng viết theo verbose syntax

If sprite 5 is visible then go to the frame

(cách lập trình ngày rất gần với ngôn ngữ tự nhiên - english)

- Ví dụ lập trình trong lingo bằng viết theo dot syntax

If sprite(5).visibe then movie.go (movie frame)

(cách viết của lập trình hướng đối tượng)

2. Giới thiệu về lingo

- Trong lingo cung cấp hàng trăm keyword giúp người sử dụng lingo dễ dàng,

để sử dụng được các keyword này vào menu window/properties inspector hoặc vào

trong memu window/script

- Câu lệnh trong lingo có kết cấu như sau:

On và end là hai thành phần bắt buộc phải có trong câu lệnh báo hiệu việc bắt

đầu và kết thúc của câu lệnh trong lingo

Event là sự kiện xảy ra

Page 21: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

Action là hành động khi sự kiện xảy ra

Object là đối tượng bị tác động

- Một số ví dụ

on startMovie set the text of member "namefield" to "James" member("nameField").text = "James" end on exitFrame me go to the frame

end

3. Các loại script trong director

Căn cứ vào object người ta người ta chia làm 4 loại script sau :

- Loại 1 : Sprite (Script viết cho sprite) viết ngay trên sprite chanel

- Loại 2: Cast member (script viết cho cast member) viết ngay trong cửa sổ cast

- Loại 3: Frame script (script viết cho frame) script viết ngay cho frame

- Loại 4: Movie (script viết cho movie)

Bốn loại script này cũng như thời điểm hay vị trí mà script tác động đến tùy thuộc vào

loại object mà chúng tác động tới.

Ta có thể hiểu các loại script như sau:

- Script tác động đến sprite ta có sprite object hay behavior

- Script tác động đến Frame object ta có frame script

- Script tác động đến cast member ta có cast member script

- Script tác động đến movie ta có movie script

Cách tạo ra các loại script:

Cách tạo ra script sẽ quyết định script thuộc loại nào:

- Sprite script hay còn gọi là behavior script được tạo ra khi chọn sprite này và vào

trong menu window/script.

- Cast member script được mở trong cửa sổ cast (chọn đối tượng trong cửa sổ cast

sau đó click vào nút cast member script

Page 22: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

- Frame script được tạo ra trong cửa sổ score (chọn vào frame muốn viết script sau

đó viết lệnh)

- Movie script được mở trong window/script

4. Viết một chương trình đơn giản trong director

Đề bài: tạo nút ấn trên màm hình, khi ấn vào nút ấn đó máy tính phát ra biết bíp.

Bước 1: tạo nút trên màn stage

Bước 2: tạo behavior script như sau:

on mouseUp beep end

Page 23: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

BÀI 4: SCRIPT CỦA LINGO

1. Sprite behavior (Sprite script)

Các cách thức tạo ra sprite script hay sprite behavior

Cách 1: Vào menu window/behavior inspector

- Chọn dấu “+” đặt tên cho behavior

- Chọn event

- Chọn action

Cách 2: Chọn trong script windows

Vào menu window/script sau đó gõ lệnh

Ví dụ:

on mouseUp beep end

Cách 3: Tạo behavior trong score

- Chọn sprite muốn tạo behavior (lưu ý trong menu view/sprite tool bar đã được

kích hoạt)

- Trong menu drop down chọn newbehavior

2. Frame behavior (frame script)

Cách 1: Để tạo Frame behavior double click vào frame trong cửa sổ score màn hình

soạn thảo code hiện ra

Ví dụ ta gõ

on exitFrame me go to the frame 20 end

Cách 2: - Mở cửa sổ score

- Mở cửa sổ window/script

- Sử dụng nút “” attact to kéo vào frame muốn có lingo

3. Cast member script

Page 24: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

Cast member script chỉ tác động đến cast member không giống như sprite script

Để tạo cast member script mở cửa sổ cast chọn chọn cast script icon

4. Movie script

Là một script đặc biệt chứa các handle (xử lý) có thể tác động đến mọi đối tượng

có trong movie. Movie script rất hữu hiệu cho việc đặt các xử lý kéo dài từ đầu đến cuối

chương trình

5. Event và event handler

Có khoảng 40 event (sự kiện) trong director ví dụ event typing, click chuột, exit

frame …dựa vào đặc tính của event chia làm 4 loại sau:

1. Feedback event – đây là event phổ biến nhất là loại sự kiện có phản hồi.

Ví dụ: on mouseDown me

beep end

2. Playback event

Ví dụ: on startMovie

global gScore gScore = "3" set the soundLevel = 4 set the timeoutLength = 6 * 60 end

3. Time event

Ví dụ: on idle

global gScore

set the text of member("display") = gScore end

4. Windows event

Ví dụ: on resizeWindow

alert "Please do not change the size of the window!" end

event Hander là các lệnh xử lý giữa hai từ khóa on và end xác định các công việc cần

phải thực hiên khi event xảy ra.

6. Event handler chính (primary event hander)

Page 25: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

Làm các hàm xử lý sự kiện chính, các event đặc biệt trong director. Event không

bắt đầu bằng on và kết thúc bằng end như các hàm xử lý thông thường. Lingo được thiết

lập để các primary event hander luôn được thực thi bất cứ khi nào các sự kiện xảy ra.

Các primary event hander loại này chẳng hạn như:

KeyDownScript

KeyUpScript

TimeOutScript

MouseUpScript

MouseDownScript

Nếu người dùng click chuột vào đối tượng trên màn hình, Director ngay lập tức

tìm kiếm primary event hander liên quan đến sự kiện click chuột này. Nếu primary

event hander được thiết lập, nó sẽ được thực thi đầu tiên sau đó mới đến các xử lý cho

sprite behavior cho đối tượng này.

Ví dụ:

on startMovie

global gScore

gScore = "3"

set the soundLevel = 4

set the timeoutLength = 6 * 60 set the timeoutScript to "go to frame 100" end

7. Xử lý người dùng (custom handler)

Là các xử lý do người dùng tự đặt tên ví dụ:

on beepMessage

beep

end

Ở đây beepMessage là xử lý do người lập trình tự đặt tên, và xác lập các xử lý

bên trong tương ứng khi xử lý này được gọi như sau:

on mouseUp me

Page 26: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

beepMessage

end

Xử lý người dùng thường được viết trong Movie scripts. Movie scripts khác với

các behaviors khác bởi vì chúng nằm dưới (background) của phần mềm chỉ kích hoạt

khi được gọi đến. Các xử lý người dùng thường được kích thoạt thông qua các behavior.

8. Hệ thống phân cấp sự kiện (custom handler)

Trong director có 4 loại script là:

1. Behavior hay sprite script (script viết cho sprite)

2. Cast script (script viết cho cast)

3. Frame script (script viết cho frame)

4. Movie script (script viết cho Movie)

Theo đối tượng tác động chúng có thể được chia làm hai loại:

Script dựa vào không gian chiếm giữ (space based scripts) ta có

Sprite script và cast script

Script dựa vào thời gian (Time based scripts) ta có

Frame script và Movie script

Thứ tự phân cấp xử lý sự kiện như sau

Khi có một sự kiện xảy và có rất nhiều xử lý tương ứng với sự kiện này thứ tự xử

lý các sự kiện được phân cấp theo thứ tự như sau:

Đầu tiên là Primary event handler -> Sprite behavior -> Cast member script

-> Frame script - > Movie script

Page 27: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

BÀI 5: ĐIỀU HƯỚNG TRONG LINGO

1. Điều khiển frame

Tạm dừng một phim

Có hai cánh thông dụng để dừng một phim:

Cách 1: gõ lệnh trên score

Bước 1: Mở cửa sổ score.

Bước 2: Chon frame muốn dừng phim tại đó

Bước 3: gõ lệnh như sau:

on exitFrame me go to the frame end

Hoặc

on exitFrame me _movie.go(_movie.Frame) end

Câu lệnh go to the frame và movie.go(movie.frame) có nghĩa là director chạy đi chạy

lại frame hiện hành, đồng nghĩa với việc tạm dừng chương trình và đợi lệnh kế tiếp.

Cách 2: sử dụng behavior inspector

Chọn new behavior/chọn mục action/trong navigation/ chọn các hành động tương ứng.

Chạy liên tục

Tương tự như Tạm dừng một phim trong cửa sổ gõ lệnh ta gõ như sau:

Bước 3: gõ lệnh như sau:

on exitFrame me go loop end

2. Chuyển tới frame mới

Để phim chuyển tới một frame xác định ta thường sử dụng lệnh như sau:

on exitFrame me go to the 10 end

Khi gặp lệnh này director sẽ điều khiển chương trình chuyển đến frame 10 trong

cửa số score.

Page 28: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

Trong lingo hay sử dụng kỹ thuật marker. Trước khi sử dụng lệnh nhảy đến

marker ta phải đánh dấu marker trong cửa sổ score.

Hình 1. Đánh dấu marker

Trong cửa sổ lệnh để chuyển đến marker kế tiếp ta sử dụng lệnh sau:

on exitFrame me go next end

Để chuyển đến marker trước đó sử dụng lệnh

on exitFrame me go previous end

hoặc chuyển đến marker xác định chẳng hạn như new marker trong hình 1 ta gõ lệnh

như sau:

on exitFrame me go to ‘‘new marker’’ end

3. Tạo nhanh script điều hướng (creat smart naviagtion script)

Khi lập trình để nhảy đến một frame khác hoặc một bộ phim riêng biệt và sau

đó quay trở lại khung ban đầu. Ví dụ, tại một trang web mô tả thời tiết, bạn có thể

nhảy đến một đoạn phim mà giải thích cụm từ thời tiết và sau đó trở lại vị trí ban đầu.

Để làm được điều đó ta sử dụng lệnh play done

Play done nhớ khung ban đầu và trả play head trả về vị trí đó khi hàm được gọi

mà nó không yêu cầu bạn xác định nơi để trở về.

Thường sử dụng play done cho các trường hợp sau đây:

Khi các bộ phim mà bạn muốn chơi không có hướng dẫn về nơi để trở về.

Khi bạn muốn chơi một số phim tuần tự từ một kịch bản duy nhất. Khi một bộ

phim kết thúc, bộ phim trở về kịch bản ban đầu.

Page 29: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

Khi bạn muốn đặt một trình tự trong một chuỗi và dễ dàng quay trở lại nơi bạn

đang ở bên ngoài chuỗi.

Khi bạn muốn nhảy vào một vòng lặp từ nhiều địa điểm khác nhau.

Ví dụ:

on mouseUp me play done end

4. Tạo menu điều khiển

Tạo menu vào trong menu window chọn lệnh Field gõ lệnh như sau:

Sau đó vào trong script gõ lệnh như sau:

on startMovie installMenu member "myMenu"

on goPage1 go to "Page 1" end on goPage2 go to "Page 2" end

on goPage3 go to "Page 3" end on goPage3 go to "Page 3" end

end

Kết quả ta được menu như sau:

Page 30: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

Page 31: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

BÀI 6: ĐIỀU KHIỂN SCORE

1. Tạo chuyển cảnh

Hiệu ứng chuyển cảnh là hiệu ứng chuyển từ frame hiện tại tới frame kế tiếp

(giống như chuyển cảnh trong Powerpoint)

Cú pháp: _movie.puppetTransition(int, time, size, area)

Trong đó:

- int là biến id xác định loại chuyển cảnh

- time là thời gian chuyển cảnh

- size kích thước chuyển cảnh hay tốc độ chuyển cảnh

- area nhận giá trị logic là true hay false là mầu của nền stage

ví dụ:

on exitFrame me _movie.puppetTransition(1,3,16, FALSE) End

Danh dách các hiệu ứng chuyển cảnh như sau:

Bảng 1. Xác định biến id loại chuyển cảnh

01 Wipe right 02 Wipe left 03 Wipe down 04 Wipe up

05 Center out,

horizontal

06 Edges in,

horizontal

07 Center out,

vertical 08 Edges in, vertical

09 Center out, square 10 Edges in, square 11 Push left 12 Push right

13 Push down 14 Push up 15 Reveal up 16 Reveal up, right

17 Reveal right 18 Reveal down, right 19 Reveal down 20 Reveal down, left

21 Reveal left 22 Reveal up, left 23 Dissolve, pixels

fast

24 Dissolve, boxy

rectangles

25 Dissolve, boxy

squares 26 Dissolve, patterns 27 Random rows 28 Random columns

29 Cover down 30 Cover down, left 31 Cover down, right 32 Cover left

33 Cover right 34 Cover up 35 Cover up, left 36 Cover up, right

37 Venetian blinds 38 Checkerboard 39 Strips on bottom,

build left

40 Strips on bottom,

build right

Page 32: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

41 Strips on left,

build down

42 Strips on left, build

up

43 Strips on right,

build down

44 Strips on right,

build up

45 Strips on top,

build left

46 Strips on top, build

right 47 Zoom open 48 Zoom close

49 Vertical blinds 50 Dissolve, bits fast* 51 Dissolve, pixels* 52 Dissolve, bits*

2. Điều khiển temple

Để điều khiển bộ phim chạy nhanh hay chậm ta quan tâm đến temple, việc cài

đặt temple giúp thay đổi tốc độ bộ phim (tua nhanh hay chậm bộ phim). Cách cài đặt

temple như sau:

Cách 1: Trên kênh temple nháy đúp chuột vào ô muốn cài đặt temple. Hộp thoại temple

xuất hiện, tiến hành cài đặt temple.

Cách 2: sử dụng lệnh trên kênh script chanel

puppetTempo 20 20 là số frame hiển thị trên một giây

3. Thay đổi Sprite

Là kỹ thuật thay đổi sprite trên màn hình bằng một sprite khác. Cú pháp như sau:

on mouseDown sprite(1).memberNum = 5 end

Đoạn code trên đã thay đổi sprite 1 thành sprite 5 trên màn hình

Thay đổi sprite kết hợp chuột

On mouseDown CurrentSprite = the clickOn UpButton = sprite(currentSprite).memberNum Sprite(currentsprite).memberNum = upButton + 1 UpdateStage end

4. Rollover

Là kỹ thuật người lập trình muốn một hành động xảy ra khi người dùng cuộn con

trỏ chuột qua một nhân vật hay một địa điểm cụ thể trên sân khấu.

Page 33: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

Director cung cấp một số xử lý sự kiện khi con trỏ chuột cuộn qua một nhân vật.

Một Message (tin nhắn) trong mỗi sự kiện này sẽ được gửi đến sprite script, cast member

script, frame script và movie script.

Để xác định con trỏ chuột qua môt nhân vật cụ thể ta sử dụng hàm rollover ().

Rollover có hai loại là:

The rollover

Rollover (x)

x ở đây có thể là 1, 2, 3, 4… là số của sprite trên sân khấu.

ví dụ sử dụng rollover

on exitFrame me go to the frame if rollover(1) then sprite (1).membernum = 6

end if end

5. Thay đổi chuột

Trong phần mềm khi di chuyển chuột lên đối tượng, chuột thay đổi hình dạng,

việc thay đổi hình dạng này sẽ hướng dẫn người sử dụng các thao tác trên đối tượng.

Thay đổi chuột theo bộ mã của windows

Để thay đổi hình dạng chuột trên đối tượng ta căn cứ vào bộ mã và cú pháp dưới

đây:

Hình 1. Mã chuột

Cú pháp:

Page 34: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

Sprite(whichSprite).cursor = WhichCursor

Set the cursor of sprite whichSprite to WhichCursor

Ví dụ:

- Cách viết theo Dot syntax:

Sprite(20).cursor = 4

- Cách viết theo Verbose syntax:

Set the cursor of sprite 20 to 4

Ví dụ: viết lệnh trong director lingo

on exitFrame me go to the frame set the cursor of sprite 1 to 260

end

hoặc

on startMovie cursor 2

end Viết lệnh chuột cho sprite

on mouseEnter me

cursor 280 -- switch to finger cursor

end

on mouseLeave me

cursor -1 -- switch to normal arrow cursor

end

6. Thiết kế con trỏ chuột (Custom cursor)

Trong cách này ta phải tiến hành thiết kế hình dạng con chuột trước. Sau đó sử dụng

cú pháp dưới đây để thay đổi chuột theo ý người lập trình.

Cú pháp:

Sprite(whichSprite).cursor = [castNumber, maskCastNumber]

Set the cursor of sprite whichSprite to [castNumber, maskCastNumber]

Ví dụ:

Sprite(1).cursor = [2] hoặc Sprite(1).cursor = [2,3]

on exitFrame me

sprite(1).cursor = [2]

go to the frame

end

7. Hoạt cảnh chuột

Page 35: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

Ta vào trong menu Insert/Media element/cursor cửa sổ cursor như sau:

Hình 2. Cửa sổ cursor

Trong cửa sổ này chon các hình cho chuột sau sau đó chọn nút “add” để đưa chèn hình

cho chuột (lưu ý phải có tối thiểu hai hình khác nhau), kết thúc click ok. Thao tác này sẽ lưu

chuột ta vừa tạo ra vào trong cửa sổ cast.

Để sử dụng chuột này ta phải sử dụng lingo để gọi chuột.

on mouseEnter cursor (member "myCursor")

end

8. Vị trí chuột

Vị trí chuột là một phần rất quan trong khi lập trình lingo có hai hàm xác định vị

trí chuột là mouseH (vị trí chuột theo phương nằm ngang) và mouseV (vị trí chuột theo

phương thẳng đứng).

Để biết vị trí của chuột trên màn hình ta sử dụng lệnh như sau

Put the mouseH

Put the mouseV

Code lệnh sau đưa sprite 1 về vị trí click chuột theo phương thẳng đứng

on mouseUp

Sprite(1).locV = the mouseV

End

Hoặc thay đổi hình dạng chuột theo tọa độ

Page 36: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

On exitFrame

go to the frame if the mouseV > 100 then cursor 1 end if end

Page 37: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

BÀI 7: ĐIỀU KHIỂN AUDIO VÀ VIDEO

1. Âm thanh

Âm thanh như một yếu tố truyền thông thường bị bỏ qua, âm thanh có thể thêm

rất nhiều tác động vào một bài thuyết trình, cung cấp thông tin phản hồi hữu ích cho

giao diện người dùng. Âm thanh có khả năng để đặt người dùng vào môi trường bạn

đang trình bày, và điều này rất có thể nâng cao hiệu quả công việc của bạn. Director có

khả năng phát lại âm thanh tùy chọn cho các ứng dụng đa phương tiện, và hầu hết các

tính năng âm thanh nâng cao dễ dàng sử dụng.

Director có thể chơi một loạt các định dạng tập tin âm thanh, bao gồm cả AIF,

WAV và MP3. Nhu cầu của phần mềm sẽ xác định định dạng âm thanh cần sử dụng,

nhưng trong nhiều trường hợp tập tin âm thanh MP3 làm việc tốt, và có thể được dễ

dàng xem trực tiếp thông qua các đối tượng âm thanh Shockwave. Nếu cần thêm âm

thanh độ trung thực, AIF hoặc WAV tập tin âm thanh được hỗ trợ ở độ sâu 16-bit với

các kênh âm thanh stereo, và lên tới một tỷ lệ mẫu 44.1 KHz.

Trong Director chỉ giới hạn cho bạn hai kênh âm thanh, đây là một hạn chế trong

sử dụng âm thanh trong Director.

Để chơi một âm thanh với Lingo bạn sẽ cần để nhập một âm thanh vào cửa sổ

Cast, Lingo cho phép ban sử dụng tối đa 8 kênh âm thanh.

Để sử dụng âm thanh trong director ta có thể cú pháp như sau:

sound(3).play(member"gitar")

Trong đó:

3 là kênh âm thanh 3 trong director

Bản nhạc được phát có tên là gitar

2. PuppetSound

Để đưa âm thanh nền vào trong phần mềm (đưa âm thanh vào kênh của director)

ta sử dụng hàm sau On mouseEnter puppetSound 1, ‘‘soundMemberName’’ end

Đoạn code trên đưa âm thanh vào trong kênh 1 của director với âm thanh được

lưu trong cast.

Để dừng âm thanh sử dụng: puppetSound 1,0

Hoặc:

Page 38: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

SoundStop 1

3. Điều chỉnh âm lượng

Có hai cách điều chỉnh âm lượng trong lingo là điều chỉnh âm lượng toàn hệ

thống và điều chỉnh âm lượng riêng biệt.

- Điều chỉnh âm lượng hệ thống (Global Volume Control)

on startMovie set the soundLevel = 4

end

Âm lượng của hệ thống chia làm 8 mức từ mức 0 đến mức 7, mức 0 = mute,

mức 7 = max, mức trung bình là 3

- Điều chỉnh âm lượng riêng biệt là điều chỉnh âm lượng trên một kênh nào đó.

on exitFrame me sound(3).play(member "track1") set the volume of sound (3) = 200 -- sound(3).volume=200

end

Âm lượng trong trường hợp này được chia làm 256 mức từ mức 0 (mute) đến

255 (to nhất), mức trung bình là 130.

4. Fading Sound

Fading sound là việc âm thanh được tắt hoặc bật một cách từ từ, cú pháp fading

như sau:

Tắt âm thanh

sound(which channel).fadeOut(milliseconds)

Bật âm thanh

sound(which channel).fadein(milliseconds)

milliseconds là phần nghìn của giây

ví dụ :

on exitFrame me

sound(1).fadeOut(1000) end

Âm thanh của kênh 1 được tắt trong một giây.

Cách viết dài dòng on exitFrame me -- sound(1).fadeOut(1000)

Page 39: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

sound fadeOut 1, 30

end

5. Điều khiển âm thanh bên ngoài

Người lập trình có thể dùng lingo điều khiển âm thanh bên ngoài, file âm thanh

này không nằm trong cửa sổ cast của director.

on exitFrame me sound playFile 3, "music.aif" end

code lệnh trên chạy file âm thanh bên ngoài, đặt file âm thanh này vào kênh 3 của lingo,

file âm thanh có tên là music.aif (file âm thanh này để cùng chỗ với file director).

6. Đồng bộ âm thanh (Synchronizing sound)

Để đồng bộ âm thanh vào hình ảnh hay video người ta sử dụng cue point. Cue

point là điểm đánh dấu trong file âm thanh mà lingo có thể điều khiển được. Điểm cue

point được đưa vào trong file âm thanh thông qua một chương trình biên tập âm thanh

mà director có thê nhận ra được điêm cue point này. Dưới đây là một file âm thanh đã

được gắn hai điểm cue point là “four” và “full band 1” trước khi đưa vào trong director.

Hình 1. Hai điểm cue point trong file âm thanh

Lợi ích chính của việc sử dụng cue point cho phép đồng bộ chính xác âm thanh

và hình ảnh hay video trong director và có thể hoạt động đến tần số 44.1 KHz, và không

phụ thuộc vào đồng hồ đếm ngược trong director.

Ví dụ:

on exitFrame me

If sound(1).mostRecentcuePoint = 2 then PuppetTempo 12

Page 40: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

End if

end

7. Kiểm tra version của QuickTime

Một số file âm thanh và hình ảnh có định dạng mới mà QuickTime không thể đọc

được, để biết quicktime đang ở version bào nhiêu lingo cung cấp công cụ kiểm tra

version quicktime.

Put the quicktimeversion ()

Ví dụ:

On startMovie

If quickTimeVersion () < 8 then

Alert “you need to upgrade your QuickTime”

End if

end

8. Điều khiển phim QuickTime

Để điều khiểm phim trong director lingo có thuộc tính loopBounds điều khiển

thời gian chạy bộ phim

On exitFrame me

Sprite(2).loopBounds = [(1*60),(5*60)]

Go to the frame

end

phim sprite 2 sẽ chạy từ giây thứ 1 đến giây thứ 5

Chạy số giây lẻ

Sprite(2).loopBounds = [(1*60),(2.5*60)]

9. MovieRate

Để điều khiển tốc độ bộ phim ta sử dụng movierate

Ví dụ: Tại frame hiện tại chạy ngược bộ phim

on exitFrame me go to the frame set the movieRate of sprite 1 to -1

-- sprite(3).movieRate = .5

Page 41: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

end

Ví dụ: Tại frame hiện tại tăng tốc bộ phim

on exitFrame me go to the frame set the movieRate of sprite 1 to 3 -- sprite(3).movieRate = .5 end

10. MovieTime

Thuộc tính movietime đếm thời gian hoạt động của bộ phim

Đặt thời gian chạy cho phim

on exitFrame me If the movieTime of sprite 1 > 50 then set the movieTime of sprite 1 to 4000 end if If the movieTime of sprite 1 > 4000 then set the movieTime of sprite 1 to 60 end if If the movieTime of sprite 1 = 1200 then

set the movieTime of sprite 1 to 1300 end if set the movieTime of sprite 1 = 0 end

11. Video Frame Rate

Cú pháp

Member (whichMember).frameRate

FrameRate là thuộc tính điều khiển số lượng frame trong một giây (giống như

nguyên lý 24 hình trên giây).

on exitFrame me member(‘‘myVideo’’).FrameRate =30

end

Hoặc

on beginSprite me if sprite(spriteNum).member.frameRate < 15 then

Sprite(spriteNum).playBackMode = #fixed Sprite(spriteNum).fixdRate = 15

Page 42: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

End if

end

12. Cắt video (cropping Video)

Là một thuộc tính của video nó cho phép cắt bỏ góc cạnh của bộ phim, cắt bỏ

không có nghĩa là loại bỏ nó khỏi bộ phim mà ẩn phần đó khỏi bộ phim.

Cú pháp như sau: member(videoName).crop = true

on exitFrame me sprite(1).movieRate = 2

set the movieTime of sprite 1 = 3000 member("videoSample").crop = True end

Để mở thuộc tính này trong director, chọn đối tượng trong cửa sổ cast, chon vào

tab quicktime và vào trong cửa sổ Property inspector chon crop

Page 43: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

BÀI 8: THỰC THỂ TRONG WINDOWS

1. Lệnh (commands)

Câu lệnh (statement) là một đơn vị cơ bản của ngôn ngữ lập trình, là một dòng

lệnh hoàn chỉnh trong lingo, một câu lệnh luôn trả về một giá trị.

Ví dụ:

go to the frame

Biểu thức (expression) là một phần của câu lệnh, biểu thức có thể bao gồm biến,

toán tử, gọi hàm…, biểu thức trả về một giá trị đơn, Biểu thức không phải là một câu

lệnh hoàn chỉnh.

Ví dụ: 2+2 là một biểu thức kết quả trả về là 4

Command giống như động từ trong tiếng anh, một câu lệnh bao giờ cũng phải có

command.

Ví dụ command

Quit, halt, restart, go to…

Câu lệnh trong lingo có loại chỉ cần có command là đủ không cần các thành phần khác

đã đầy đủ ngữ nghĩa.

Ví dụ

on exitFrame me quit (hoặc halt, restart) end

Nhưng hầu hết các câu lệnh trong lingo đều cần có các thành phần bổ trợ đi kèm thì mới

đầy đủ ngữ nghĩa

Ví dụ:

go Where?

Set What? to What?

ở đây where và what là các thành phần bổ trợ

Để viết đúng câu lệnh trong lingo ta có thể sử dụng từ điển trong lingo, trong cửa số

soạn thảo script ký hiệu bằng chữ “L”

2. Hàm (function)

Page 44: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

Hàm luôn cung cấp thông tin về một trạng thái, một điều kiện hoặc một giá trị ví

dụ như:

the time Trả về giá trị thời gian

the name of member trả vè giá trị tên của member

the key trả về phím vừa nhấn trên bàn phím

Một số hàm (function) – hàm mức cao - luôn có ngoặc đơn đi sau tên hàm và bao

lấy giá trị cần được xử lý, hàm luôn trả về giá trị.

Ví dụ: Hàm bình phương Sqrt (3) = 9, hàm sin ()

Như vậy hàm luôn yêu cầu đầu vào xử lý và đầu ra.

3. Tư khóa (keyword)

Command giống như động từ, còn keyword giống như danh từ trong tiếng anh.

Keyword chính là các thành phần còn lại của một cầu lệnh trong lingo (Statement)

Như vậy một câu lệnh đầy đủ trong lingo ta có thể hình dung như sau:

Statement = Keyword + command + expression (hoặc Function)

Có rất nhiều keyword trong lingo ví dụ như: Sprite, member, the, next, previous,

cast, field, end…

Có hai keyword đặc biệt đó là next và the

Next giống như tính từ trong tiếng anh chẳng hạn như: next marker

The chính là mạo từ xác định trong tiếng anh (khi sử dụng trong các câu lệnh lingo ta

chú ý đến việc sử dụng mạo từ the này).

4. Điều kiện và trạng thái (Condition and status)

Điều kiện tồn tại trong câu lệnh có hai trạng thái. Điều kiện thông dụng nhất là

true và false hay on và off ví dụ như sau:

on exitFrame me set the visibility of sprite (4) to False member(3).editable = 1 end

Hoặc On keyDown

Page 45: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

If the key = "a" then go to frame "a"

If the key = "b" then go to frame "b" If the key = "c" then go to frame "c" end if

5. Thuộc tính (properties)

Thuộc tính là một trong những thành phần quan trọng của các đối tượng trong

lingo, các thuộc tính của một đối tượng thường được diễn tả bằng các từ tiếng anh.

Ví dụ: thuộc tính của đối tượng sprite như sau:

Color, location, name, size

Lingo cho phép thay đổi các thuộc tính này dựa vào cú pháp như sau:

Put sprite (which sprite). Some property = some value

Cú pháp ta hay sử dụng hơn khi lập trình:

If some property = some value then do something

Ví dụ: If the soundLevel = 5 then

set the soundlevel = 4

end if

6. Hằng số (Constants)

Là thành phần không thay đổi trong lingo, các hằng số như: true, false, void,

empty, backspace, enter, quote, return, space, tab…

Ví dụ:

On keyDown

If the key = "a" then go to frame "a" If the key = "b" then go to frame "b" If the key = "c" then go to frame "c" end if

Hoặc

If _key.pressed() = space then beep

7. Toán tử (operators)

Page 46: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

Toán tử dùng để liên kết hoặc so sánh trong các biểu thức của lingo. Trong lingo

có các loại toán tử sau:

- Toán tử toán học: Cộng +, trừ -, nhân *, chia /

- Toán tử so sánh: nhỏ hơn <, lớn hơn >, lớn hơn hoặc bằng >=, nhỏ hơn hoặc bằng

<=, khác nhau < >. Các toán tử này dùng để so sánh hai đối tượng.

- Toán tử logic (not, and, or) dùng để liên kết các điều kiện đơn thành điều kiện

phức.

- Toán tử chuổi (&, &&, +) dùng để liên kết các chuổi.

Page 47: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

BÀI 9: VÒNG LẶP TRONG LINGO

1. Câu lệnh if then

Câu lệnh if then hay còn gọi là câu lệnh điều kiện trong lingo, trong câu lệnh này

cho phép người lập trình kiểm tra điều kiện trước khi đưa ra hành động tương ứng.

Cú pháp như sau:

if condition(expression) then do something (statement)

condition(expression): là biểu thức điều kiện thường cho hai kết quả là true và false

do something (statement): Hành động khi biểu thức điều kiện là đúng (true)

Ví dụ: if sprite(1).locV < 320 then sprite(1).locV = sprite(1).locV + 10

Trong trường hợp ta từ hai lệnh sau từ khóa then ta phải sử dụng thêm end if

Một số trường hợp sử dụng hàm if như sau:

if condition1 then

if condition2 then

do something

end if

end if

hoặc if condition1 and condition2 then ...

trong trường hợp ta cần có hành động tương ứng với biểu thức điều kiện là sai, sử dụng

cú pháp như sau:

if condition then

do something when condition true

else

do something when condition false

end if

Ví dụ:

if rollover(1) then

member("Message").text = "You have moved the mouse over sprite 1."

Page 48: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

Else

member("Message").text = "The mouse is not over sprite 1."

end if

2. Lệnh Case

Đây cũng là một dạng của câu lệnh điều kiện, cú pháp của lệnh case như sau:

Case expression of

value1 : statement

value2 : statement

otherwise:

statement(s)

end case

Lệnh case đưa ra hành động tương ứng cho các giá trị mà biểu thức (expression)

nhận được.

Ví dụ:

case the rollover of

1: member("Message").text = "You have moved the mouse over sprite 1."

2: member("Message").text = "You have moved the mouse over sprite 2."

3: member("Message").text = "You have moved the mouse over sprite 3."

otherwise

member("Message").text = "The mouse is not over sprite 1, 2 or 3."

end case

Lệnh case trên cũng có thể được viết bằng lệnh if như sau:

if rollover(1) then

member("Message").text = "You have moved the mouse over sprite 1."

else if rollover(2) then

member("Message").text = "You have moved the mouse over sprite 2."

else if rollover(3) then

member("Message").text = "You have moved the mouse over sprite 3."

Page 49: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

Else

member("Message").text = "The mouse is not over sprite 1, 2 or 3."

end if

3. Vòng lặp repeat

Cú pháp như sau:

repeat while condition

statement(s)

end repeat

Các câu lệnh được lặp lại trong khi điều kiện vẫn còn đúng.

Ví dụ:

repeat while the mouseDown

nothing

end repeat

lệnh dừng tất cả mọi thứ trong khi chuột được trái được bấm

Lặp lại lệnh với số lần xác định ta sử dụng cú pháp như sau:

repeat with localVariable = startValue to endValue

statement(s)

end repeat

Lặp lại lệnh với số lần xác định từ giá trị ban đầu (startValue) đến giá trị cuối

(andValue). Trong cú pháp trên mỗi lần lặp lệnh repeat tự động tăng giá trị localVariable

lên 1 đơn vị.

Ví dụ:

repeat with x = 6 to 10

sprite(x).visible = 1

end repeat

hoặc

repeat with x = 6 to 10

if (x mod 2) = 1 then next repeat

sprite(x).visible = 1

end repeat

Page 50: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

Lệnh lặp với số lần đếm giảm

repeat with localVariable = startValue down to endValue

statement(s)

end repeat

Lặp lại lệnh với số lần xác định từ giá trị ban đầu (startValue) đến giá trị cuối

(andValue). Trong cú pháp trên mỗi lần lặp lệnh repeat tự động giảm giá trị

localVariable đi 1 đơn vị.

Page 51: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

BÀI 10: BIẾN TRONG LINGO

1. Biến là gì

Biến là nơi lưu trữ dữ liệu trong phần mềm, giá trị này có thể thay đổi trong phần

mềm (trong phim). Vì vậy biên được lưu trữ ở trên RAM của hệ thống.

Ví dụ:

Trong massage window ta gõ như sau

myVariable = 10

trace(myVariable)

ở đây dấu “=” đã gán giá trị 10 cho biến myVariable

Yêu cầu khi đặt tên biến:

- Tên biến không được đặt quá 256 ký tự

- Tên biến phải bắt đầu bằng chữ cái hoặc dấu gạch dưới

- Sau chữ cái đầu tiên chữ số hoặc ký tự đặc biệt có thể nằm trong tên biến

- Tên biến không được chứa dấu cách trắng

Khi khái báo biến ta có thể khai báo kiểu dữ liệu cho biến hoặc không, nếu không

khai báo kiểu dữ liệu của biến được xác định khi gán dữ liệu cho biến

2. Biến global

Là biến toàn thể tồn tại trong toàn bộ chương trình. Khi khai báo biến ta phải sử

dụng từ khóa global để khai báo biến ví dụ:

global gTempo global gStageColor

trong ví vụ ta khai báo hai biến toàn thể là gTempo và gStageColor, để dễ nhận biết biến

toàn thể ta sử dụng thêm chữ cái “g” trước tên biến

Biến global thường được khai báo trong StartMovie handler hoặc (prepare

handler) ví dụ:

global gTempo global gStageColor

on startMovie

Page 52: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

on setVolume global gVolume set gVolume = 4 set soundLevel = gVolume sound(3).play(member "track1") set the volume of sound (3) = 200 end end

Hoặc

on mouseUp

global gVolume set gVolume = gVolume + 1 set the soundLevel = gVolume end

3. Biến local

Là biến chứa dữ liệu chỉ có tác dụng trong xử lý hiện tại nói cách khác biến sử

dụng tạm thời. Biến được khai trong sprite chỉ có tác dụng khi sprite còn tồn tại khi

sprite không còn trên màn hình biến cùng giá trị không còn tác dung.

Ví dụ biến local

on mouseUp score = 100 end

4. Đối số và giá trị (argument and passed values)

Đối số (argument) là thông tin cần thiết để làm rõ mệnh lệnh, đối số đại diện cho

các giá trị được đưa vào thông qua các tham số.

on startMovie

on addThem a,b --- a và b là hai đối số của hàm addThem c = a + b return c end end

Ở đây a và b là hai đối số, hai đối số này cần xác định rõ giá trị khi hàm addThem

được goi.

on mouseUp me set mySum = addThem(4,8)

end

Page 53: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

ở đây hai đối số a và b được thay bằng giá trị 4 và 8

hoặc

on mouseUp me set mySum = addThem(3+6,2*8) end

5. Kiểu dữ liệu của biến

- Các kiểu dữ liệu của biến như sau:

integers: kiểu số nguyên, ví dụ: 1, -5

floats: Kiểu số thực, ví dụ: 1.5, -0.89

strings: Kiểu chuỗi, ví dụ: "dean", "Multimedia design"

symbols: Kiểu symbols, ví dụ: #dean, #123

boleans: Kiểu logic chỉ nhận một trong hai giá trị là TRUE và FALSE, hoặc 1

và 0

lists: là kiểu dữ liệu danh sách, mỗi thành phần trong list lại là một trong các kiểu

dữ liệu trên [1, 2, 3], ["abc", 1.2, #name]

6. Sử dụng biến trong lingo

Biến trong lingo được sử dụng hết sức linh hoạt, khi sử dụng biên hầu như ta

không cần phải khai báo trước kiểu dữ liệu cho biến, sau khi gán giá trị cho biến kiểu

biến sẽ được xác lập, kiểu biến cũng có thê được thay đổi ngay trong phần mêm.

Ví dụ sử dụng biến:

on mouseDown me currentV = sprite(1).locV set currentV = currentV + 50 sprite(1).locV = currentV updateStage if sprite(1).locV > 250 then sprite(1).memberNum = 5 end if end if

end

ở đây ta thấy currentV là một biến local

Page 54: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

BÀI 11: ĐIỀU KHIỂN THUỘC TÍNH CỦA SPRITE

1. Kiểm tra thuộc tính

Dưới đây là danh sách các thuộc tính của sprite trong director, người dùng có thể

kiểm tra hoặc thay đổi các thuộc tính này của sprite:

Bảng 1: Một số thuộc tính của sprite

Thuộc tính Mô tả Ví dụ

.loch Horizontal Location in pixels sprite(1).loch = 80

.locv Vertical Location in pixels sprite(1).locv = 120

.loc The location point sprite(1).loc = point(80, 120)

.width Width in pixels sprite(1).width = 100

.height Height in pixels sprite(1).height = 100

.ink Changes ink - see inkcodes* sprite(1).ink = 36

.blend The translucency (0-100) sprite(1).blend = 50

.member The Cast by name or cast number sprite(1).member = ̉dogÓ

.rotation The rotation in Degrees sprite(1).rotation = 180

.regpoint The registration point of castmember member("dog").regpoint = point(80, 120)

.skew Distorts sprite (0-360) sprite(1).skew = 180

.flipH, .flipV Horizontal flip (true-false) sprite(1).flipH = false

.left, .right Left/right side on the stage sprite(1).left =50

.top, .bottom Top/bottom side on the stage sprite(1).top = 75

.moveablesprite user can move the sprite (true-false) sprite(1).movablesprite = true

.trails Sprite leaves trace image (true-false) sprite(1).trails = false

.visible Mutes sprite channel (true-false) sprite(1).visible = true

.cursor Changes cursor - see cursor codes* sprite(1).cursor = 2

.color Applies a color to the sprite sprite(1).color = color (255,0,0)

.forecolor Better w/tool shapes or 1bits (0-255) sprite(1). forecolor = 2

.backcolor Better w/tool shapes or 1bits (0-255) sprite(1). backcolor = 2

.mediaready Shockwave Đ if media has arrived if sprite(1). mediaready = false then

Ví dụ kiểm tra thuộc tính của sprite như sau:

on startMovie

Page 55: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

On testCondition

Sprite(2).foreColor = random(5) If sprite (2).foreColor = 1 then member(2).text = "Light Blue" If sprite (2).foreColor = 2 then member(2).text = "Purple" If sprite (2).foreColor = 3 then member(2).text = "Dark Blue" If sprite (2).foreColor = 4 then member(2).text = "Yellow" If sprite (2).foreColor = 5 then member(2).text = "Green" UpdateStage end end

Sprite được xác định thông qua con số. Chính là con số mà sprite chiếm giữ trong

kênh sprite. Con số này khác với Cast Member Number và Cast Member Name. ví dụ

khi tôi tạo ra một bộ phim mới trong bộ phim ve một hình mặt trời và đặt tên nó là “sun”

và kéo nó vào trong màn hình score ở sprite channel 5. Như vậy ta có số của sprite là 5,

member name là “sun” và member number (số thành viên trong cửa sổ cast) là 1.

Bạn cũng có thể đặt tên cho sprite trong property inspector. Nếu bạn đặt tên cho

bạn không phải nhớ số của sprite là gì.

Ví dụ như sau: sprite("sun").member="bright sun"

Trong bài giảng này ta sẽ nghiên cứu một số thuộc tính của spirte

2. Sprite coloration: Forecolor

Đây là thuộc tính màu của sprite, cú pháp trong lingo thay đổi thuộc tính màu của

sprite như sau

Cú pháp: viết cho castName

Member (castName).foreColor = colorNumber

Hoặc set the foreColor of castName to colorNumber

Viết cho sprite

Sprite(whichSprite).forecolor = colorNumber

Hoặc set the foreColor of sprite whichSprite to ColorName

Ví dụ:

on mouseUp me

sprite(3).foreColor = 250 end

hoặc thay đổi color cho chữ

on exitFrame me go to the frame

Page 56: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

member("myText").line[2].word[1].foreColor = 25

end

kết quả như sau:

3. Di chuyển vị trí của sprite

Trong bảng 1 của bài ta biết vị trí của sprite có thể được xác định thông qua hai

biến locV và locH

Đoạn mã sau đặt lại vị trí sprite 3 khi nó nằm ngoài stage

on exitFrame me sprite(3).moveableSprite = TRUE if sprite(3).locV > (the stageBottom - the stageTop) then sprite(3).locV = 0 end if

go to the frame end

Dòng lệnh sprite(3).moveableSprite = TRUE Lệnh này cho phép sử

dụng chuột kéo di chuyển đối tượng trong màn hình.

4. Ràng buộc và giao

Ràng buộc là sự ràng buộc của sprite này vào một sprite khac về vị trí

Ví dụ:

on exitFrame me go to the frame set the constraint of sprite(1) to 4

end

Code lệnh trên sẽ ràng buộc sprite 1 vào sprite 4 (sprite 1 chỉ được di chuyển

trong không gian của sprite 4).

Xóa bỏ ràng buộc

sprite(1).constraint = 0

Để kiểm tra sự giao nhau của hai đồi tương trên màn hình ta sử dụng lệnh intersect ví

dụ như sau:

on exitFrame me go to the frame

Page 57: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

if sprite 1 intersects sprite 2 then

put "That is correct!" into member "Place Check" end if end

Trong đoạn code trên kiểm tra sự giao nhau của hai sprite 1 và 2 sau đó đưa ra

hành động thích hơp.

5. Kích thước sprite

Kích thước của sprite được xác định thông qua hai thuộc tính là .width và .height

để thay đổi các giá trị này ta chú ý cách viết như sau:

Member (whichCastMember).width, imageObject.width hoặc sprite

(whichSprite).width

Ví dụ:

on mouseUp me Set the width of sprite(5) = 200 --standard syntax --member(5).width = 200 -- dot syntax end

hoặc

on mouseUp me sprite(5).height = 26 end

6. Ẩn hiện sprite

- Để ẩn một sprite trên stage ta sử dụng cú pháp như sau:

sprite (whichSprite).visible = false

- Để hiện một sprite trên stage ta sử dụng cú pháp như sau:

sprite (whichSprite).visible = true

Ví dụ:

on mouseUp me sprite(5).visible = FALSE -- dot syntax end

BÀI 12: THEO DÕI ĐẦU VÀO CỦA NGƯỜI DÙNG

VÀ GỠ LỖI THÔNG DỤNG

1. Theo dõi click chuột

Page 58: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

Các thuộc tính của chuột ví dụ như: clickLoc (vị trí click chuột trên màn hình),

clickOn, the lastClick, mouseDown, rightMouseDown.

Ví dụ sử dụng clickon để kéo đối tượng di chuyển theo chuột

on exitFrame me go to the frame sprite(the clickOn).loc = the mouseLoc end

Hoặc sử dụng chuột di chuyển đối tượng theo phương ngang

on mouseDown me

repeat while the mouseDown if (the mouseH<500)and (the mouseH>100) then sprite(2).locH = the mouseH updateStage end if if (the mouseH>100)and (the mouseH<200) then sprite(3).width = 100 updateStage else if (the mouseH>200)and (the mouseH<300) then sprite(3).width = 150 updateStage else if (the mouseH>300)and (the mouseH<400) then sprite(3).width = 200 updateStage

else if (the mouseH>400)and (the mouseH<500) then sprite(3).width = 250 updateStage end if end repeat end

Kiểm ta vị trí chuột trên màn hình trong cửa sổ message của windows

put the clickLoc

Sử dụng lastClick

on exitFrame me go to the frame

if the lastClick > 8 * 60 then go to "help" end if end

Nội dung đoạn code trên nếu đợi quá 8 giây mà không có click chuột trên màn

hình thì nhảy đến trang help

2. Editable trường text

Text trong movie có hai loại là text trong cast và text trong sprite, đặt thuộc tính

editable (có thể thay đổi) cho trường text ta có cú pháp như sau:

Page 59: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

Cú pháp cho cast member

member(whichCastMember).editable = true

Cú pháp cho sprite

sprite(whichSprite).editable = true

Ví dụ như sau:

on exitFrame me go to the frame if member("Name").editable = TRUE then member("Name").text = "Please enter name here"

end if end

Hoặc:

on startMovie on setText puppetSprite 1, TRUE sprite(1).editable = TRUE end end

3. Thay đổi định dạng text

Thay đổi định dạng chữ trong phim gồm có các thuộc tính sau:

Text(chữ trên hình), Font(tên font), Font Style(kiểu font), LineHeight(chiều cao

chữ), Font Size(cỡ font), Alignment (căn lề)

Vi dụ như sau:

on exitFrame me go to the frame member("text1").text = "This text content can be changed in Lingo"

end

Hoặc

on exitFrame me go to the frame set newFont = the font of member("text1") set the font of member("text2") = newFont end

Hoặc

on exitFrame me go to the frame

Page 60: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

oldSize = member("text1").fontSize

member("text2").fontSize = oldSize end

4. Chuỗi trong lingo

Chuỗi trong lingo phải được viết trong dấu nháy kép, lingo có thể định dạng chuỗi

và so sánh các chuỗi.

Gán chuỗi cho cast member

Member(“computer”).text = “thao tác với chuỗi trong lingo”

Lấy ra một từ trong chuỗi

member("computer").word[1] = ‘‘thao’’

Lấy ra một chữ trong chuỗi

member("computer").char[3] = ‘‘a’’

Lấy ra số lượng từ trong chuỗi

member("computer").words.count = 6

Gán chuỗi cho biến

Set myText = member("computer").text

Công chuỗi

“ha” & “noi” = “hanoi”, “ha” && “noi” = “ha noi”

5. Idle event handler

Đây là một hàm xử lý đặc biệt, nó hoạt đông bât cứ khi nào mà không có các sự

kiện sử lý, hàm này thích hợp cho các xử lý thường xuyên như thời gian, cập nhật biến

global, hiển thị điều kiện hiện thời của bộ phim…

Cơ chế hoạt động của hàm được thể hiện trên hình 1.

Page 61: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

Hình 1. Thời điểm hoạt động của các xử lý trong director

Ví dụ: on exitFrame me go to the frame on idle

put the short time into member("Time") updateStage

end end

6. Kiểm tra hệ thông

Director cho phép người lập trình kiểm tra hệ thống chẳng hạn như:

Macintosh, Power PC Power PC Macintosh Windows, 32 Windows 95, NT, 2000

Ví dụ:

on startMovie if the platform contains "Windows,32" then alert "We have detected you are running Windows, the

appropriate cast will now be loaded." castLib("WinNT").name = "interface"

Page 62: Macromedia director lingo

Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 [email protected]

end if

on downloadFiles if the runMode contains "Plugin" then Alert "Sorry, can't do that" else downloadNetThing ("instructions.txt") end if end

7. Import thông qua lingo script

Cú pháp như sau:

importFileInto member whichCastMember, fileName

importFileInto member whichCastMember of castLib whichCast, fileName

importFileInto member whichCastMember, URL

Ví dụ:

on exitFrame me tempURL = "http://geekmanuals.com/logo.gif" importFileInto new(#bitmap), tempURL member("soundtrack").importFileInto("narration.wav") end

hoặc

on mouseUp me

importFileInto(member 6, "http://www.geekmanuals.com/image3.gif")

end