1. Trang chủ
  2. » Giáo án - Bài giảng

GIÁO TRÌNH FLASH ACTION SCRIP Nguyễn Anh Cường

1,2K 1,6K 0

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 1.225
Dung lượng 7,86 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bạn không nhất thiết phải sử dụng ActionScript để sử dụng Flash, nhưng nếu bạn muốn cung cấp hoạt động liên minh người dùng, làm việc với các object khác hơn kiến trúc có trong Flash như

Trang 1

PHÒNG KHOA HỌC CÔNG NGHỆ - MÔI TRƯỜNG

g

456456456

Ban CNTT -Phóng tác từ nguyên bản Tiếng Anh

Hà Nội 7.2007

Trang 2

C

Tin hoơc Phöí cíơp Vùn phođng

Ăùơc taê Xûê lyâ vađ Xûê lyâ Tûơ ăöơng

Ăùơc taê Ăöì hoaơ AutoCAD

Ăùơc taê Ăöì hoaơ PhotoShop

Caâc thuê thuíơt cuêa Hacker

Khai thaâc ẵa Hiren's Boot

Correl Draw vađ ăöì hoaơ Myô thuíơt

Ăöì hoaơ hoaơt hònh Flash

Kyô thuíơt Thiïịt kïị Website

Kyô thuíơt Líơp trònh Windows Hoơc Internet theo caâch ăún giaên hoaâ Tûđ ăiïín ActionScript cho Flash Sûê duơng Companent trong Flash Líơp trònh mö phoêng vúâi DirectX MapInfor vađ baên ăöì söị

Phaâ moơi míơt khííu gùơp trïn maây tñnh Líơp trònh vúâi MathLab

Xûê lyâ tñn hiïơu söị trong Quín sûơ

Tađi liïơu nađy lûu hađnh nöơi böơ Trung tím Tin hoơc ABCKiïím tra vađ sûêa chûôa: Nguýîn Phûúng Thaêo

Trang 3

f TRUNG TÂM TIN HỌC ABC

Hân hạnh Giới thiệu

44444444444444

Bạn thân mến!

Từ khi ra đời Macromedia Flash đã mở đầu cho một cuộc cách mạng về xử lý các hình ảnh động Các version về sau ngày càng bổ sung nhiều hiệu ứng hấp dẫn và tuyệt đẹp, tạo những ấn tượng khĩ quên cho rất nhiều người khi tiếp xúc với nĩ khiến cho nhiều người trong chúng ta tự hỏi, điều gì ẩn giấu đằng sau các hiệu ứng tuyệt vời đĩ Khơng phải điều gì khác, đĩ chính là

ActionScript Flash

ActionScript là kịch bản hành động đáp ứng cho tất cả các tình huống, hành động, thuộc tính, phương pháp của các đối tượng trong Flash Là người đã làm việc với Flash ngay từ những ngày đầu nĩ xuất hiện và liên tục bổ sung cập nhật những thơng tin mới nhất đối với nĩ, tơi rất vinh dự được giới thiệu tài liệu này tới các bạn Trong quá trình biên dịch tự động bằng phần mềm tự viết, cĩ thể cĩ những lỗi bất ngờ, mong các bạn hết sức thơng cảm và gửi gĩp ý trực tiếp cho tơi, để những tài liệu sau khơng cịn những khiếm khuyết đĩ

Mọi ý kiến gĩp ý xin gửi về:

Nguyễn Anh Cường - Điện thoại: 0988.529.310

Hoặc gửi gĩp ý trực tiếp lên Forum http: // khkt.net

Nguyễn Anh Cường xin chân thành cảm ơn

@ActionScript cho Flash6Nguyễn Anh Cường6Ban CNTT Học viện Phịng Khơng Khơng Quân@

Trang 4

Một số từ Tiếng Anh không được dịch vì nếu dịch ra sẽ không thoát được nghĩa và

gây rối câu văn khiến người đọc dễ nhầm lẫn:

Contructor Chương trình tạo lập theo mẫu

Handler Cán của chương trình

Listener Trình lắng nghe để gọi lệnh đáp ứng sự kiện

ToolBox Hộp công cụ

Tài liệu này dịch theo MacromediaFlash 2004- ActionScript (Khi mà hãng Macromedia chưa được hãng Adobe mua) tuy nhiên phần bổ sung cho Adobe Flash ActionScript 3.0, hiện tại đang sửa chữa, sẽ được gửi trong thời gian tới

Rất mong được bạn góp ý phê bình

Xin chân thành cảm ơn

Trang 5

LỜI GIỚI THIỆU

Macromedia FlashMX2004 và FlashMXProfessional2004 là những công cụ sáng tác chuẩn chuyên nghiệp cho những thành quả kinh nghiệm chịu tác động cao với web Các ActionScript là ngôn ngữ bạn dùng khi bạn muốn phát triển một ứng dụng trong phạm

vi Flash Bạn không nhất thiết phải sử dụng ActionScript để sử dụng Flash, nhưng nếu bạn muốn cung cấp hoạt động liên minh người dùng, làm việc với các object khác hơn kiến trúc có trong Flash (như là các button và các movie clip), hoặc nếu ngược lại một tệp SWF đem lại cho người dùng kinh nghiệm tinh vi hơn, bạn sẽ hầu như chắc chắn muốn sử dụng ActionScript

Các yêu cầu hệ thống

Các ActionScript không có bất cứ yêu cầu hệ thống, kể cả Flash MX 2004 hoặc Flash MX Professional 2004 Tuy nhiên, tư liệu minh chứng thừa nhận bạn đang dùng những thiết lập xuất bản ngầm định cho những tệp Flash của bạn: Flash Player 7 và ActionScript 2.0 Nếu bạn thay đổi cái gì đó ở các thiết lập này, những giải thích và những mẫu code được trình bày trong tư liệu minh chứng có thể không làm việc đúng đắn

Sử dụng những tư liệu dẫn chứng

Tài liệu này cung cấp một cái nhìn tổng quan của cú pháp ActionScript, thông tin trên làm thế nào để sử dụng ActionScript khi làm việc với các kiểu object khác nhau, cộng với những chi tiết trên cú pháp và cách dùng của mỗi yếu tố ngôn ngữ Bắt đầu học quy tắc chung và những khái niệm cơ sở sử dụng trong phần cuối của mỗi tài liệu (Xem Chương

II, “Các ActionScript Basics” trang 21) Tiếp đến, học những kỹ thuật viết và gỡ rối Các script Flash (Xem Chương III, “Viết và Debug các script,” trang 53)

Trước khi viết những các script của riêng bạn, bạn nên hoàn thành những bài học

“Viết các script với ActionScript” và “Tạo một Mẫu với Conditional Logic và Gửi dữ liệu,” thứ mà cung cấp một sổ tay vỡ lòng để làm việc với ActionScript Để tìm những bài học này, chọn Help>How Do I>Quick Tasks

Sau khi bạn hiểu những khái niệm cơ bản, bạn sẵn sàng sử dụng thông tin trong phần cuối của mỗi tài liệu này như nó thích hợp với hiệu ứng cụ thể bạn đang cố giành được Ví

dụ, nếu bạn muốn học làm thế nào để viết một script mà thực hiện một action nào đó khi một người dùng chuột, xem Chương IV, “Diễn xuất các event,” trang 79

@ActionScript cho Flash6Nguyễn Anh Cường6Ban CNTT Học viện Phòng Không Không Quân@

Trang 6

Khi bạn tìm thông tin về một lệnh chắc chắn bạn muốn sử dụng, bạn có thể tìm kiếm đầu vào của nó ở Chương XII, “Từ điển các ActionScript” trang 195; mỗi yếu tố ngôn ngữ được liệt kê ở đó theo thứ tự ABC

Các quy định in

Các quy định trong sau đây được dùng trong sách này:

• Chữ không chân chỉ ra Code ActionScript

Chữ có chân nghiêng chỉ ra một yếu tố, như là một tham số ActionScript hoặc tên đối tượng, mà bạn thay với đoạn text của riêng bạn khi viết một script

Các điều khoản sau được dùng trong sách này :

Bạn ám chỉ chuyên viên phát triển, người mà đang viết một script hoặc ứng dụng

Người dùng ám chỉ nhân vật, người mà sẽ chạy kịch bản script và các ứng dụng của bạn

Thời gian biên dịch là thời gian trong lúc mà bạn xuất bản, xuất, kiểm tra, hoặc gỡ rối tài liệu của bạn

Runtime là thời gian trong lúc kịch bản script của bạn đang chạy trong FlashPlayer Các điều khoản ActionScript như là method object được định nghĩa ở chương II,

“Các ActionScript Basics” trang 21

Các tài nguyên bổ sung

Tư liệu làm bằng chứng riêng biệt về Flash và các sản phẩm liên quan có thể kiếm được và không dính dáng với nhau

• Để biết thêm về làm việc trong môi trường sáng tác Flash, xem Sử dụng Flash Help

Để biết thêm về làm việc với các thành phần, xem Sử dụng Components Help

• Để biết thêm về tạo sự liên lạc các ứng dụng với Flash Communication Server, xem

Phát triển Các sự liên lạc Applications Quản lý Flash Communication Server

• Để biết thêm về truy cập các dịch vụ web với các ứng dụng Flash, xem Sử dụng Flash Remoting

Macromedia DevNet website (www.macromedia.com/devnet) được cập nhật đều đặn với thông tin mới nhất trên Flash, cộng lời chỉ bảo từ người dùng lão luyện, những đề mục nâng cao, các ví dụ, các lời khuyên, và những cập nhật khác Kiểm tra website thường xuyên để biết những tin mới nhất trên Flash và làm thế nào để nhận nhiều nhất phần bên ngoài của chương trình

(www.macromedia.com/support/flash) Macromedia Flash Support Center cung cấp TechNotes, tư liệu minh chứng cập nhật, và liên kết đến các tài nguyên bổ sung trong cộng đồng Flash

Trang 7

PHẦNI

CHÀO MỪNG BẠN ĐẾN VỚI ACTIONSCRIPT

Phần này gồm có thông tin cơ sở trên ngôn ngữ ActionScript

Chương 1 gồm có thông tin trên cái gì là mới hoặc đã thay đổi ở ActionScript và FlashPlayer 7 Nếu bạn đã sử dụng ActionScript trước, đừng quên xem lại thông tin này cẩn thận

Nếu bạn là người mới dùng ActionScript, đọc các chương 2 và 3 để nhận một cơ sở tiếp nhận tốt cho việc hiểu Thuật ngữ ActionScript và cú pháp và cho việc học làm thế nào để viết và gỡ rối kịch bản script của bạn

Chương 1: Cái gì mới Trong FlashMX2004ActionScript 8

@ActionScript cho Flash6Nguyễn Anh Cường6Ban CNTT Học viện Phòng Không Không Quân@

Trang 8

CHƯƠNGI

ACTIONSCRIPT 2.0 Macromedia FlashMX2004 và Macromedia FlashMXProfessional2004 cung cấp vài sự đề cao mà nó làm cho bạn viết script dễ dàng hơn, tinh vi hơn khi sử dụng ngôn ngữ ActionScript Những nét đặc trưng mới này, thứ mà được thảo luận ở chương này, chứa có chứa các yếu tố ngôn ngữ mới, cải thiện các công cụ gỡ rối và biên tập (Xem “Thay đổi các Trình soạn thảo ActionScript” trang 18 và “Debug thay đổi” trang 18), thêm mào đầu của một chương trình hướng đối tượng nhiều mô hình (Xem “Tạo mới mô hình chương trình hướng đối tượng” trang 19)

Chương này cũng chứa một phần mở rộng mà bạn nên đọc cẩn thận nếu bạn có kế hoạch xuất bản bất cứ tệp nào của FlashMX hoặc về trước đang tồn tại của bạn vào FlashPlayer 7 (Xem “Xuất những script đang tồn tại dùng Flash Player 7” trang 10)

Các yếu tố ngôn ngữ mới và đã thay đổi

Phần này mô tả các yếu tố ngôn ngữ ActionScript mới hoặc đã thay đổi Trong Flash

MX2004 Để sử dụng bất cứ yếu tố này trong các kịch bản script của bạn, bạn đặt đích là FlashPlayer 7 (ngầm định) khi bạn xuất bản tài liệu của bạn

