SlideShare a Scribd company logo
1 of 62
Download to read offline
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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ả
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
- 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)
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
{
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);
}
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
* 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
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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()
{
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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:
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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,
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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.)
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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…
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
Để 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
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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. Để
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
đư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ỉ
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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 đó.
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
- 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
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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)
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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.
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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.
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
 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:
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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.
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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:
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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
Và
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 độ
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
On exitFrame
go to the frame
if the mouseV > 100 then
cursor 1
end if
end
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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:
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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)
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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)
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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)
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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.
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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."
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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."
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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ị.
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
ở đâ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
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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:
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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.
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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"
Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
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

More Related Content

Viewers also liked

Viewers also liked (7)

Giao trinhtoanungdung nguyenhaithanh
Giao trinhtoanungdung nguyenhaithanhGiao trinhtoanungdung nguyenhaithanh
Giao trinhtoanungdung nguyenhaithanh
 
Dreamweaver
DreamweaverDreamweaver
Dreamweaver
 
Dreamweaver CS3
Dreamweaver CS3Dreamweaver CS3
Dreamweaver CS3
 
Chuong1
Chuong1Chuong1
Chuong1
 
Giao trinh ly sinh
Giao trinh ly sinhGiao trinh ly sinh
Giao trinh ly sinh
 
Adobe Flash History and Basics
Adobe Flash History and BasicsAdobe Flash History and Basics
Adobe Flash History and Basics
 
Bài giảng kỹ thuật điều khiển tự động
Bài giảng kỹ thuật điều khiển tự độngBài giảng kỹ thuật điều khiển tự động
Bài giảng kỹ thuật điều khiển tự động
 

Similar to Macromedia director lingo

[Bachkhoa-Aptech] Hướng dẫn lập trình web doanh nghiệp
[Bachkhoa-Aptech] Hướng dẫn lập trình web doanh nghiệp[Bachkhoa-Aptech] Hướng dẫn lập trình web doanh nghiệp
[Bachkhoa-Aptech] Hướng dẫn lập trình web doanh nghiệpPhạm Văn Hưng
 
@Nmcntt2 do an#1-ntviet-pmhoang
@Nmcntt2 do an#1-ntviet-pmhoang@Nmcntt2 do an#1-ntviet-pmhoang
@Nmcntt2 do an#1-ntviet-pmhoangkhoa khoa
 
Tập Huấn Soạn Giảng Giáo Án Điện Tử E-Learning.pdf
Tập Huấn Soạn Giảng Giáo Án Điện Tử E-Learning.pdfTập Huấn Soạn Giảng Giáo Án Điện Tử E-Learning.pdf
Tập Huấn Soạn Giảng Giáo Án Điện Tử E-Learning.pdfHanaTiti
 
Tiểu luận cơ sở ngành kỹ thuật phần mềm. phần mềm mô phỏng các thuật toán s...
Tiểu luận  cơ sở ngành kỹ thuật phần mềm. phần mềm  mô phỏng các thuật toán s...Tiểu luận  cơ sở ngành kỹ thuật phần mềm. phần mềm  mô phỏng các thuật toán s...
Tiểu luận cơ sở ngành kỹ thuật phần mềm. phần mềm mô phỏng các thuật toán s...jackjohn45
 
OOP_01_Tong Quan LTHDT.pdf
OOP_01_Tong Quan LTHDT.pdfOOP_01_Tong Quan LTHDT.pdf
OOP_01_Tong Quan LTHDT.pdfssuserd01a5c
 
Slide bài giảng: Thiết kế giáo án, bài giảng điện tử, new updated
Slide bài giảng: Thiết kế giáo án, bài giảng điện tử, new updatedSlide bài giảng: Thiết kế giáo án, bài giảng điện tử, new updated
Slide bài giảng: Thiết kế giáo án, bài giảng điện tử, new updatedBùi Việt Hà
 
Thietkebaigiangdt_Nhận làm slide thuyết trình Miss 0984990180
Thietkebaigiangdt_Nhận làm slide thuyết trình Miss 0984990180Thietkebaigiangdt_Nhận làm slide thuyết trình Miss 0984990180
Thietkebaigiangdt_Nhận làm slide thuyết trình Miss 0984990180Nguyễn Thị Thanh Tươi
 
Tra loi lythuyet_thvp
Tra loi lythuyet_thvpTra loi lythuyet_thvp
Tra loi lythuyet_thvpNho Doan Hong
 
@Nmcntt2 do an#2-khmt-cntt-tgmt-ver0.4
@Nmcntt2 do an#2-khmt-cntt-tgmt-ver0.4@Nmcntt2 do an#2-khmt-cntt-tgmt-ver0.4
@Nmcntt2 do an#2-khmt-cntt-tgmt-ver0.4khoa khoa
 