• Các methodArray sort ()và Array sortOn () cho phép bạn bổ sung các tham số chỉ rõ các lựa chọn sắp xếp bổ sung, như là tăng dần và xếp giảm dần, cho biết để tính đến trường hợp nhạy cảm khi sắp xếp, và vân vân

• Các properties Button menu, MovieClip menu, và TextField menu làm việc với ContextMenu mới và các class ContextMenuItem để cho phép bạn kết hợp các menu item tình huống với các objectButton , MovieClip , hoặc TextField

• Class ContextMenu và Class ContextMenuItem cho phép bạn tuỳ biến thực đơn ngữ cảnh được hiện khi một người dùng trong FlashPlayer

•Class Error và các lệnh throw với try catch finally cho phép bạn thi hành diễn xuất ngoại lệ tinh vi hơn

•Các method LoadVars addRequestHeader () và XML addRequestHeader () thêm hoặc thay đổi HTTP yêu cầu headers (như là Content - Type hoặc SOAPAction) gửi với các actionPOST

• Function MMExecute () cho phép bạn đưa các lệnh từ ActionScript ra FlashJavaScript API

• EventListenerMouse onMouseWheel được sinh ra khi người dùng cuốn sử dụng nút cuộn chuột

•Method MovieClip getNextHighestDepth () cho phép bạn tạo MovieClip các instance

lúc runtime và được cam đoan rằng những object của chúng biểu hiện xếp chồng trên các

Trang 9

object khác theo thứ tự trục Z của movie clip cha MethodMovieClip get Instance AtDepth ()

cho phép bạn truy nhập năng động MovieClip các instance đã tạo, sử dụng chiều sâu như một chỉ số tìm kiếm

• Method MovieClip getSWFVersion () cho phép bạn quyết định thứ mà version của FlashPlayer được hỗ trợ bởi một tệp SWF đã tải

• MethodMovieClip getTextSnapshot () và object textSnapshot cho phép bạn làm việc với text, ở trong các trường text tĩnh trong một movie clip

• PropertyMovieClip _lockroot cho phép bạn chỉ rõ một movie clip sẽ hành động như _root cho bất cứ movie clip đã tải nó vào, hoặc ý nghĩa của _root trong một movie clip sẽ không thay đổi nếu movie clip đó được tải vào movie clip khác

• MovieClipLoader class cho phép bạn giám sát tiến trình của các tệp như chúng đang được tải vào các movie clip

• Class NetConnection và Class NetStream cho phép bạn tuôn các tệp cục bộ video (Các tệp FLV)

• Class PrintJob cho bạn (và người dùng) điều khiển nhiều hơn về trong từ FlashPlayer

•EventhandlerSound onID3 cung cấp truy cập tới dữ liệu ID3 được kết hợp với một objectSound mà chứa một tệp MP3

• PropertySound ID3 cung cấp truy cập vào metadata đó là một phần của Tệp MP3

• Class System có các object và method mới, và object System capabilities có vài properties mới

• Property TextField condenseWhite cho phép bạn bỏ đi khoảng trắng quá mức từ các trường text HTML được đáp lại trong một trình duyệt

• Property TextField mouseWheelEnabled cho phép bạn chỉ rõ cho biết nội dung của trường text sẽ cuộn khi trỏ chuột nằm trên một trường text và người dùng cuốn bánh xe chuột

• Class TextField StyleSheet cho phép bạn tạo một object kiểu sheet mà chứa những quy định định dạng text như là font size, màu, và các kiểu định dạng khác

• PropertyTextField styleSheet cho phép bạn tác động một object kiểu sheet vào một trường text

• MethodTextFormat getTextExtent () chấp nhận một tham số mới, và object bị nó trả

về, chứa một bộ phận mới

• MethodXML addRequestHeader () cho phép bạn bổ sung hoặc thay đổi HTTP yêu cầu headers (như là Content-Type hoặc SOAPAction) gửi với các actionPOST

Chế độ bảo mật mới và tệp SWF kế thừa

Quy tắc làm thế nào Flash Player xác định xem hai domain là như nhau, đã thay đổi trong Flash Player 7 Bổ sung thêm, quy tắc cho biết định rõ và làm thế nào một tệp SWF

đã phục vụ từ một HTTP domain có thể truy cập một tệp SWF, hoặc tải dữ liệu từ một

@ActionScript cho Flash6Nguyễn Anh Cường6Ban CNTT Học viện Phòng Không Không Quân@

Trang 10

HTTPS domain đã thay đổi Trong phần lớn trường hợp, những thay đổi này sẽ không hiệu ứng trừ phi bạn xuất tệp SWF đã tồn tại của bạn vào FlashPlayer 7

Tuy nhiên, nếu bạn có tệp SWF đã xuất bản dùng FlashPlayer 6 hoặc về trước mà tải

dữ liệu từ một tệp được lưu trên một server, và SWF được gọi đang chơi trong FlashPlayer 7, người dùng có thể thấy hiện một hộp thoại mà đã không hiện trước đó, đòi cho biết để được phép truy cập Bạn có thể chặn hộp thoại này từ lúc hiện, bởimột phương tiện

chính sách tệp trên site nơi mà dữ liệu được lưu Muốn biết rõ hơn về hộp thoại này, xem

“Về khả năng tương thích với trước các mô hình bảo mật Flash Player” trang 184

Bạn cũng có thể cần thực hiện một tệp chính sách nếu bạn đang dùng các thư viện chia sẻ runtime Nếu hoặc tải hoặc tệp SWF đã tải, đã xuất bản dùng FlashPlayer 7 và tải hay đã tải các tệp không được phục vụ từ cùng domain chính xác, thì dùng một tệp chính sách để cho phép truy cập Muốn biết rõ hơn về các tệp chính sách, xem “Về cho phép tải

dữ liệu domain-chéo” trang 183

Xuất các script đang tồn tại vào Flash Player 7

Như với bất cứ sản phẩm phát hành mới, Flash Player 7 hỗ trợ nhiều lệnh ActionScript hơn các vesion trước của player; bạn có thể dùng những lệnh này thực hiện script tinh vi hơn (Xem “Các yếu tố ngôn ngữ mới và đã thay đổi” trang 8.)Tuy nhiên, nếu bạn đã dùng bất cứ của những lệnh này trong những script đang tồn tại cũ của bạn, script

có thể không làm việc đúng đắn nếu bạn xuất bản nó dùng FlashPlayer 7

Ví dụ, nếu bạn có 1 kịch bản script với một tên function là Error, script có thể trình diễn để dịch thẳng nhưng có thể không chạy như mong đợi trong FlashPlayer 7, vì Errorbây giờ là một built-in class (và do đó là một từ dành riêng) ở ActionScript Bạn có thể sửa kịch bản script của bạn bằng cách đổi Tên function Error thành bất cứ gì khác, ví như là ErrorCondition

Cũng, FlashPlayer 7 cam kết thực hiện một số thay đổi mà hiệu ứng làm thế nào một tệp SWF có thể truy cập tệp SWF khác, làm thế nào biết dữ liệu ngoài đã tải, và làm thế nào những thiết lập và dữ liệu cục bộ(như là những thiết lập riêng và các object cục bộ lâu dài được chia sẻ) có thể được truy cập Cuối cùng, thói quen của vài điểm đặc trưng tồn tại

đã thay đổi

Nếu bạn có những script đang tồn tại được viết dùng FlashPlayer 6 hoặc về trước mà bạn muốn xuất bản dùng FlashPlayer 7, bạn có thể cần sửa các script cho chúng thích hợp với sự thi hành của FlashPlayer 7 và làm việc như thiết kế Những thay đổi này được thảo luận trong phần này

Sự chấp thuận ECMA-262 Edition 4

Vài thay đổi đã được thực hiện trong FlashPlayer 7 để thích hợp với sự đề xuất chặt chẽ hơn vào ECMA-262 Edition 4 (Xem www.mozilla.org/js/language/es4/index.html)

Bổ sung thêm vào các kỹ thuật chương trình trên nền class sẵn dùng ở ActionScript 2.0(Xem “Mô hình chương trình hướng đối tượng mới” trang 19), các điểm đặc trưng khác đã thêm và chắc chắn làm những thói quen đã phải thay đổi Cũng, khi xuất bản dùng FlashPlayer 7 và sử dụng ActionScript 2.0, bạn có thể thay một kiểu object thành kiểu khác Muốn biết rõ hơn, xem “Sự đổ khuôn các object” trang 36 Những khả năng này không

Trang 11

yêu cầu bạn cập nhật những script đang tồn tại; tuy nhiên, bạn có thể muốn sử dụng chúng nếu bạn xuất bản kịch bản script của bạn vào FlashPlayer 7 và sau đó tiếp tục xét lại và nâng cấp chúng

Không như thay đổi đã đề cập trên, thay đổi đã liệt kê trong bảng sau (vài thứ cũng tận dụng sự chấp thuận ECMA) có thể là nguyên nhân những script đang tồn tại làm việc khác biệt chúng đã làm trước đó Nếu bạn đã dùng những nét đặc trưng này trong những script đang tồn tại mà bạn muốn xuất bản dạng Flash Player 7, xem lại thay đổi để chắc chắn code của bạn còn làm việc như dự định hoặc định rõ xem bạn cần viết lại code của bạn không Những gì liên quan, vì undefined được đánh giá khác trong những trường hợp

cụ thể, bạn nên khởi tạo tất cả các biến trong các script mà bạn xuất ra FlashPlayer 7

Tệp SWF xuất vào Flash Player 7 Tệp SWF xuất vào đời trước đó Flash Player

Trường hợp nhạy cảm được hỗ trợ

( các tên biến mà không giống chỉ

trong hoa thường được làm sáng tỏ

như là các biến khác nhau ) Sự thay

đổi này cũng ảnh hưởng các tệp đã

tải với #include và các biến ngoài đã

tải với LoadVars load () Muốn biết

nhiều hơn , xem “ Trường hợp nhạy

cảm ”trang 25.

Trường hợp nhạy cảm không được hỗ trợ

( các tên biến mà không giống chỉ trong hoa thường được làm sáng tỏ như là cùng biến ).

Định giá undefinedở một ngữ cảnh

số trả về NaN. Định giá undefinedở một ngữ cảnh số trả về

0

trace ( DemCuaToi );//NaN trace ( DemCuaToi );// 1

Khi undefined bị chuyển vào một

string , kết quả là undefined. Khi undefined bị chuyển vào một string , kết

quả là "" ( một string rỗng ).

TenHo = " Nguyen Phuong " TenHo = " Nguyen Phuong "

lastname = " Flender " lastname = " Flender "

trace ( TenHo + middlename +

lastname );// Nguyen Phuong

undefinedFlender

trace ( TenHo + middlename + lastname );// Nguyen Phuong Thao

Khi bạn chuyển một string vào một

Giá trị logic Bool , kết quả là true nếu

string có một độ dài lớn hơn zero ;

kết quả là false khi một string rỗng

Khi bạn chuyển một string vào một Giá trị logic Bool , string là đầu tiên bị chuyển vào một number ; kết quả là true nếu số là không phải 0 , false nếu ngược lại

Khi thiết đặt độ dài của một array ,

my_array = new Array (); my_array = new Array ();

@ActionScript cho Flash6Nguyễn Anh Cường6Ban CNTT Học viện Phòng Không Không Quân@

Trang 12

Tệp SWF xuất vào Flash Player 7 Tệp SWF xuất vào đời trước đó Flash Player