Similar to Macromedia director lingo (20)

[Bachkhoa-Aptech] Hướng dẫn lập trình web doanh nghiệp
[Bachkhoa-Aptech] Hướng dẫn lập trình web doanh nghiệp[Bachkhoa-Aptech] Hướng dẫn lập trình web doanh nghiệp
[Bachkhoa-Aptech] Hướng dẫn lập trình web doanh nghiệp
 
@Nmcntt2 do an#1-ntviet-pmhoang
@Nmcntt2 do an#1-ntviet-pmhoang@Nmcntt2 do an#1-ntviet-pmhoang
@Nmcntt2 do an#1-ntviet-pmhoang
 
Tập Huấn Soạn Giảng Giáo Án Điện Tử E-Learning.pdf
Tập Huấn Soạn Giảng Giáo Án Điện Tử E-Learning.pdfTập Huấn Soạn Giảng Giáo Án Điện Tử E-Learning.pdf
Tập Huấn Soạn Giảng Giáo Án Điện Tử E-Learning.pdf
 
Tiểu luận cơ sở ngành kỹ thuật phần mềm. phần mềm mô phỏng các thuật toán s...
Tiểu luận  cơ sở ngành kỹ thuật phần mềm. phần mềm  mô phỏng các thuật toán s...Tiểu luận  cơ sở ngành kỹ thuật phần mềm. phần mềm  mô phỏng các thuật toán s...
Tiểu luận cơ sở ngành kỹ thuật phần mềm. phần mềm mô phỏng các thuật toán s...
 
Xây Dựng Website Giới Thiệu Sản Phẩm Phần Mềm.doc
Xây Dựng Website Giới Thiệu Sản Phẩm Phần Mềm.docXây Dựng Website Giới Thiệu Sản Phẩm Phần Mềm.doc
Xây Dựng Website Giới Thiệu Sản Phẩm Phần Mềm.doc
 
OOP_01_Tong Quan LTHDT.pdf
OOP_01_Tong Quan LTHDT.pdfOOP_01_Tong Quan LTHDT.pdf
OOP_01_Tong Quan LTHDT.pdf
 
GoogleDocs
GoogleDocsGoogleDocs
GoogleDocs
 
Slide bài giảng: Thiết kế giáo án, bài giảng điện tử, new updated
Slide bài giảng: Thiết kế giáo án, bài giảng điện tử, new updatedSlide bài giảng: Thiết kế giáo án, bài giảng điện tử, new updated
Slide bài giảng: Thiết kế giáo án, bài giảng điện tử, new updated
 
Thietkebaigiangdt_Nhận làm slide thuyết trình Miss 0984990180
Thietkebaigiangdt_Nhận làm slide thuyết trình Miss 0984990180Thietkebaigiangdt_Nhận làm slide thuyết trình Miss 0984990180
Thietkebaigiangdt_Nhận làm slide thuyết trình Miss 0984990180
 
Đề tài: Xây dựng website giới thiệu sản phẩm phần mềm, HOT
Đề tài: Xây dựng website giới thiệu sản phẩm phần mềm, HOTĐề tài: Xây dựng website giới thiệu sản phẩm phần mềm, HOT
Đề tài: Xây dựng website giới thiệu sản phẩm phần mềm, HOT
 
Đề tài: Xây dựng website giới thiệu cho sản phẩm phần mềm, 9đ
Đề tài: Xây dựng website giới thiệu cho sản phẩm phần mềm, 9đĐề tài: Xây dựng website giới thiệu cho sản phẩm phần mềm, 9đ
Đề tài: Xây dựng website giới thiệu cho sản phẩm phần mềm, 9đ
 
Đề tài: Xây dựng website giới thiệu sản phẩm phần mềm, HAY
Đề tài: Xây dựng website giới thiệu sản phẩm phần mềm, HAYĐề tài: Xây dựng website giới thiệu sản phẩm phần mềm, HAY
Đề tài: Xây dựng website giới thiệu sản phẩm phần mềm, HAY
 
Đề tài: Xây dựng Web bán và giới thiệu văn phòng phẩm, HAY
Đề tài: Xây dựng Web bán và giới thiệu văn phòng phẩm, HAYĐề tài: Xây dựng Web bán và giới thiệu văn phòng phẩm, HAY
Đề tài: Xây dựng Web bán và giới thiệu văn phòng phẩm, HAY
 
Ly thuyet
Ly thuyetLy thuyet
Ly thuyet
 
Ly thuyet
Ly thuyetLy thuyet
Ly thuyet
 
Ly thuyet
Ly thuyetLy thuyet
Ly thuyet
 
Hdsd eclipse
Hdsd eclipseHdsd eclipse
Hdsd eclipse
 
Tra loi lythuyet_thvp
Tra loi lythuyet_thvpTra loi lythuyet_thvp
Tra loi lythuyet_thvp
 
@Nmcntt2 do an#2-khmt-cntt-tgmt-ver0.4
@Nmcntt2 do an#2-khmt-cntt-tgmt-ver0.4@Nmcntt2 do an#2-khmt-cntt-tgmt-ver0.4
@Nmcntt2 do an#2-khmt-cntt-tgmt-ver0.4
 
Phạm văn ất
Phạm văn ấtPhạm văn ất
Phạm văn ất
 

Recently uploaded

30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfhoangtuansinh1
 
powerpoint lịch sử đảng cộng sản việt nam.pptx
powerpoint lịch sử đảng cộng sản việt nam.pptxpowerpoint lịch sử đảng cộng sản việt nam.pptx
powerpoint lịch sử đảng cộng sản việt nam.pptxAnAn97022
 
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...Nguyen Thanh Tu Collection
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIĐiện Lạnh Bách Khoa Hà Nội
 
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................TrnHoa46
 
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIGIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIĐiện Lạnh Bách Khoa Hà Nội
 
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfCampbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfTrnHoa46
 
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...Nguyen Thanh Tu Collection
 
PHÁT TRIỂN DU LỊCH BỀN VỮNG Ở TUYÊN QUANG
PHÁT TRIỂN DU LỊCH BỀN VỮNG Ở TUYÊN QUANGPHÁT TRIỂN DU LỊCH BỀN VỮNG Ở TUYÊN QUANG
PHÁT TRIỂN DU LỊCH BỀN VỮNG Ở TUYÊN QUANGhoinnhgtctat
 
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoáCác điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoámyvh40253
 
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...Nguyen Thanh Tu Collection
 
sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdfTrnHoa46
 
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docxTHAO316680
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...Nguyen Thanh Tu Collection
 

Recently uploaded (20)

30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
 
powerpoint lịch sử đảng cộng sản việt nam.pptx
powerpoint lịch sử đảng cộng sản việt nam.pptxpowerpoint lịch sử đảng cộng sản việt nam.pptx
powerpoint lịch sử đảng cộng sản việt nam.pptx
 
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
 
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................
 
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIGIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
 
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfCampbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
 
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
 
PHÁT TRIỂN DU LỊCH BỀN VỮNG Ở TUYÊN QUANG
PHÁT TRIỂN DU LỊCH BỀN VỮNG Ở TUYÊN QUANGPHÁT TRIỂN DU LỊCH BỀN VỮNG Ở TUYÊN QUANG
PHÁT TRIỂN DU LỊCH BỀN VỮNG Ở TUYÊN QUANG
 
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoáCác điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
 
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
 
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
 
sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdf
 
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
 

Macromedia director lingo

  • 1. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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ả
  • 2. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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
  • 3. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com - 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)
  • 4. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com { 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); }
  • 5. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com * 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
  • 6. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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() {
  • 7. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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:
  • 8. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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
  • 9. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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,
  • 10. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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.)
  • 11. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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…
  • 12. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com Để 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
  • 13. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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
  • 14. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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. Để
  • 15. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com đư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ỉ
  • 16. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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
  • 17. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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
  • 18. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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 đó.
  • 19. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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
  • 20. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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
  • 21. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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
  • 22. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com - 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
  • 23. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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
  • 24. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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)
  • 25. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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
  • 26. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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
  • 27. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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.
  • 28. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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.
  • 29. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com  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:
  • 30. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com
  • 31. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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
  • 32. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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.
  • 33. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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:
  • 34. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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
  • 35. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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 Và 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 độ
  • 36. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com On exitFrame go to the frame if the mouseV > 100 then cursor 1 end if end
  • 37. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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:
  • 38. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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)
  • 39. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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
  • 40. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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
  • 41. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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
  • 42. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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
  • 43. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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)
  • 44. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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
  • 45. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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)
  • 46. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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.
  • 47. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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."
  • 48. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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."
  • 49. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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
  • 50. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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ị.
  • 51. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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
  • 52. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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
  • 53. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com ở đâ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
  • 54. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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
  • 55. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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
  • 56. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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
  • 57. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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
  • 58. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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:
  • 59. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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
  • 60. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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.
  • 61. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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"
  • 62. Nguyễn Anh Tuấn – Tập huấn tin học năm 2016 tuantamhop@gmail.com 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