my_array [ 6 " = " x " my_array [ 6 " = " x "

trace ( my_array length );// 0 trace ( my_array length );// 7

my_array [ 6xyz " = " x " my_array [ 6xyz " = " x "

trace ( my_array length );// 0 trace ( my_array length );// 7

my_array [ 6 " = " x " my_array [ 6 " = " x "

trace ( my_array length );// 7 trace ( my_array length );// 7

Quy tắc Tên - domain cho các thiết lập và dữ liệu cục bộ

Trong FlashPlayer 6, superdomain hợp pháp được dùng theo ngầm định khi truy cập những thiết lập cục bộ (những sự cho phép truy cập như là camera hoặc microphone) hoặc

dữ liệu lâu dài cục bộ (các object được chia sẻ)

Đó là, các thiết lập và dữ liệu cho tệp SWF được host lưu ở đây.xyz.com, ở đó.xyz.com, và xyz.com được chia sẻ, và tất cả được lưu ở xyz.com

Trong Flash Player 7, domain hợp pháp phải chính xác được dùng theo ngầm định

Đó là, các thiết lập và dữ liệu cho một tệp được host lưu ở đây.xyz.com được lưu ở đây.xyz.com, các thiết lập và dữ liệu cho một tệp được host lưu ở đó.xyz.com được lưu ở đó.xyz.com, và vân vân

Tệp SWF đã xuất bản cho Flash Player 7 , tệp SWF đã xuất bản cho các version về trước của Flash Player Trường hợp nhạy cảm được hỗ trợ ( Tên biến hoa thường bị dịch và phân biệt là khác nhau ) Thay đổi này cũng ảnh hưởng đến các tệp đã tải với

#include và các biến ngoài đã tải với LoadVars load () Muốn biết rõ hơn , xem “ Trường hợp nhạy cảm ”trang 25.

Trường hợp nhạy cảm không được hỗ trợ (Tên các biến mà không giống, chỉ phân biệt chữ hoa được dịch như đang được cùng một biến) Định giá undefined trong một số tình huống trả về NaN

DemCuaToi += 1 ;

trace ( DemCuaToi );//NaN

Định giá undefined trong một số tình huống trả về 0

DemCuaToi += 1 ;

trace ( DemCuaToi );// 1

Khi undefined được chuyển thành một string , kết quả là undefined.

TenHo = " Nguyen Phuong " ;

lastname = " Thao " ;

trace ( TenHo + middlename + lastname );

// Nguyen Phuong undefined Thao Khi undefined được chuyển thành một string , kết quả là ""

( một string rỗng ).

Trang 13

TenHo = " Nguyen Phuong " ;

lastname = " Thao " ;

trace ( TenHo + middlename + lastname );

// Nguyen Phuong Thao

Khi bạn chuyển một string vào một giá trị logic Bool, kết quả là true nếu string có một độ dài lớn hơn 0; kết quả là false cho một string rỗng

Khi bạn chuyển một string vào một giá trị logic Bool, string được chuyển đầu tiên vào một số; kết quả là true nếu số khác 0, false nếu ngược lại Khi thiết lập độ dài của một array, chỉ một độ dài string thiết đặt quy cách số Ví dụ, "6" làm việc nhưng " 6" hoặc

trace ( mangcuatoi_array length );// 7

Khi thiết lập độ dài của một array, thậm chí số xấu xí string thiết đặt độ dài:

mangcuatoi_array = new Array ();

trace ( mangcuatoi_array length );// 7

Một thuộc tính mới, System exactSettings, cho phép bạn chỉ rõ những quy tắc nào sử dụng Thuộc tính này được hỗ trợ cho các tệp xuất bản dùng Flash Player 6 hoặc về sau Với các tệp xuất bản dùng Flash Player 6, giá trị ngầm định là false, điều này nghĩa là superdomain hợp pháp được dùng Còn các tệp xuất bản dùng FlashPlayer 7, giá trị ngầm định là true, điều này nghĩa là domain hợp pháp phải chính xác được dùng

Nếu bạn dùng các thiết lập hoặc dữ liệu cục bộ lâu dài và muốn xuất bản một tệp SWF FlashPlayer 6 dùng FlashPlayer 7, bạn có thể cần đặt giá trị này thành false trong tệp xuất

Muốn biết rõ hơn, xem System.exactSettings trang 970

Domain - chéo và subdomain truy cập giữa tệp SWF

Khi bạn phát triển một chuỗi tệp SWF mà truyền thông với từng tệp khác—ví dụ, khi

@ActionScript cho Flash6Nguyễn Anh Cường6Ban CNTT Học viện Phòng Không Không Quân@

Trang 14

sử dụng loadMovie (), MovieClip loadMovie (), MovieClipLoader LoadClip (), hoặc các objectLocal Connection—bạn có thể dẫn (host) các movie trong các domain khác, hoặc trong các subdomain khác của một superdomain đơn

Trong các tệp xuất bản dùng FlashPlayer 5 hoặc về trước, không có hạn chế nào trên domain-chéo hoặc subdomain truy cập

Trong các tệp xuất bản dùng Flash Player 6, bạn có thể dùng handlerLocalConnection allowDomain hoặc method System security allowDomain () chỉ rõ domain-chéo được thừa nhận truy cập (Ví dụ, để cho phép một tệp ở SiteNaoDo.com được truy cập bởi một tệp ở SiteNaoDoKhac.com), và không nên thiếu lệnh để cho phép subdomain truy cập (ví dụ, một tệp ở www.SiteNaoDo.com có thể được truy cập bởi một tệp ở store.SiteNaoDo.com)

Các tệp xuất bản dùng FlashPlayer 7 thực hiện truy cập giữa tệp SWF khác nhau, từ các version về trước Đầu tiên, FlashPlayer 7 cam kết thực hiện domain hợp pháp phải chính xác thay thế của superdomain hợp pháp Vì thế, tệp được truy cập (ngay cả khi nó đã xuất bản cho một Player version về trước FlashPlayer 7) phải dứt khoát cho phép domain-chéo hoặc subdomain truy cập; topic này được thảo luận bên dưới Thứ hai, một tệp được host lưu ở một site sử dụng một giao thức bảo mật (HTTPS) phải dứt khoát cho phép truy cập từ một tệp được host lưu ở một site sử dụng một giao thức bảo mật trong (HTTP hoặc FTP); topic này được thảo luận trong phần tới (Xem “Giao thức HTTP tới HTTPS truy cập giữa tệp SWF” trang 182)

Vì Flash Player 7 cam kết thực hiện domain hợp pháp phải chính xác thay thế của superdomain hợp pháp, bạn có thể phải sửa những script đang tồn tại, nếu bạn muốn truy cập chúng từ các tệp, mà được xuất bản dùng FlashPlayer 7 (Bạn có thể còn xuất bản các tệp đã sửa dùng FlashPlayer 6.)

Nếu bạn đã dùng bất cứ câu lệnh LocalConnection allowDomain () hoặc System security allowDomain () trong các tệp của bạn và được chỉ định các site superdomain

để cho phép, bạn phải thay đổi các tham số của bạn, chỉ rõ chính xác các domain thay thế Đoạn code sau đưa ra 1 ví dụ về các kiểu thay đổi bạn, có thể phải thực hiện:

// Flash Player 6 các lệnh trong một tệp SWF ở www BatKySiteCu com

// để cho phép truy cập bởi tệp SWF mà được host lưu ở www SiteNaoDo com

// hoặc ở store SiteNaoDo com

System security allowDomain ( SiteNaoDo com " );

my_lc allowDomain = function ( sendingDomain ) {

return ( sendingDomain = = " SiteNaoDo com " );

}

// Tương ứng với các lệnh để cho phép truy cập bởi tệp SWF

// mà được xuất bản cho Flash Player 7

System security allowDomain ( www SiteNaoDo com " , " store SiteNaoDo com " );

my_lc allowDomain = function ( sendingDomain ) {

Trang 15

return ( sendingDomain = = " www SiteNaoDo com " ||

sendingDomain = = " store SiteNaoDo com " );

System security allowDomain ( store SiteNaoDo com " );

my_lc allowDomain = function ( sendingDomain ) {

return ( sendingDomain = = " store SiteNaoDo com " );

}

Tóm lại, bạn có thể phải sửa các tệp của bạn, thêm hoặc thay đổi các câu lệnh

allowDomain nếu bạn xuất bản các tệp dùng FlashPlayer 7 mà gặp những điều kiện sau:

• Bạn đã thi hành script bắt chéo-SWF (sử dụng loadMovie (), MovieClip loadMovie (),

MovieClipLoader LoadClip (), hoặc các object Local Connection)

• Tệp SWF được gọi (của bất cứ version nào) không được host lưu, ở một site sử dụng một giao thức bảo mật (HTTPS) Hoặc tệp gọi và tệp SWF được gọi, cả hai được host lưu ở các site HTTPS (Nếu chỉ tệp SWF được gọi là HTTPS, xem “Giao thức HTTP tới HTTPS truy cập giữa tệp SWF” trang 182.)

• Tệp SWF không ở trong cùng domain (ví dụ, một tệp là ở www.tenmien.com và một là ở store.tenmien.com) Bạn phải thay đổi như sau:

• Nếu tệp SWF được gọi đã xuất bản dùng Flash Player 7, có chứa hệ thống security allowDomain hoặc LocalConnection allowDomain trong tệp SWF được gọi, sử dụng chính xác tên domain phù hợp

• Nếu tệp SWF được gọi đã xuất bản dùng FlashPlayer 6, sửa tệp được gọi để thêm hoặc thay đổi mộtcâu lệnhSystem security allowDomain hoặc LocalConnection allowDomain,

sử dụng tên domain phù hợp chính xác, xem trong các ví dụ mới ở phần này Bạn có thể xuất bản tệp đã sửa, cho hoặc FlashPlayer 6 hoặc 7

• Nếu tệp SWF được gọi đã xuất bản dùng Flash Player 5 hoặc về trước, xuất tệp được gọi ra Flash Player 6 hoặc 7 và thêm một câu lệnh System security allowDomain, sử dụng tên domain phù hợp chính xác, xem trong các ví dụ mới ở phần này

(Các objectLocalConnection không được hỗ trợ ở FlashPlayer 5 hoặc về trước.)

Giao thức HTTP tới HTTPS truy cập giữa các tệp SWF

Như thảo luận trong phần trước, quy tắc cho domain-chéo và subdomain truy cập đã thay đổi trong Flash Player 7 Bổ sung thêm vào domain hợp pháp phải chính xác, bây giờ

@ActionScript cho Flash6Nguyễn Anh Cường6Ban CNTT Học viện Phòng Không Không Quân@

Trang 16

đang được thực hiện đầy đủ, bạn phải dứt khoát cho phép các tệp được host lưu ở các site

sử dụng một giao thức bảo mật (HTTPS) truy cập, bởi các tệp được host lưu ở các site sử dụng một giao thức bảo mật nội bộ Quyết định trên cho biết, tệp được gọi đã xuất bản dùng FlashPlayer 7 hoặc FlashPlayer 6, bạn phải thực hiện: hoặc một trong số các câu lệnhallowDomain (Xem “Domain-chéo và subdomain truy cập giữa tệp SWF” trang 13), hoặc dùng các câu lệnh mới là LocalConnection allowInsecure Domain hoặc System security allowInsecureDomain ()

Cảnh báo: Phương tiện một câu lệnh allowInsecureDomain () thoả hiệp bảo mật đã đưa ra

đề nghị bởi giao thức HTTPS Bạn chỉ nên thay đổi nếu bạn không thể cải tổ lại site của bạn để tất cả tệp SWF được phục vụ từ giao thức HTTPS

Đoạn code sau đưa ra 1 ví dụ về các kiểu thay đổi bạn có thể phải thực hiện:

// các lệnh ở một Flash Player 6 Tệp SWF ở https :// www SiteNaoDo com

// để cho phép truy cập bởi Flash Player 7 tệp SWF mà được host lưu

// ở http :// www SiteNaoDo com hoặc ở http :// www SiteNaoDoKhac com

System security allowDomain ( SiteNaoDoKhac com " );

my_lc allowDomain = function ( sendingDomain ) {

return ( sendingDomain = = " SiteNaoDoKhac com " );

}

// Tương ứng với các lệnh ở một tệp SWF Flash Player 7

// để cho phép truy cập bởi Flash Player 7 tệp SWF mà được host lưu

// ở http :// www SiteNaoDo com hoặc ở http :// www SiteNaoDoKhac com

System security allowInsecureDomain ( www SiteNaoDo com " ,

" www SiteNaoDoKhac com " );

my_lc allowInsecureDomain = function ( sendingDomain ) {

return ( sendingDomain = = " www SiteNaoDo com " ||

sendingDomain = = " www SiteNaoDoKhac com " );

}

Bạn cũng có thể phải thêm những dòng lệnh như thế này tới các tệp của bạn, nếu bạn hiện tại không dùng chúng Một sửa chữa có thể là cần thiết, ngay cả khi cả hai tệp ở trong cùng domain (ví dụ, một tệp trong http://www.tenmien.com bị gọi một tệp trong https://www.tenmien.com)

Tóm lại, bạn có thể phải sửa các tệp của bạn, thêm hoặc thay đổi các câu lệnh, nếu bạn xuất bản các tệp dùng FlashPlayer 7, mà gặp những điều kiện sau:

• Bạn đã thi hành script bắt chéo-SWF (sử dụng loadMovie (), MovieClip loadMovie (),

MovieClipLoader LoadClip (), hoặc các objectLocal Connection)

• Tệp gọi không được host lưu sử dụng một giao thức HTTPS, và tệp được gọi là HTTPS

Trang 17

Bạn phải thay đổi như sau:

• Nếu tệp được gọi đã xuất bản dùng Flash Player 7, có chứa System security allowInsecureDomain hoặc LocalConnection allowInsecureDomain trong tệp được gọi, sử dụng tên domain phù hợp chính xác, xem trong các ví dụ mới ở phần này

Câu lệnh này được yêu cầu, ngay cả khi tệp gọi và tệp SWF được gọi ở trong cùng domain

• Nếu tệp được gọi đã xuất bản dùng FlashPlayer 6 hoặc về trước, và cả hai tệp (gọi

và được gọi) ở trong cùng domain (ví dụ, một tệp trong http://www.tenmien.com gọi một tệp trong https://www.tenmien.com), không cần thiết sửa chữa

• Nếu tệp được gọi đã xuất bản dùng Flash Player 6, các tệp không ở trong cùng domain, và bạn không muốn xuất tệp được gọi vào FlashPlayer 7, sửa tệp được gọi để thêm hoặc thay đổi một câu lệnh System security allowDomain hoặc LocalConnection allowDomain, sử dụng tên domain phù hợp chính xác, xem trong các ví dụ mới ở phần này

• Nếu tệp được gọi đã xuất bản dùng Flash Player 6 và bạn muốn xuất tệp được gọi vào Flash Player 7, có chứa System security allowInsecureDomain hoặc LocalConnection allowInsecureDomain trong tệp được gọi, sử dụng tên domain phù hợp chính xác, xem trong các ví dụ mới ở phần này Câu lệnh này được yêu cầu, ngay cả khi cả hai tệp ở trong cùng domain

• Nếu tệp được gọi đã xuất bản dùng Flash Player 5 hoặc về trước, và cả hai tệp không ở trong cùng domain, bạn có thể làm một trong hai chúng Bạn có thể hoặc xuất tệp được gọi ra FlashPlayer 6 và thêm hoặc thay đổi mộtcâu lệnhSystem security allowDomain,

sử dụng tên domain phù hợp chính xác, xem trong các ví dụ mới ở phần này, hoặc bạn có thể xuất tệp được gọi vào Flash Player 7, và có chứa trong tệp được gọi một câu lệnh

System security allowInsecureDomain, sử dụng tên domain phù hợp chính xác, xem trong các

ví dụ mới ở phần này

Server-ngoàichính sách các tệp thừa nhận cho truy cập vào dữ liệu

Một tài liệu Flash có thể tải dữ liệu từ một tài nguyên ngoài bởi sử dụng một trong số

dữ liệu gọi tải, sau: XML load (), XML sendAndLoad (), LoadVars load (),

LoadVars sendAndLoad (), loadVariables (), loadVariablesNum (), MovieClip loadVariables (),

XMLSocket connect (), và Macromedia Flash Remoting

(NetServices createGatewayConnection)

Cũng, một tệp SWF có thể nhập các thư viện chia sẻ runtime (RSLs), hoặc các tài nguyên đã định nghĩa trong tệp SWF khác, lúc runtime Theo ngầm định, dữ liệu hoặc RSL phải định cư trong cùng domain, như tệp SWF đó tải dữ liệu ngoài hoặc media

Để làm dữ liệu và các tài nguyên trong các thư viện chia sẻ runtime sẵn dùng vào tệp SWF trong các domain khác, bạn nên dùng một tệp chính sách domain-chéo Một tệp chính sách domain-chéo là một tệp XML mà cung cấp cho server một cách chỉ ra dữ liệu của nó và các tài liệu là sẵn dùng, vào tệp SWF đã phục vụ từ các domain chắc chắn, hoặc

từ tất cả các domain Bất cứ tệp SWF đó, được phục vụ từ một domain, được chỉ định bởi tệp chính sách server, được phép truy cập từ server, dữ liệu hoặc RSLs

@ActionScript cho Flash6Nguyễn Anh Cường6Ban CNTT Học viện Phòng Không Không Quân@

Trang 18

Nếu bạn tải dữ liệu ngoài, bạn nên tạo các tệp chính sách, ngay cả khi bạn không dự kiến xuất bất cứ tệp nào vào FlashPlayer 7 Nếu bạn đang dùng RSLs, bạn nên tạo các tệp chính sách, nếu hoặc tệp gọi, hoặc tệp được gọi đã xuất bản vào FlashPlayer 7

Muốn biết rõ hơn, xem “Về cho phép tải dữ liệu domain-chéo” trang 183

Thay đổi soạn thảo ActionScript

Trình soạn thảo ActionScript đã được cập nhật để làm nó tinh vi hơn và dễ sử dụng hơn Những thay đổi này được tổng kết ở đây

Chế độ ngắt dòng Bây giờ bạn có thể dùng các lựa chọn pop-up menu trong Script pane, Debugger panel, và Output panel đặt enable hoặc disable chế độ ngắt dòng Bạn có thể cũng lật đảo chế độ ngắt dòng sử dụng pop-up menu trong các actionpanel Tổ hợp phím tắt là Control+Shift+W

Trợ giúp xem tình huống-nhạy cảm

Khi trỏ của bạn nằm trên một yếu tố ngôn ngữ ActionScript trong các actiontoolbox

hoặc trong Script pane, bạn có thể dùng View Help item trong thực đơn ngữ cảnh để hiện một trang giúp đỡ về yếu tố đó

Nhập các script Khi bạn chọn Import Script từ pop-up menu trong các actionpanel, script đã nhập được copy vào script ở trỏ thanh, trong tệp code của bạn Trong các vesion trước của Flash, nhập một script sẽ ghi đè nội dung của script đang tồn tại

Đơn- breakpoints Để thêm một điểm ngắt gỡ rối trước một dòng code trong Debugger panel hoặc Script pane của các actionpanel, bạn có thể vào lề trái Trong các vesion trước của Flash, vào lề trái, một dòng code được chọn Cách mới để chọn một dòng code Ctrl-

Các chế độ bình thường và chuyên gia không dài hơn trong các action panel Trong các vesion trước của Flash, bạn có thể làm việc trong các action panel, hoặc trong chế độ thường, (trong chế độ mà bạn đã lọc, ở các lựa chọn và các tham số để tạo code), hoặc trong chế độ chuyên gia, (trong chế độ bạn đã bổ sung các lệnh ngay tức khắc vào Script pane) Trong FlashMX2004 và FlashMXProfessional2004, bạn có thể làm việc trong các actionpanel, bởi chỉ thêm các lệnh ngay tức khắc để viết kịch bản pane Bạn có thể còn drag các lệnh từ các actiontoolbox vào Script pane hoặc dùng Button Cộng ( + ) trên Script pane để thêm các lệnh vào một script

Ghim đồng thời nhiều script bạn có thể ghim đồng thời nhiều script bên trong một tệp FLA dọc theo đáy của Script pane trong các action panel Trong các vesion trước của Flash, bạn chỉ có thể ghim một script trong một thời gian

Sơ đồ Script Bên trái của các actionpanel bây giờ chứa hai panes: các actiontoolbox

và một Sơ đồ Script mới Sơ đồ Script là một cái nhìn, theo dõi cấu trúc của tệp FLA của bạn; bạn có thể kiểm soát xuyên suốt tệp FLA của bạn, nhằm định vị Code ActionScript Cửa sổ script được hoà nhập cho việc biên tập các tệp ngoài (Chỉ Flash Professional) bạn

có thể dùng trình soạn thảo ActionScript trong một Cửa sổ script (tách từ các actionpanel)

để viết và biên soạn các tệp script ngoài Cú pháp đổi màu, chế độ mời code, và các tính năng ưu điểm khác được hỗ trợ trong cửa sổ script, và các actiontoolbox cũng sẵn dùng

Trang 19

Để hiện lên Cửa sổ script, dùng File>New và sau đó chọn kiểu của tệp ngoài bạn muốn biên soạn Bạn có thể có đồng thời nhiều tệp ngoài mở ở cùng thời gian; các tên tệp được hiện trên các tab bắt chéo trên đỉnh của Cửa sổ script.

Phần này mô tả thay đổi mà tận dụng trí thông minh của bạn để gỡ rối kịch bản script Output cửa sổ đã thay đổi ra Output panel Bây giờ bạn có thể di chuyển và cố định Output panel giống như bất cứ panel khác trong Flash

Cải thiện báo cáo lỗi ở thời gian biên dịch Bổ sung thêm, miễn là diễn xuất ngoại lệ tinh

vi hơn, ActionScript 2.0 cung cấp một số các lỗi mới thời gian-biên dịch Muốn biết rõ hơn, xem Phụ lục A, “ Các thông điệp lỗi,” trang 1206

Cải thiện cách trình bày ngoại lệ Class Error và throw và try catch finally các lệnh cho phép bạn thi hành diễn xuất ngoại lệ tinh vi hơn

Mô hình chương trình hướng đối tượng mới

Các ngôn ngữ ActionScript đã trưởng thành và phát triển từ khi nó được đưa vào vài năm trước Với từng sản phẩm phát hành mới của Flash, các từ khoá bổ sung, các object, các method, và các yếu tố ngôn ngữ khác đã thêm vào ngôn ngữ Tuy nhiên, không như các sản phẩm phát hành trước của Flash, Flash MX2004 và FlashMXProfessional2004đưa vào vài yếu tố ngôn ngữ mới, mà thực hiện chương trình hướng đối tượng theo một cách chuẩn hơn trước Vì các yếu tố ngôn ngữ này chỉ ra một sự nâng cấp đầy ý nghĩa tới hạt nhân ngôn ngữ ActionScript, chúng đưa ra một version mới của chính ActionScript: ActionScript 2.0

Các ActionScript 2.0 không phải là một ngôn ngữ mới Đúng hơn, nó gồm một hạt nhân thiết đặt của các yếu tố ngôn ngữ, để làm nó dễ hơn, để phát triển các chương trình hướng đối tượng Với mào đầu của các từ khoá như là class, interface, extend, và implements, Cú pháp ActionScript bây giờ dễ học hơn cho các nhà lập trình quen thuộc với các ngôn ngữ khác Các nhà lập trình mới, có thể học thuật ngữ chuẩn hơn để có thể áp dụng vào các ngôn ngữ hướng đối tượng khác (nghiên cứu trong tương lai)

Các ActionScript 2.0 hỗ trợ tất cả các phần tử chuẩn của ngôn ngữ ActionScript; nó cho bạn quyền viết một cách dễ dàng các script mà bám sít sao hơn vào các tiêu chuẩn sử dụng trong các ngôn ngữ hướng đối tượng khác, như là Java Các ActionScript 2.0 Sẽ là

sự quan tâm chủ yếu của các chuyên viên thiết kế Flash trung gian hoặc cao cấp, những người mà đang xây dựng các ứng dụng có yêu cầu sự thi hành của các class và subclass Các ActionScript 2.0 cũng cho phép bạn công bố object kiểu dạng một biến, khi bạn tạo nó (Xem “Việc gõ dữ liệu trực tiếp” trang 34) và cung cấp đáng kể việc cải thiện lỗi biên dịch (Xem Phụ lục A, “Các thông điệp lỗi” trang 1206)

Các yếu tố ngôn ngữ mới ở ActionScript 2.0 được liệt kê bên dưới

Trang 20

Các cơ sở lập luận then chốt về ActionScript 2.0 có chứa các điểm sau:

• Các script dùng ActionScript 2.0 (Có định nghĩa các class hoặc giao diện), phải được lưu như các tệp script ngoài, với một class đơn (Đã định nghĩa trong từng script- đó

là, các class và giao diện không thể được định nghĩa trong các actionpanel)

• Bạn có thể nhập các tệp class riêng biệt hoàn toàn (Bởi sự cất giữ chúng vào một chỗ đó được chỉ định hoặc bởi tài liệu-riêng biệt những đường dẫn kiếm tìm toàn cục và sau đó sử dụng chúng trong một script) hoặc dứt khoát (Bởi sử dụng nhập lệnh); Bạn có thể nhập các gói (Các bộ sưu tập của class, các tệp trong một thư mục) bởi sử dụng từ đại diện

• Các ứng dụng đã phát triển với ActionScript 2.0 được hỗ trợ bởi FlashPlayer 6 về sau

Cẩn thận:

Ngầm định thiết lập xuất bản cho các tệp mới đã tạo Trong Flash MX 2004 là

ActionScript 2.0 Nếu bạn đặt kế hoạch sửa một tệp FLA đang tồn tại sử dụng cú pháp ActionScript 2.0 , bảo đảm rằng tệp FLA chỉ rõ ActionScript 2.0 , trong các thiết lập xuất bản của nó Nếu không , tệp của bạn sẽ biên dịch sai , dẫu cho Flash không phát sinh các lỗi biên dịch

Muốn biết rõ hơn về sử dụng ActionScript 2.0 để viết hướng đối tượng các chương trình trong Flash, xem Chương IX “Tạo các class với ActionScript 2.0” trang 154

Trang 21

CHƯƠNG II

CÁC ACTIONSCRIPT BASICS Các ActionScript có quy tắc của văn phạm và dấu câu định rõ các ký tự và các từ được dùng, để tạo nghĩa và theo thứ tự chúng có thể được viết Ví dụ, trong Tiếng Anh, một dấu chấm câu kết thúc một câu Ở ActionScript, một dấu chấm phảy kết thúc một câu lệnh

Các quy định chung sau đây áp dụng vào tất cả ActionScript Phần lớn các điều khoản ActionScript cũng có các luật lệ riêng; quy tắc trong giới hạn riêng biệt, xem đầu vào của nó ở Chương XII, “Từ điển Các ActionScript” trang 195

Những khác nhau giữaActionScriptvà JavaScript

Các ActionScript tương tự hạt nhân ngôn ngữ sáng tác JavaScript Bạn không cần biết JavaScript để sử dụng và học ActionScript; tuy nhiên, nếu bạn biết JavaScript, ActionScript sẽ rất quen thuộc

Sách giáo khoa này không cố hướng dẫn sáng tác chung Có nhiều tài nguyên cung cấp nhiều thông tin hơn (về những ý niệm sáng tác chung và ngôn ngữ JavaScript)

• European Computers Manufacturers Association (ECMA) tài liệu ECMA-262 được bắt nguồn từ JavaScript và tiếp nhận như chuẩn quốc tế cho ngôn ngữ JavaScript Các ActionScript dựa trên cơ sở đặc điểm kỹ thuật ECMA-262

• Netscape DevEdge Online có một site JavaScript Developer Central (http://developer.netscape.com/tech/javascript/index.html) chứa nhiều tư liệu minh chứng

và các bài báo hữu ích cho việc hiểu ActionScript Phần lớn tài nguyên quý giá là Hạt nhân JavaScript Guide

Vài điểm khác giữa ActionScript và JavaScript như sau:

• ActionScript không hỗ trợ trình duyệt-riêng biệt, các object như là Document, Cửa

sổ, và Neo

• ActionScript không hoàn toàn hỗ trợ tất cả các object built-in của JavaScript

• ActionScript không hỗ trợ 1 vài cú pháp tạo của JavaScript, như câu lệnh labels

• Ở ActionScript, actioneval () chỉ có thể thi hành các tham chiếu biến

Unicode hỗ trợ choActionScript

Macromedia Flash MX 2004 và Macromedia Flash MX Professional 2004 hỗ trợ Encoding text Unicode cho ActionScript Điều này nghĩa là bạn có thể chứa text với các ngôn ngữ khác nhau trong một tệp ActionScript Ví dụ, bạn có thể đưa text với các ngôn ngữ Tiếng Anh, tiếng Nhật, và tiếng Pháp trong cùng một tệp

Bạn có thể đặt các sự ưu tiên ActionScript chỉ rõ kiểu của mã hoá để sử dụng khi nhập hoặc xuất các tệp ActionScript Bạn có thể chọn hoặc mã hoá UTF-8 hoặc Default Encode UTF-8 là định dạng 8-bit Unicode; Default Encode là mẫu mã hoá đã hỗ trợ bởi

@ActionScript cho Flash6Nguyễn Anh Cường6Ban CNTT Học viện Phòng Không Không Quân@

Trang 22

ngôn ngữ hệ thống bạn dùng hiện tại, cũng được gọi là traditional code page

Khái quát, nếu bạn nhập hoặc xuất các tệp ActionScript dùng UTF-8 format, dùng sự

ưu tiên UTF-8 Nếu bạn là nhập hoặc xuất các tệp dùng traditional code page thì dùng ngôn ngữ hệ thống của bạn, ngầm định sự ưu tiên mã hoá

Nếu text trong các kịch bản script của bạn trông không như mong đợi, khi bạn mở hoặc nhập một tệp, thay đổi sự ưu tiên mã hoá nhập Nếu bạn nhận một thông điệp cảnh báo khi xuất các tệp ActionScript, bạn có thể thay đổi sự ưu tiên mã hoá xuất hoặc tắt cảnh báo này ở các sự ưu tiên ActionScript

Để chọn các lựa chọn mã hoá text , cho nhập hoặc xuất các tệp ActionScript :

1 Trong hộp thoại Preferences (Edit>Preferences), tab ActionScript

2 Dưới các lựa chọn việc biên tập, làm một hoặc cả hai sau:

■ Ở Open/Import, chọn UTF-8 để mở hoặc nhập sử dụng mã hoá Unicode, hoặc Chọn Default Encoding để mở hoặc nhập sử dụng mẫu mã hoá của ngôn ngữ hiện tại (sử dụng bởi ngôn ngữ hệ thống của bạn)

■ For Save/Export, chọn UTF-8 để cất hoặc xuất sử dụng mã hoá Unicode, hoặc Chọn Default Encoding để cất hoặc xuất sử dụng mã hoá mẫu của ngôn ngữ hiện tại (sử dụng bởi ngôn ngữ hệ thống của bạn)

Để bật xuất mã hoá cảnh báo off hoặc on :

1 Trong hộp thoại Preferences (Edit>Preferences), tab Warnings

2 Chọn hoặc bỏ chọn Warn trên Encoding Conflicts khi xuất tệp

Các action là các câu lệnh chỉ dẫn một tệp SWF làm cái gì đó, trong khi nó đang chơi

Ví dụ, gotoAndStop () gửi Playhead vào một riêng biệt frame hoặc label Trong sách giáo khoa này, các điều khoản action câu lệnhlà có thể thay thế nhau

Boolean là mộtgiá trị true hoặc false

Các class là các kiểu dữ liệu mà bạn có thể tạo, để định nghĩa một kiểu dạng objectmới Để định nghĩa một class, bạn dùng từ khoá class trong một tệp script ngoài (không phải trong script bạn đang viết, ở các actionpanel)

Các constant là các phần tử mà không thay đổi Ví dụ, hằng Key TAB luôn luôn có nghĩa như nhau: nó chỉ ra phím Tab trên bàn phím Các constant là hữu ích để nên các giá

Trang 23

// file Circle as

class Circle {

private var BanKinh : Number

private var circumference : Number

//constructor

function Circle ( BanKinh : Number ) {

circumference = 2 * Math PI * BanKinh ;

}

}

Điều khoản constructor được dùng khi bạn tạo (thuyết minh) một object trên cơ sở một class liên quan Những dòng lệnh sau là constructors cho built-in Class Array và class Circle tuỳ hứng:

mangcuatoi_array : Array = New Array ();

my_circle : Circle = New Circle ();

Các kiểu Dữ liệu mô tả loại thông tin một biến hoặc các phần tử ActionScript có thể giữ Các kiểu dữ liệu ActionScript là String, Number, Boolean, Object, MovieClip, Function, null, và undefined Muốn biết rõ hơn, xem “Về các kiểu dữ liệu” trang 31

Các event là các sự kiện xảy ra trong khi một tệp SWF đang chơi Ví dụ, các eventkhác nhau được sinh ra khi tải một movie clip, Playhead vào một frame, người dùng

một button hay movie clip, hoặc người dùng gõ phím

Các event handler là các action đặc biệt nó quản lý các event như mouseDown hoặc load Có hai loại event handler ActionScript: các method event handler và các EventListener (Có cũng hai event handler, on () và onClip Event (), mà bạn có thể gán ngay tức khắc vào các button và các movie clip.) Trong các actiontoolbox, từng objectActionScript

mà có các method eventhandler hoặc các EventListener có một phạm trù con gọi là các event hoặc các Listener Vài lệnh có thể được dùng cả hai, như các eventhandler và như các EventListener và có chứa trong cả hai phạm trù con

Các biểu thức là bất cứ sự kết hợp hợp pháp của các symbol ActionScript chỉ ra một giá trị Một biểu thức gồm các toán tử và các toán hạng Ví dụ, trong biểu thức x + 2, x và 2

Trang 24

Những thứ nhận dạng là các tên sử dụng để chỉ ra một biến, property, object, function, hoặc method Ký tự đầu tiên phải là một chữ, dấu gạch dưới (_), hoặc ký hiệu đô la ($) Từng ký tự tiếp phải là một chữ, số, dấu gạch dưới, hoặc ký hiệu đô la Ví dụ, first_name tên của một biến

class chứa tất cả các thuộc tính và các method của class đó Ví dụ, tất cả các movie clip là các instance của Class MovieClip, nên bạn có thể dùng bất cứ method nào hoặc các properties của Class MovieClip với bất cứ instance movie clip

Các tên Instance là các tên duy nhất mà cho phép bạn đặt đích các instance movie clip

và button trong các script

Bạn dùng thuộc tính inspector để gán các tên instance vào các instance trên Stage Ví

dụ, một master symbol trong thư viện có thể gọi BoDem và hai instance symbol trong tệp SWF, có thể có các tên instance score Player 1_mc và score Player 2_mc Đoạn code sau thiết đặt một biến gọi là DiemTheThao bên trong từng instance movie clip bởi sử dụng các tên

instance:

_root score Player 1_mc DiemTheThao += 1 ;

_root score Player 2_mc DiemTheThao - = 1 ;

Bạn có thể dùng các hậu tố đặc biệt khi đặt tên các instance để các code mời (Xem

“Sử dụng các code mời” trang 62) hiện như bạn gõ code của bạn Muốn biết rõ hơn, xem

“Sử dụng các hậu tố để bắn ra các code mời” trang 60

Các từ khoá là các từ dành riêng mà có nghĩa đặc biệt Ví dụ, var là một từ khoá sử dụng để công bố các biến cục bộ Bạn không thể dùng một từ khoá bừa bãi Ví dụ, var không phải là một tên biến hợp pháp Danh sách các từ khoá, xem “Các từ khoá” trang 30 Các method là các function được kết hợp với một class Ví dụ, getBytesLoaded ()là một built-in method được kết hợp với class MovieClip Bạn có thể cũng tạo các function mà hành động như các method, cho các object trên cơ sở hoặc các class built-in, hoặc các class

mà bạn tạo Ví dụ, trong đoạn code sau, clear () trở thành một method của một objectcontroller mà bạn đã định nghĩa trước đó:

Các toán tử là điều khoản mà tính toán một giá trị mới từ một hoặc nhiều giá trị Ví

Trang 25

dụ, toán tử phép cộng (+) thêm hai hoặc nhiều hơn các giá trị với nhau để có kết quả một

giá trị mới Các giá trị mà các toán tử nhào nặn bị gọi là các toán hạng

Các tham số (cũng được gọi là các đối số) là những chỗ giữ trước cho phép bạn đưa

các giá trị vào các function

Ví dụ, functionwelcome () sau dùng hai giá trị nó nhận trong các tham số TenHo và

hobby:

function welcome ( TenHo , hobby ) {

welcomeText = " Hello , " + TenHo + " Tôi rất vui được gặp bạn " + hobby ;

}

Các gói là các thư mục mà chứa một hoặc nhiều tệp class, và định cư trong một đường

dẫn thư mục class đã định nghĩa (Xem “Hiểu đường dẫn class” trang 160)

Properties là các thuộc tính cho định nghĩa một object Ví dụ, _visible là một property

của tất cả các movie clip định nghĩa cho biết một movie clip có thể trông thấy hoặc hidden

Những đường dẫn đích là các địa chỉ có thứ bậc của các tên instance movie clip, các

biến, và các object trong một tệp SWF Name một instance movie clip trong thuộc tính

inspector của movie clip (Phần chính Timeline luôn luôn có name _root.) bạn có thể dùng

một đường dẫn đích để chỉ thị một action ở một movie clip hoặc để nhận, hay đặt giá trị

một biến Ví dụ, câu lệnh sau là đường dẫn đích vào biến AmLuong bên trong movie clip

stereoControl:

Muốn biết rõ hơn về các đường dẫn đích, xem “Các đường dẫn đích liên quan và vô

điều kiện” trong Sử dụng Flash Help

Các biến là những thứ giữ các giá trị của bất cứ kiểu data Các biến có thể được tạo,

thay đổi, và cập nhật Các giá trị chúng lưu giữ có thể được lấy lại cho dùng trong các

script Trong ví dụ sau, những thứ nhận dạng trên bên trái của các ký hiệu bằng là các biến:

var x = 5 ;

var name = " Lolo " ;

var c_MauSac = New Color ( mc instance Name );

Muốn biết rõ hơn về các biến, xem “Về các biến” trang 38

Cú pháp Như với bất cứ ngôn ngữ nào, ActionScript có quy tắc cú pháp mà bạn phải

theo để tạo các script có thể biên dịch và chạy đúng đắn Phần này mô tả các phần tử gồm

các cú pháp ActionScript

Trường hợp nhạy cảm Trong một trường hợp-nhạy cảm ngôn ngữ sáng tác, tên các

biến mà không giống, chỉ trường hợp (book và Book), được chiếu cố khác nhau tuỳ từng

trường hợp khác nhau Vì thế, lệ thường theo các sự thoả thuận ngầm, chữ hoa chữ thường

phải rõ ràng và phù hợp, như những sử dụng trong sách giáo khoa này, để nó dễ nhận ra

tên các function và các biến ở Code ActionScript

Khi bạn xuất bản các tệp dùng FlashPlayer 7 hoặc về sau, Flash cam kết thực hiện

@ActionScript cho Flash6Nguyễn Anh Cường6Ban CNTT Học viện Phòng Không Không Quân@

Trang 26

trường hợp nhạy cảm cho biết bạn đang dùng ActionScript 1 hoặc ActionScript 2.0 Điều này nghĩa là các từ khoá, các tên class, các biến, các tên method, và vân vân là tất cả trường hợp nhạy cảm

Ví dụ:

// trong tệp đích tệp Flash Player 7

// và hoặc ActionScript 1 hoặc ActionScript 2.0

// Đặt các properties của hai object khác nhau

ConMeo hilite = true ;

CONMEO hilite = true ;

// Tạo ba biến khác nhau

var myVar = 10 ;

var myvar = 10 ;

var mYvAr = 10 ;

// Không phát sinh một lỗi

var array = New Array ();

var date = New Date ();

Thay đổi này cũng ảnh hưởng đến các biến ngoài đã tải với LoadVars load ()

Bổ sung thêm, trường hợp nhạy cảm được thi hành cho các script ngoài, như là các tệp class ActionScript 2.0 hoặc các script mà bạn nhập sử dụnglệnh #include Nếu bạn xuất bản các tệp dùng FlashPlayer 7 và có các tệp ngoài đã tạo trước đó, mà bạn bổ sung vào kịch bản script của bạn bởi sử dụng câu lệnh #include, bạn nên xem lại từng tệp và xác nhận rằng, bạn đã dùng chữ hoa phù hợp từ đầu đến cuối Một cách để làm Đây là để mở tệp trong cửa sổ script (chỉ FlashProfessional) hoặc, trong một tệp FLA mới, đặt các thiết lập xuất bản của bạn vào FlashPlayer 7 và copy các nội dung tệp vào các actionpanel Rồi

sử dụng button Test Cú pháp (Xem “Kiểm tra cú pháp và dấu ngoặc” trang 65) hoặc xuất bản tệp của bạn; các lỗi bị gây ra bởi tranh chấp do đặt tên hiện ra Output panel

Khi cú pháp đổi màu được enable, các yếu tố ngôn ngữ được viết với chữ hoa chính xác là xanh dương theo ngầm định Muốn biết rõ hơn, xem “Các từ khoá” trang 30 và

“Làm nổi bật cú pháp” trang 59

Chấm cú pháp Ở ActionScript, một chấm (.) thường chỉ ra các thuộc tính hoặc phương pháp liên quan đến một object hoặc movie clip Nó được dùng để nhận ra đường dẫn đích vào một movie clip, biến, function, hoặc object

Một biểu thức chấm cú pháp bắt đầu với tên của object hoặc movie clip theo sau bởi một chấm, và kết thúc với yếu tố bạn muốn chỉ rõ

Ví dụ, property_x movie clip chỉ ra một vị trí trục x của movie clip trên Stage Biểu thức ballMC _x ám chỉproperty_x của instance movie clip ballMC

Ví dụ khác, submit là một biến đặt trong Sample movie clip, được đưa vào bên trong movie clip shoppingCart Biểu thức shoppingCart Sample submit = true thiết đặtbiến submit

Trang 27

của instanceSample thành true

Biểu diễn một method của một object hoặc movie clip theo mẫu giống nhau sau Ví

dụ,methodplay () củainstance movie clip TraiBanh_mc di chuyển Playhead trong Timelinecủa TraiBanh_mc, như trong trình bày:

_root các function s buildGameBoard ();

Bạn có thể dùng bí danh _parent để ám chỉ đến một movie clip được đưa vào trong đối tượng hiện tại Bạn có thể cũng dùng _parent để tạo một đường dẫn đích liên quan Ví

dụ, nếu movie clip ConCho_mc được đưa vào bên trong movie clip ConThu_mc, câu lệnh

sau trên instanceConCho_mc bảo ConThu_mc ngừng:

_parent stop ();

Slash cú pháp

Slash cú pháp đã dùng Trong Flash 3 và 4 để chỉ ra đường dẫn đích của một movie clip hoặc biến Cú pháp này là vẫn còn được hỗ trợ bởi FlashPlayer 7, nhưng nó không được đề nghị, và slash cú pháp không được hỗ trợ ở ActionScript 2.0 Tuy nhiên, nếu bạn đang tạo nội dung dự định rõ ràng dùng FlashPlayer 4, bạn phải dùng slash cú pháp Muốn biết rõ hơn, xem “Sử dụng slash cú pháp” trang 1219

Các dấu ngoặc nhọn

Các eventhandler ActionScript, các định nghĩa class, và các function được tập hợp với nhau vào các khối với các dấu ngoặc nhọn ({}) Bạn có thể mở ngoặc trên cùng dòng như công bố của bạn, hoặc trên dòng kế, như trong ví dụ sau Để làm code của bạn dễ đọc hơn, một ý hay để chọn một định dạng và dùng nó trước sau như một

// Event handler

on ( release ) {

myDate = New Date ();

currentMonth = myDate getMonth ();

}

on ( release )

{

myDate = New Date ();

currentMonth = myDate getMonth ();

}

// Class

@ActionScript cho Flash6Nguyễn Anh Cường6Ban CNTT Học viện Phòng Không Không Quân@

Trang 28

class Circle ( BanKinh ) {

}

class BinhPhuong ( side )

{}

// Function

circleArea = function ( BanKinh ) {

return BanKinh * BanKinh * MATH PI ;

function HamCuaToi ( Ten , Tuoi , reader ){

// code của bạn ở đây

}

Khi bạn gọi một function, có chứa bất cứ tham số đã đưa vào function trong các dấu ngoặc đơn, như hiện ở đây:

HamCuaToi ( Steve " , 10 , true );

Bạn có thể cũng dùng các dấu ngoặc đơn để đè lên các thứ tự ưu tiên ActionScripthoặc để làm các câu lệnhActionScript của bạn dễ đọc hơn (Xem “Toán tử quyền ưu tiên

và sự kết hợp” trang 43.)

Bạn cũng dùng các dấu ngoặc đơn đưa về giá trị một biểu thức bên trái dấu chấm trong chấm cú pháp Ví dụ, trong trình bày sau, các dấu ngoặc đơn là nguyên nhânđưa về giá trị mới Color ( this ) và tạo một Color object:

onClip Event ( enterFrame ) {

( new Color ( this )) setRGB ( 0xffffff );

Trang 29

Nếu bạn không dùng các dấu ngoặc đơn, bạn phải thêm một câu lệnh đưa về giá trị biểu thức:

onClip Event ( enterFrame ) {

myColor = New Color ( this );

Để chỉ ra một dòng hoặc một đoạn là một lời chú, đặt trước lời chú với hai dấu chéo lên (//):

on ( release ) {

// tạo mới Object Date

myDate = New Date ();

currentMonth = myDate getMonth ();

// convert số tháng to tên tháng

monthName = calcMonth ( currentMonth );

year = myDate getFullYear ();

currentDate = myDate getDate ();

Để tạo một khối lời chú, đặt/* ở đầu các dòng chú giải và * /ở cuối

Ví dụ, khi script sau chạy, trong khối lời chú không có code ở đó thực hiện:

// code dưới chạy

var x : Number = 15 ;

@ActionScript cho Flash6Nguyễn Anh Cường6Ban CNTT Học viện Phòng Không Không Quân@

Trang 30

var y : Number = 20 ;

// code dưới không chạy

/ *

on ( release ) {

// tạo mới Object Date

myDate = New Date ();

currentMonth = myDate getMonth ();

// convert số tháng thành tên tháng

monthName = calcMonth ( currentMonth );

year = myDate getFullYear ();

currentDate = myDate getDate ();

}

* /

// Code dưới chạy

var Ten : String = " Tên tôi là " ;

var Tuoi : Number = 20 ;

Các từ khoá Các từ dự trữ ActionScript riêng biệt dùng bên trong ngôn ngữ, nên bạn không thể dùng chúng như những thứ nhận dạng, như là các tên biến, function, hoặc label Bảng sau liệt kê tất cả các từ khoá ActionScript:

Các constant Một hằng là một property giá trị của nó không bao giờ thay đổi

Ví dụ, các hằng BACKSPACE, ENTER, QUOTE, RETURN, SPACEBAR, và TAB là các properties của object phím và quy vào các phím trên bàn phím Để kiểm tra cho biết người dùng là nhấn phím Enter, bạn có thể dùng câu lệnh sau:

if ( Key getCode () = = Key ENTER ) {

alert = " Bạn sẵn sàng chơi? " ;

controlMC gotoAndStop ( 5 );

}

Trang 31

Về các kiểu dữ liệu

Một kiểu dữ liệu mô tả loại thông tin một biến hoặc các phần tử ActionScript có thể giữ Có hai loại kiểu dữ liệu built-in Flash: nguyên thuỷ và tham chiếu Các kiểu dữ liệu nguyên thuỷ— String, Number, và Boolean—có một hằng giá trị và vì thế có thể giữ giá trị hiện thời của yếu tố chúng chỉ ra Các kiểu dữ liệu tham chiếu—MovieClip và Object—

có các giá trị mà có thể thay đổi vì thế chứa các tham chiếu tới giá trị hiện thời của yếu tố Các biến chứa các kiểu dữ liệu nguyên thuỷ đối xử khác nhau trong các hoàn cảnh chắc chắn hơn các kiểu chứa tham chiếu này (Xem “Sử dụng các biến trong một chương trình”trang 38.) Có cũng hai kiểu dữ liệu đặc biệt: nullundefined

Trong Flash, bất cứ built-in object không một kiểu dữ liệu nguyên thuỷ hoặc một kiểu dữ liệu movie clip, như là Array hoặc Math, là kiểu dữ liệu của Object

Từng kiểu dữ liệu có quy định riêng của nó và được mô tả trong các topic sau:

Khi bạn gỡ rối script, bạn có thể cần định rõ kiểu dữ liệu của một biểu thức hoặc biến

để hiểu vì sao nó đang được đối xử một cách chắc chắn Bạn có thể làm điều này với toán

tửtypeof (Xem “Xác định một kiểu dữ liệu của Item” trang 33)

Bạn có thể chuyển một kiểu dữ liệu thành kiểu khác, sử dụng một trong số functionchuyển đổi sau: Array (), Boolean (), Number (), Object (), String ()

String Một string là một chuỗi của các ký tự như là các chữ, các số, và các dấu câu Bạn vào các string trong một câu lệnhActionScript bởi bao chúng trong nháy đơn hoặc nháy nháy đúp

Các string được xem xét như các ký tự thay thế các biến Ví dụ, trong trình bày sau,

" L7 "là một string:

favoriteBand = " L7 " ;

Bạn có thể dùng toán tử (+) để nối, hoặc ghép, hai string Các ActionScript coi các khoảng trống ở nơi bắt đầu hoặc kêt thúc của một string như một phần chữ cái của string Biểu thức sau gồm có một khoảng trống sau khi dấu phảy:

greeting = " Welcome , " + TenHo ;

Để gộp một dấu nháy nháy vào một string, đặt trước nó với một ký tự chéo xuống (\) Điều này được gọimột ký tự escaping Có các ký tự khác mà không thể được miêu tả ở ActionScript, ngoại trừ bởi các chuỗi Escape đặc biệt Bảng sau cung cấp tất cả các ký tự escape ActionScript:

@ActionScript cho Flash6Nguyễn Anh Cường6Ban CNTT Học viện Phòng Không Không Quân@

Trang 32

Escape chuỗi Character

\b Ký tự Backspace ( ASCII 8 )

\f ký tự Form - nguyên liệu ( ASCII 12 )

\n Ký tự Line - nguyên liệu ( ASCII 10 )

\r Ký tự Enter ( ASCII 13 )

\t Ký tự Tab ( ASCII 9 )

\000 - \377 Một byte được chỉ rõ trong bát phân

\x00 - \xFF Một byte được chỉ rõ trong thập lục phân

\u0000 - \uFFFF Một ký tự 16 - bit Unicode được chỉ rõ trong thập lục phân

Number Kiểu dữ liệu Number là một số phảy động đúp-độ chính xác Bạn có thể nhào nặn các số sử dụng các toán tử số học phép cộng (+), phép trừ (-), phép nhân (*), phép chia (/), modulo (%), gia tăng (++), và giảm bớt (- -) Bạn có thể cũng dùng các method của các class built-in Math và Number để nhào nặn các số Ví dụ sau dùng methodsqrt ()(căn bậc hai) để trả về căn bậc hai của số 100:

Math sqrt ( 100 );

Muốn biết rõ hơn, xem “Các toán tử số” trang 43

Boolean Một giá trị logic Bool là một trong hai, hoặc true hoặc false Các ActionScriptcũng chuyển các giá trị true và false thành 1 và 0 khi thích hợp Phần lớn các giá trị Bool thường xuyên sử dụng với các toán tử logic ở các câu lệnhActionScript so sánh để điều khiển luồng của một script Ví dụ, trong script sau, tệp SWF chơi nếu biến MatKhau là true:

onClip Event ( enterFrame ) {

if ( TenNguoiSD = = true && MatKhau = = true ){

play ();

}

}

Xem “Sử dụng các function nội bộ” trang 49 và “Các toán tử logic” trang 45

ObjectMột object là một bộ sưu tập của các properties Từng property có một tên và một giá trị Giá trị của một property có thể là bất cứ kiểu dữ liệu Flash, thậm chí kiểu dữ liệu object Điều này cho phép bạn sắp đặt các object bên trong từng cái khác, hoặc lồng chúng Chỉ rõ các object và các properties của chúng, bạn dùng toán tử chấm (.) Ví dụ, trong đoạn code sau, GioDaLamViec là một property của weeklyStats, là một property của employee: employee weeklyStats GioDaLamViec

Trang 33

Bạn có thể dùng các objectActionScript built-in để truy cập và nhào nặn các loại của thông tin riêng rẽ Ví dụ, Object Math có các method mà thi hành các phép toán trên các số bạn đưa vào chúng Ví dụ này dùngmethodsqrt ():

squareRoot = Math sqrt ( 100 );

Các ActionScript MovieClip object có các method mà cho phép bạn điều khiển các

instance symbol movie clip trên Stage Ví dụ này dùng các methodplay ()và nextFrame ():

Bạn có thể cũng tạo các object tuỳ hứng để tổ chức thông tin trong ứng dụng Flashcủa bạn Để thêm phạm vi hoạt động liên thông vào một ứng dụng với ActionScript, bạn sẽ cần nhiều, các mẩu thông tin khác nhau: ví dụ, bạn có thể cần một tên người dùng, tốc độ của một trái bóng, các tên của các item trong một thùng đồ, số các frame đã tải, Zip code của người dùng, hoặc phím đã bị nhấn cuối cùng Tạo các object tuỳ hứng cho phép bạn tổ chức thông tin này vào các nhóm, đơn giản hoá kịch bản script của bạn, và dùng lại kịch bản script của bạn

MovieClip Các movie clip là các symbol mà có thể chơi hoạt hình trong một ứng dụng Flash Chúng chỉ là kiểu dữ liệu mà ám chỉ một yếu tố graphic Kiểu dữ liệu MovieClip cho phép bạn điều khiển các symbol movie clip sử dụng các phương pháp của Class MovieClip Bạn gọi các phương pháp sử dụng toán tử chấm (.), như hiện ở đây:

my_mc startDrag ( true );

CHA_mc getURL ( http :// www khkt.net / support / + product );

NullKiểu dữ liệu null chỉ có một giá trị, null Giá trị này nghĩa là “không có giá trị nào”—đó

là, một sự thiếu của data Giá trị null có thể được dùng trong các hoàn cảnh đa dạng Đây là vài ví dụ:

• Để chỉ ra một biến chưa nhận giá trị

• Để chỉ ra một biến khôngchứa một giá trị nữa

• Như giá trị trả về của một function, để chỉ ra không có giá trị nào sẵn dùng để được trả về bởi function

• Như một tham số vào một function, để chỉ ra một tham số đang bị bỏ quên

Undefined

Kiểu dữ liệu undefined có một giá trị, undefined, và được dùng cho một biến mà không được gán giá trị

Xác định một kiểu dữ liệu của Item

Trong khi kiểm tra và gỡ rối chương trình của bạn, bạn có thể tìm ra các vấn đề mà dường như liên quan tới các kiểu dữ liệu của các item khác nhau Trong những trường hợp này, bạn có thể muốn định rõ một kiểu dữ liệu của Item Để làm điều đó, dùng toán tửtypeof, như trong ví dụ này:

trace ( typeof (TenBien));

@ActionScript cho Flash6Nguyễn Anh Cường6Ban CNTT Học viện Phòng Không Không Quân@

Trang 34

Muốn biết rõ hơn về kiểm tra và gỡ rối, xem Chương III, “Viết và Debug các script,”trang 53

Việc được quy cho các kiểu dữ liệu vào các yếu tố

Flash tự động gán các kiểu dữ liệu vào các loại sau của các yếu tố ngôn ngữ, như thảo luận trong phần tới, “Tự động việc gõ dữ liệu”:

• Các biến

• Các tham số đã đưa vào một function, method, hoặc class

• Các giá trị trả về từ một function hoặc method

• Các object đã tạo như các subclass của các class đang tồn tại

Tuy nhiên, bạn có thể cũng dứt khoát gán các kiểu dữ liệu vào các item, có thể giúp chặn hoặc chẩn đoán chắc chắn các lỗi trong các script kịch bản của bạn Muốn biết rõ hơn, xem “Việc gõ dữ liệu trực tiếp” trang 34

Tự động nhập liệu

Trong Flash, bạn không cần định nghĩa dứt khoát một item đang giữ một số, một string, hoặc kiểu dữ liệu khác Flash định đoạt kiểu dữ liệu của một item khi nó được gán: var x = 3 ;

Trong biểu thức var x = 3, Flash đưa về giá trị yếu tố phía phải của toán tử và định đoạt nó là kiểu dữ liệu số Một gán về sau có thể thay đổi kiểu của x; Ví dụ, câu lệnh x =

" hello "thay đổi kiểu của x là một string Một biến mà không được định nghĩa một giá trị có một kiểu dạng undefined

Các ActionScript chuyển các kiểu dữ liệu tự động khi một biểu thức yêu cầu nó Ví

dụ, khi bạn đưa vào một giá trị vào actiontrace (), trace () tự động chuyển giá trị vào một string và gửi nó ra Output panel Trong các biểu thức với các toán tử, ActionScript chuyển các kiểu dữ liệu như nhu cầu; ví dụ, khi sử dụng với một string, toán tử + trông mong toán hạng khác để được một string

" Dòng kế , thứ " + 7

Các ActionScript chuyển số 7 thành string "7 " và thêm nó vào cuối của string đầu tiên, kết quả ở trong string sau:

" Dòng kế , thứ 7 "

Việc gõ dữ liệu trực tiếp

ActionScript 2.0 cho phép bạn công bố dứt khoát object kiểu dạng một biến khi bạn tạo nó; điều này được gọi việc gõ dữ liệu chính xác Vì kiểu dữ liệu không phù hợp bắn ra các lỗi biên dịch, bản đánh máy dữ liệu trực tiếp giúp bạn chặn bằng việc quy kiểu dạng dữ liệu sai vào một biến đang tồn tại Để gán một kiểu dữ liệu rõ ràng vào một item, chỉ rõ kiểu của nó sử dụng từ khoá var và sau-dấu hai chấm, cú pháp:

// gõ trực tiếp của một biến hoặc object

var x : Number = 7 ;

Trang 35

var NgaySinh : Date = New Date ();

// gõ trực tiếp của các tham số

function welcome ( TenHo : String , Tuoi : Number ){

}

// gõ trực tiếp của tham số và giá trị trả về

function BinhPhuong (x: Number ): Number {

var SinhVien : SinhVien = New SinhVien ();

Bạn có thể cũng chỉ rõ các object là kiểu Function hoặc Void

Sử dụng gõ trực tiếp giúp bảo đảm rằng bạn không tình cờ gán một kiểu dạng giá trị sai vào một object Flash kiểm tra các lỗi gõ sai ở thời gian biên dịch

Ví dụ, giả sử bạn gõ đoạn code sau:

// trong tệp SinhVien AS class

class SinhVien {

var status : Boolean ;// property của các object SinhVien

}

// ở một script

var SinhVienThachHoai : SinhVien = New SinhVien ();

SinhVienThachHoai status = " đã thu nạp " ;

Khi Flash biên dịch script này, một lỗi “Kiểu không phù hợp” được sinh ra

Lợi thế khác của bản đánh máy dữ liệu trực tiếp là FlashMX2004 tự động hiện các code mời cho các object built-in khi chúng được gõ mẹo Muốn biết rõ hơn, xem “Hoàn toàn gõ các object để bắn ra các code mời” trang 59

Các tệp xuất bản sử dụng ActionScript 1 không tôn trọng những nhiệm vụ bản đánh máy dữ liệu trực tiếp ở thời gian biên dịch Do đó, việc được quy cho kiểu dạng giá trị sai vào một biến mà bạn đã gõ mẹo không phát sinh một lỗi biên dịch

var x : String = " abc "

x = 12 ;// không lỗi trong ActionScript 1 , lỗi gõ sai trong ActionScript 2

@ActionScript cho Flash6Nguyễn Anh Cường6Ban CNTT Học viện Phòng Không Không Quân@

Trang 36

Lý do này là khi bạn xuất bản một tệp cho ActionScript 1, Flash hiểu một câu lệnh

như là var x: String = " abc " như slash cú pháp, đúng hơn là như gõ trực tiếp (Các ActionScript 2.0 không hỗ trợ slash cú pháp.) Thói quen này có kết quả trong một objectđược gán vào một biến gõ sai, nguyên nhân trình biên dịch cho phép method gọi bất hợp pháp và property undefined các tham chiếu đưa vào, không được thông báo suốt Vì thế, nếu bạn có phương tiện bản đánh máy dữ liệu trực tiếp, chắc chắn là bạn xuất bản các tệp cho ActionScript 2.0

Sự đổ khuôn các object

Các ActionScript 2.0 cho phép bạn thay một kiểu dữ liệu thành kiểu khác Toán tửthay mà Flash dùng mang mẫu của một function gọi và là đồng hành với rõ ràng coercion, như được chỉ định trong sự đề xuất của ECMA-262 Edition 4 Sự đổ khuôn cho phép bạn khẳng định một object là một kiểu nào đó để khi kiểm tra gõ xảy ra, trình biên dịch coi object như đang có một thiết đặt của các properties, mà nó không chứa kiểu khởi tạo Điều này có thể là hữu ích, ví dụ, khi lặp đi lặp lại qua một array của các object mà có các kiểu không giống nhau

Trong các tệp xuất bản dùng Flash Player 7 hoặc về sau, thay các câu lệnh hỏng lúc runtime trả về null Trong các tệp xuất bản dùng Flash Player 6, không runtime hỗ trợ cho các khuôn bị hỏng được thi hành

Cú pháp cho sự đổ khuôn là type(item), nơi mà bạn muốn trình biên dịch đối xử bình thường nếu kiểu dữ liệu của item là kiểu Sự đổ khuôn về bản chất là gọi một function, và function gọi trả về null nếu thứ thay hỏng Nếu thứ thay thành công, function gọi trả về object gốc Tuy nhiên, trình biên dịch không phát sinh kiểu các lỗi sai khi bạn thay các item vào các kiểu dữ liệu mà bạn đã tạo, trong các tệp class ngoài, ngay cả khi thứ thay hỏng lúc runtime

var VetChamTron : ConCho = New ConCho ();

var TamThoi : ConMeo = ConMeo ( VetChamTron );// khẳng định mà một object ConCho là của kiểu ConMeo

TamThoi meow ();// không làm bất cứ cái gì , nhưng lỗi biên dịch không hoặc

Trong hoàn cảnh này, bạn đã khẳng định với trình biên dịch mà TamThoi là một object ConMeo, và, vì thế, trình biên dịch thừa nhận TamThoi meow ()là một câu lệnh hợp pháp Tuy nhiên, trình biên dịch không biết mà thứ thay sẽ hỏng (đó là, bạn đã cố để thay một ConCho object vào một kiểu Con mèo), không nên có lỗi trong thời gian biên dịch xảy ra Nếu bạn có chứa một kiểm tra trong kịch bản script của bạn để chắc chắn rằng thứ

Trang 37

thay thành công, bạn có thể tìm kiểu các lỗi sai lúc runtime

var VetChamTron : ConCho = New ConCho ();

var TamThoi : ConMeo = ConMeo ( VetChamTron );

trace ( TamThoi );// hiện null ở runtime

Bạn có thể thay một biểu thức vào một giao diện Nếu biểu thức là một object mà cam kết thực hiện giao diện hoặc có một class cơ sở mà cam kết thực hiện giao diện, objectđược trả về Nếu không, nullđược trả về

Ví dụ sau chỉ ra các kết quả của sự đổ khuôn kiểu các object built-in Như dòng đầu tiên trong with ( các kết quả )khối cho thấy, một thay bất hợp pháp—trong trường hợp này,

sự đổ khuôn một string vào một movie clip— trả về null Như hai dòng cuối cùng hiện, sự

đổ khuôn thành null hoặc undefined trả về undefined

var mc : MovieClip ;

var arr : Array ;

var bool : Boolean ;

var num3 : Number ;

var obj : Object ;

var str : String ;

_root createTextField ( các kết quả " , 2 , 100 , 100 , 300 , 300 );

with ( các kết quả ){

text = " type MovieClip : " +( typeof MovieClip ( str ));// trả về null

text += " \ntype object : " +( typeof Object ( str ));// trả về object

text += " \ntype Array : " +( typeof Array ( num3 ));// trả về object

text += " \ntype Boolean : " +( typeof Boolean ( mc ));// trả về boolean

text += " \ntype String : " +( typeof String ( mc ));// trả về string

text += " \ntype Number : " +( typeof Number ( obj ));// trả về number

text += " \ntype Function : " +( typeof Function ( mc ));// trả về object

text += " \ntype null: " +( typeof null( arr ));// trả về undefined

text += " \ntype undefined: " +( typeof undefined( obj ));// trả về undefined

}

// Các kết quả trong Output panel

type MovieClip :null

type object : object

type Array : object

type Boolean : boolean

type String : string

type Number : number

@ActionScript cho Flash6Nguyễn Anh Cường6Ban CNTT Học viện Phòng Không Không Quân@

Trang 38

type Function : object

type null:undefined

type undefined:undefined

Bạn không thể đè lên các kiểu dữ liệu nguyên thuỷ như là Boolean, Date, và Number với một toán tử thay trùng tên

Khởi tạo một biến giúp bạn theo dõi và so sánh giá trị của biến như tệp SWF chơi Các biến có thể giữ bất cứ kiểu dạng dữ liệu (Xem “Về các kiểu dữ liệu” trang 31) Kiểu một biến chứa dữ liệu ảnh hưởng đến việc làm thế nào thay đổi giá trị của biến khi nó được gán trong một script

Kiểu thông tin được gõ mà bạn có thể lưu trong một biến có chứa một URL, một tên người dùng, kết quả của một phép toán, số lần một event đã xảy ra, hoặc cho biết một button đã bị Từng tệp SWF và instance movie clip có một thiết đặt biến, với từng biến đang có, một giá trị độc lập của các biến trong tệp SWF khác hoặc các movie clip

Để kiểm tra giá trị của một biến, dùng actiontrace () để gửi giá trị ra Output panel Ví

dụ, trace ( GioDaLamViec ) gửi giá trị của biến GioDaLamViec ra Output panel trong chế độ kiểm tra Bạn có thể cũng kiểm tra và đặt giá trị các biến trong Debugger trong chế độ kiểm tra Muốn biết rõ hơn, xem “Sử dụng câu lệnh trace” trang 77 và “Hiện và sửa các biến” trang 70

Đặt tên một biến

Một tên biến phải theo những quy tắc này:

• Nó phải là một dạng (Xem “Thuật ngữ” trang 24)

• Nó không thể là một từ khoá hoặc một từ ActionScript như là true, false, null, hoặc

hello_str = New String ();

Trang 39

trace ( hello_str length );// trả về 0

String = " hello " ;// Cho một biến tên trùng như một built - in class

hello_str = New String ();

trace ( hello_str length );// trả về undefined

Trình soạn thảo ActionScript hỗ trợ các code mời cho các class built-in và cho các biến, trên cơ sở các class này Nếu bạn muốn Flash cung cấp các code mời cho một kiểu object liên quan đó được gán vào một biến, bạn có thể gõ mẹo biến hoặc tên biến sử dụng một hậu tố riêng biệt

Ví dụ, giả sử bạn gõ đoạn code sau:

var CacThanhVien : Array = New Array ();

CacThanhVien

Ngay khi bạn gõ dấu chấm (.), Flash hiện một danh sách các method và các properties sẵn dùng cho các object Array Muốn biết rõ hơn, xem “Viết code mà bắn các code mời” trang 60

Phạm vi và công bố các biến

Một phạm vi của biếnám chỉ vùng mà biến được biết và có thể được tham chiếu Có

ba kiểu biến phạm vi ở ActionScript:

• Các biến cục bộ sẵn dùng bên trong thân function là công khai (phác hoạ bởi các dấu ngoặc nhọn)

• Các biến Timeline là sẵn dùng vào bất cứ script trên Timeline

• Các biến toàn cục và các function có thể trông thấy ở mỗi lầnline và phạm vi trong tài liệu của bạn

Ghi nhớ:

Các class ActionScript 2.0 mà bạn tạo , hỗ trợ các phạm vi public , private , và biến tĩnh static Muốn biết nhiều hơn , xem “ Điều khiển bộ phận truy cập ” trang 164

và “ Tạo Class Members ”trang 165.

Các biến cục bộ Để công bố các biến cục bộ, dùng câu lệnh var bên trong thân của một function Một biến cục bộ thuộc phạm vi khối và hết hiệu lực ở cuối khối Một biến cục bộ không công khai bên trong một khối, hết hiệu lực ở cuối script của nó

Ví dụ, các biến i và j thường dùng như các bộ đếm vòng lặp Trong ví dụ sau, i được dùng như một biến cục bộ; nó tồn tại chỉ bên trong functionTaoNgay ():

function TaoNgay () {

var i ;

for ( i = 0 ; i < MangThang [ month ]; i ++) {

_root Days attachMovie ( NgayHien " , i , i + 2000 );

_root Days [ i ] num = i + 1 ;

_root Days [ i ] _x = column * _root Days [ i ] _width ;

@ActionScript cho Flash6Nguyễn Anh Cường6Ban CNTT Học viện Phòng Không Không Quân@

Trang 40

_root Days [ i ] _y = row * _root Days [ i ] _height ;

Thói quen tốt để sử dụng các biến cục bộ trong thân của một function, để function có thể hành động như một mẩu code độc lập Một biến cục bộ chỉ có thể thay đổi bên trong khối code riêng của nó Nếu một biểu thức trong một function dùng một biến toàn cục, cái

gì đó bên ngoài function cũng có thể thay đổi được giá trị của nó, sẽ thay đổi function Bạn có thể gán một kiểu dữ liệu vào một biến cục bộ khi bạn định nghĩa nó, giúp chặn bạn chống việc được quy cho kiểu dạng dữ liệu sai vào một biến đang tồn tại Muốn biết rõ hơn, xem “Việc gõ dữ liệu trực tiếp” trang 34

Các biến Timeline Các biến Timeline là sẵn dùng tới bất cứ script trên Timeline Để công bố các biến Timeline, khởi tạo chúng trên bất cứ frame nào trong Timeline Đừng quên khởi tạo biến trước khi thử truy cập nó trong một script

Ví dụ, nếu bạn đặt code var x = 10 ;trên Frame 20, một script đã gắn tới bất cứ frame trước Frame 20 không thể truy cập vào biến

Các biến toàn cục

Các biến toàn cục và các function có thể trông thấy ở mỗi lầnline và phạm vi trong tài liệu của bạn Để tạo một biến với phạm vi toàn cục, dùngdạng _Global trước tên biến, và không dùng var =cú pháp Ví dụ, đoạn code sau tạo biến toàn cục TenToi:

var _Global TenToi = " NguyenCuong " ;// cú pháp sai

_Global TenToi = " NguyenCuong " ;

Tuy nhiên, nếu bạn khởi tạo một biến cục bộ tên trùng với một biến toàn cục, bạn không thể truy cập vào biến toàn cục trong khi bạn ở trong phạm vi của biến cục bộ:

_Global BoDem = 100 ;

BoDem ++;

trace ( BoDem );// hiện 101

function DemXem (){

Ngày đăng: 30/10/2014, 01:00

HÌNH ẢNH LIÊN QUAN

Hình 1. Vị trí các bộ phận thành phần của Flash - GIÁO TRÌNH FLASH ACTION SCRIP Nguyễn Anh Cường
Hình 1. Vị trí các bộ phận thành phần của Flash (Trang 57)
Hình chữ nhật vàng quanh nó. - GIÁO TRÌNH FLASH ACTION SCRIP Nguyễn Anh Cường
Hình ch ữ nhật vàng quanh nó (Trang 668)
Bảng này li ệt kê tất cả các toán tử của ActionScript và sự kết hợp của chúng, từ - GIÁO TRÌNH FLASH ACTION SCRIP Nguyễn Anh Cường
Bảng n ày li ệt kê tất cả các toán tử của ActionScript và sự kết hợp của chúng, từ (Trang 1210)
Bảng danh sách sau tất cả các phím trên một bàn phím chuẩn và tương  ứng với  ASCII các giá trị code phím mà được dùng để nhận ra các phím ở ActionScript - GIÁO TRÌNH FLASH ACTION SCRIP Nguyễn Anh Cường
Bảng danh sách sau tất cả các phím trên một bàn phím chuẩn và tương ứng với ASCII các giá trị code phím mà được dùng để nhận ra các phím ở ActionScript (Trang 1212)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w