Tải bản đầy đủ

Ebook Thực hành ActionScript 3.0

LỜI NÓI ĐẦU
Khi quyết định nếu cuốn sách trong tay bạn sẽ là tài nguyên tốt cho thư viện của bạn. Nó có
thể giúp bạn biết tại sao chúng tôi, những tác giả đã viết ra cuốn sách đặc biệt này. Chúng tôi
là hai lập trình viên sử dụng Flash trong toàn bộ mọi ngày làm việc của chúng tôi, nhưng
chúng tôi cũng là những giáo viên. Kết hợp, chúng tôi đã dạy hàng nghìn sinh viên ở nhiều
trường đại học, dễ dàng quá trình đào tạo, các hội nghị, và lúc đó chúng tôi đã chia sẻ một số
king nghiệm quan trọng. Chúng tôi đã nhất quán nói rằng nhiều đặc trưng cuốn sách
ActionScript phù hợp với nhóm người bắt đầu.
Trước tiên chúng tôi đã rất ngạc nhiên thực sự đã vượt quá quan điểm, nhưng sau đó chúng
tôi đã nhận thức rõ rằng chúng tôi không đủ thông tin để tạo thành các đánh giá. Chúng tôi
không sử dụng tài nguyên người mới bắt đầu trong công việc của chúng tôi và chỉ có chương
trình giảng dạy cá nhân để dựa vào. Nên, chúng tôi bắt đầu nghiên cứu làm thế nào chúng tôi
có thể lấp đầy sự thiếu hụt này và cung cấp một cuốn sách cho sinh viên của chúng tôi để
thực sự giúp họ bên ngoài lớp học. Chúng tôi đã nói với rất nhiều sinh viên, các nhóm người
sử dụng, và những người dạy và đã bắt đầu phác thảo ra một cuốn sách mà chúng tôi nghĩ
đưa ra những gì chúng tôi đã học được trong thực tiễn.
Khi ActionScript 3.0 được phát hành, nhóm số người quan tâm tăng đột ngột. Một loạt các
phản ứng từ tình trạng bị kích động đến kính sợ, như việc học ActionScript 3.0 bẻ cong đi sẽ
trở nên dễ dàng. Nói về Platform Flash tách mảnh thành Flex (“người phát triển”) và Flash
(“Người thiết kế”) gây cho nhiều người thiết kế và người mới lập trình không rõ ràng cho
đến bây giờ về tương lai của chúng. Khi Flash CS3 Professional vừa được phát hành, nhu cầu

cần cho tài nguyên hướng dẫn không được giải quyết (và trong nhiều trường hợp, còn tăng
thêm), và chúng tôi đã biết nó là thời gian để phát triển cuốn sách mà bạn đang nắm giữ.
Chúng tôi hy vọng cuốn sách này sẽ giúp những người dùng Flash từ những người muốn tìm
hiểu đến những người hoảng sợ, từ nhưng người đang háo hức tới nhưng người đã có kinh
nghiệm nắm lấy khả năng và hiệu xuất của ActionScript 3.0. Chúng tôi hy vọng những trang
này sẽ làm giảm đi sự chuyển sang từ mọi thứ ở phiên bản trước đó, bất cứ thứ gì,
ActionScript phải được sử dụng, cái lớn nhất trong cấu trúc là thay đổi từ ngôn ngữ khi bắt
đầu chính nó.
Cuốn sách này được hướng vào những người thiết kế và phát triển Flash với ActionScript
trong thời gian đầu, cũng như người mới lập trình có thể tìm thấy sự nhạy bén để hiểu biết
ActionScript 3.0. Mặc dù chúng tôi cảm thấy bìa cuốn sách khá là cơ bản, cả sự hiểu biết về
giao diện Flash và số lượng nhỏ của kinh nghiệm viết kịch bản nắm được.
Chúng tôi tin rằng chúng tôi đã giải thích rõ ràng trong tài liệu này và đủ ngắn gọn để người
đọc bắt đầu, nên nếu bạn là người mới bước vào lập trình, chúng tôi chào mừng bạn! Tuy
nhiên, nếu bạn có một chút trọng yếu, chúng tôi khuyên bạn nên lướt qua chương 2 để xem
nếu bạn nghĩ rằng chúng tôi đã cung cấp đủ quy tắc cốt lõi lập trình để lấp đầy lỗ trống trong
sự hiểu biết của bạn, nhưng hai chương đầu cung cấp cở sở để cho xây dựng những chương
khác.
Cũng vậy, nếu bạn là lập trình viên tương đối có kinh nghiệm với ActionScript 2.0, có thể
bạn muốn nhìn qua một vài chương thích thú trước khi quyết định dù cuốn sách này là dành


cho bạn hay không. Chúng tôi làm nổi bật vấn đề chuyển từ ActionScript 2.0 sang
ActionScript 3.0, nhưng muốn bạn vui vẻ với đặc điểm và không gặp khó khăn với phương
pháp chúng tôi đã thông qua trước khi bạn quyết định tin dùng cuốn sách này. Chúng tôi cố
gắng để dạy các nguyên tắc cơ bản sau mỗi chương trong một mẫu, số chương, và tổng số
trang đã phân loại dễ dàng. Trong nhiều trường hợp, cần một khoảng thời gian để đọc xuyên
xuốt 2 phần tiếp theo mới chắc chắn rằng đây là những điều mà cuốn sách mang lại cho bạn.
Không giống như các cuốn sách ActionScript 3.0 khác mà chúng tôi đã từng xem, cuốn sách
này không dựa nhiều trên nguyên tắc lập trình hướng đối tượng. Nếu bạn không quen với sự
hạn chế này, đừng lo lắng. Bạn có cuốn sách thích hợp trong tay bạn và bạn sẽ học thêm với
lần lượt mỗi chương.
Chúng tôi biểu thị khái niệm bao chùm lên chương sử dụng tập trung cú pháp có thể thực
hiện được trong timeline, và dần dần đưa vào khái niệm OPP cùng với phương pháp đó. Năm
chương đầu tiên bao gồm đưa ra các event mới trong ActionScript 3.0 và cách thức hiển thị
nội dung (the display list) – không đưa thêm vào số lượng ít các nội dùng đó là lớp hay liên
quan đến hướng đối tượng. Bắt đầu trong chương 6, chúng tôi cung cấp thêm đưa ra sự
hướng đối tượng, bắt đầu với lập trình hướng đối tượng cơ bản, và tiếp tục chín chương còn
lại với việc lựa chọn lớp hay lập trình hướng đối tượng áp dụng cho các ví dụ.
Nếu bạn đã hứng thú trong chính bạn với các ví dụ về lập trình hướng đối tượng từ giai đoạn


đầu, toàn bộ các ví dụ trong các chương chính cũng có thể dùng được trong các lớp mẫu khi
tải xuống được mã nguồn. Điều này không chỉ cung cấp bước nhảy ban đầu cho những thứ
với một vài kinh nghiệm lập trình hướng đối tượng, nhưng nó cũng đáp ứng cơ hội tiếp thu
kiến thức nếu bạn tự tìm ra sự tiến xa hơn một chút để tiếp nhận sự thay đổi (curve). Tốt
nhất, nét đặc trưng mới Document Class của Flash CS3 Professional cho phép bạn bắt đầu sử
dụng lớp nhanh hơn trước đây, cho phép một lớp đáp ứng hầu như phục vụ cho (stand-in)
timeline chính của nhiều file .fla. Toàn bộ bạn có được để sử dụng nó là gõ vào tên của lớp
trong Flash Property Inspector ( nếu bạn không thể đợi để học thêm, hãy bước sang đoạn
“The Document Class” trong chương 1).
Cuối cùng, chúng tôi đã thiết kế một dự án đã triển khai liên quan trặt trẽ với cuốn sách này.
Bắt đầu với chương 7, chương đầu tiên theo sau là lập trình hướng đối tượng cơ bản, có thể
download mã nguồn đặc trưng gói lớp cho mỗi chương. Các lớp bao gồm các phương thức
tiện ích và các thuộc tính mà sẽ được sử dụng trong các project bổ sung. Khi bạn cảm thấy
yên tâm (comfortable) với cú pháp của ActionScript 3.0, và nguyên tắc cơ bản của lập trình
hướng đối tượng, bạn có thể củng cố (reinforce) những gì bạn đã học được bằng cách xây
dựng project. Những file có thể sử dụng được website đồng hành (companion) của cuốn sách,
mà chúng tôi sẽ nói về trong một lúc nào đó.
Chúng tôi đã cố gắng để thiết kế cuốn sách chứa đựng nhiều yếu tố cần thiết (essentials) về
ActionScript như chúng tôi có thể tính đến (include), dựa vào (given) phạm vi và khuôn khổ
của nó.
Phần I: Sự bắt đầu.
Phần I bắt đầu với chương 1, thảo luận về ActionScript 1.0, 2.0, và 3.0, và sự khác nhau thế
nào của các version được sử dụng trong Flash CS3 Professional ứng dụng và Flash Player.
Nó kết thúc(concludes) với chương 2 xem xét việc xây dựng khối đó là nguyên tắc cơ bản cốt


lõi ngôn ngữ trung gian của ActionScript.
Phần II: Đồ họa và sự tương tác
Chương 3 bắt đầu(leads off) phần II, là đoạn dài nhất của cuốn sách, với sự giải thích về các
từ vựng cơ bản của ActionScript: propertises, methods, và events (kể cả các nét riêng biết
khác của ActionScript 3.0). Chương 4 tập trung nhiều vào nội dung hiển thị, chương 5 bao
chùm (covers) các điều khiển timeline, và chương 6 đưa ra lập trình hướng đối tượng.
Chương 7 thảo luận đối tượng hoạt hình sử dụng ActionScript, và chương 8, chương 9 nói về
(explain) việc vẽ với code.
Phần III: Văn bản
Chương 10 là chương duy nhất của phần 3 và tập trung và định dạng văn bản, và hỗ trợ
HTML, và sử dụng định kiểu trình bày trang (cascading style sheets).
Phần IV: Âm thanh và Video
Chương 11 sẽ mở ra phần IV với sự thảo luận về âm thanh. Thêm vào việc vận dụng
(manipulating) âm thanh bên trong (internal) và bên ngoài(external), nó tác động (touches)
trên metadata của ID3 và đưa đến kết quả (culminate) với sự vận dụng (exercise) để hình
dung (visualization) âm thanh hiệu quả, việc lấy ra một mẫu sóng âm trong khi đang phát lại.
Chương 12 bao (wraps up) phần IV bằng việc thể hiện (demonstrating) làm thế nào để chơi
cả video với và không có thành phần nào, giống như làm thế nào để đặt phụ đề video của bạn
để tiếp cận và nhiều thứ tiếng được hỗ trợ.
Phần V: Vào/Ra.
Phần V tập trung vào việc loading tài nguyên vào Flash và gửi dữ liệu ra một server hay các
client khác. Chương 13 bao gồm loading các file SWF, images, và dữ liệu mã hóa URL,
giống như việc truyền thông giữa ActionScript 3.0 và ActionScript 1.0/2.0 load các file SWF,
và thảo luận ngắn về các vấn đề(issues) bảo mật. Chương 14 bao gồm XML và chuẩn mới để
làm việc với XML làm cho công việc dễ dàng như với các đối tượng, phương thức, và thuộc
tính ActionScript.
Phần VI:Lập trình thiết kế và tài nguyên.
Chúng tôi trình bày phần IV trong cuốn sách. Chương 15 cần xem một chút phương pháp lập
trình, hướng đối tượng mẫu thiết kế, và tài nguyên để nghiên cứu thêm nữa.
Cuốn sách tập trung vào ActionScript 3.0, nó áp dụng cho hầu hết các phân đoạn của Flash
platform, nhưng nó được trình bày trong môi trường Flash CS3 Professional. Như vậy nó
không bao gồm Flex, AIR, Flash Media Server, hay các công nghệ platform Flash khác.
Thêm nữa, trong khi nó không chứa đựng kỹ thuật lập trình hướng đối tượng, nó không chỉ ra
trong tài liệu theo chiều xâu hơn. Để biết thêm thông tin về điều này, vui lòng xem phần
trước, “How This Book Is Organized”
Như mục cấp độ văn bản, cuốn sách này có thể hiểu được khó khăn mà giới hạn về phạm vi
chúng tôi đưa ra. Duyệt qua bảng nội dung sẽ cho bạn các ý tưởng hay của chủ đề chúng tôi


sẽ đề cao và, trong một vài trường hợp, sẽ tốt cho những thứ mà chúng tôi đã bao hàm trong
tài liệu. Tuy nhiên, cái đó là một chút đáng chú ý của ActionScript mà không được thảo luận
theo mức độ trung bình và nâng cao. Nó bao gồm sự kết nối cơ sở dữ liệu, biểu thức thông
thường, lập trình cho thiết bị mobile, dịch vụ Web, truy cập từ xa, và tạo các thành phần cho
riêng bạn.
Chúng tôi không nói rằng đây là một tài liệu tham khảo. Nếu bạn là một lập trình viên
ActionScript đã có kinh nghiệm có thể tìm kiếm nhanh chóng với phiên bản 3.0 của ngôn
ngữ. Chúng tôi khuyên bạn rằng nên đọc cuốn ActionScript 3.0 Cookbook, của tác giả Joey
Lott, Keith Peters, and Darron Schall(O’Reilly). Nếu bạn xem tham khảo toàn bộ cuốn sách,
chúng tôi khuyên bạn thử cuốn sách Essential ActionScript 3.0 của Colin Mook(O’Reilly).
Cuốn sách của chúng tôi có thể phục vụ hữa ích cho những người như đã nói ở tiêu đề, đặc
biệt nếu bạn không phải là người dùng cao cấp, nhưng nó không thay thế bởi cái khác được.

Phần I: Bắt đầu.
Chương 1: Tổng quan ActionScript.
Chương 2: Cốt lõi ngôn ngữ cơ bản.
Phần I bắt đầu cuốn sách này với tập hợp(collection) tổng quan cơ bản, trải qua chương 1 và
2. Nó bắt đầu với cái nhìn khái quát về ActionScript, cung cấp một danh sách các đặc trưng
nổi bật, giải thích tóm tắt các thủ tục với lại lập trình hướng đối tượng, và một chú ý quan
trọng đó là cuốn sách được sắp xếp thế nào. Nó kết luận với việc xem lại cốt lõi ngôn ngữ cơ
bản, hầu hết chúng còn lại phù hợp với toàn bộ các version của ActionScript. Tài liệu bắt đầu
cuốn sách đưa ra như một lời giới thiệu ActionScript là ngôn ngữ mới, hay làm mới chúng
với những ai đã quen thuộc với nó, và cho phép bạn sau đó tập trung vào ActionScript 3.0 –
cú pháp cụ thể.


Chương 1: Tổng quan về Action Script
Trong chương này:
-ActionScript 3.0 là gì?
-Flash Platform
-Lập trình thủ tục và hướng đối tượng
-Document Class
-Tính tương thích của Code
-Những gì tiếp theo?
Khi bạn muốn biết những gì về ActionScript để bắt đầu công việc với version mới, một cái
nhìn tổng quan tóm tắt về sự phát triển của nó sẽ cho bạn hiểu thấu bên trong khi sử dụng nó
– đặc biệt liên quan tới Flash Player và làm thế nào nó vận dụng(handles) với các phiên bản
khác của ActionScript. Giới thiệu ngắn gọn chương này sẽ cho bạn cái nhìn nhanh hơn ở đây
ActionScript 3.0 phù hợp với tiến trình làm việc của bạn(workflow), và sẽ bao gồm:
1. ActionScript 3.0 là gì?
Nó được trông đợi (expected) rằng một phiên bản mới của ActionScript sẽ mang lại những
tính năng mới. Tuy nhiên, phiên bản này đã được viết lại từ đầu và thậm chí được xử lý tách
biệt từ các phiên bản ActionScript trước đó tại runtime. Điều này cố ý đẩy nhanh
(splintering) Flash Player làm tăng sự thi hành một cách đáng kể, nhưng cũng mang đến cho
nó những giới hạn như nhiều phiên bản ActionScript tác động đến nhau.
Flash Platform. Vào thời điểm viết cuốn sách này, ActionScript 3.0 là ngôn ngữ lập trình bên
trong của Flex và AIR (ứng dụng Adobe Inegrated Runtime). Sự khác nhau trong trình dịch
và môi trường cụ thể là do ngăn ngừa mọi file viết trong ActionScript 3.0 làm việc tại mọi
khía cạnh của Flash Platform, nhưng nguyên tắc cơ bản thực sự của nhiều ngôn ngữ cũng
như nhau ở mọi nơi.
Ngôn ngữ lập trình hướng thủ tục và hướng đối tượng. Nhiều chú ý (great deal of) tập trung
vào lập trình hướng đối tượng (object – oriented programming_OPP) có tiềm năng với
ActionScript 3.0, và khả năng và sức mạnh của ngôn ngữ thực sự phát huy (shine) trong
phạm vi này. Tuy nhiên, bạn sẽ chuyển sang ActionScript 3.0 dễ dàng không có nghĩa là là
bạn trở thành một chuyên gia OPP. Nó vẫn có thể được sử dụng tập hợp cấu trúc hàm nó mô
tả cách lập trình hướng thủ tục, để viết các dự án ActionScript 3.0. Ngoài ra, sử dụng Flash
CS3, nó vẫn có thể viết code trong timeline, hơn nữa coding chỉ riêng (exclusively) với các
lớp bên ngoài. Nếu bạn thích lập trình hướng đối tượng, cải tiến (enhancements) thành phần
cơ sở của lập trình hướng đối tượng trong ActionScript 3.0 làm nó trở nên mạnh mẽ hơn và
mang lại cho nó những tính năng quan trọng khác, ngôn ngữ lập trình hướng đối tượng cở
bản (như Java) và thực hiện việc chuyển ngôn ngữ dễ dàng một chút.
The Document Class. Lập trình hướng đối tượng không dành cho mọi người, nhưng dành cho
những người bắt đầu trên chặng đường này, Flash CS3 cung cấp một lối vào đơn giản cho
các ứng dụng lập trình hướng đối tượng bằng cách tạo một lớp tài liệu(Document class). Một
thuộc tính Properties Inspector, bạn chỉ cần chỉ rõ lớp ngoài là điểm bắt đầu của bạn, và


không có script trong timeline được yêu cầu.
Tính tương thích của code để lại. Bởi vì ActionScript 3.0 không thể trộn lẫn với các phiên
bản trước đó cả ngôn ngữ trong các file giống nhau, sự phát triển các dự án hỗ trợ code cũ là
không được. Chúng tôi sẽ giới thiệu ngắn gọn các vấn đề phức tạp và thảo luận về chúng
rộng và xâu hơn trong các chương tiếp theo.
ActionScript 3.0 là gì?
Mặc dù ngôn ngữ kịch bản bên trong của các version Flash mới chứa đựng nhiều thứ sẽ
giống với việc sử dụng các phiên bản trước đó, nó chắc chắn được nghĩ tới là ActionScript
3.0 với mọi thứ hoàn toàn mới, với một vài lý do rất đơn giản. Trước tiên, một vài thứ khá là
khác biệt, như là mẫu event và các thành phần được hiển thị. Thứ hai, sự thay đổi tinh tế có
thể chạy với mọi ngôn ngữ và yêu cầu một vài chú ý cho đến khi chúng thích hợp với bản
chất thứ hai. Điều này luôn là các mối quan tâm nhỏ, giống như coi nhẹ sự thay đổi tên của
thuộc tính.
Và quan trọng nhất là, mặc dù, ActionScript 3.0 đã được viết lại từ đầu và sử dụng code khác
hơn các phiên bản trước của ngôn ngữ. Sự tối ưu này mang lại sự thi hành tăng lên khá ấn
tượng, nhưng nó có nghĩa là code ActionScript không thể pha trộn với các version trước của
ngôn ngữ trong file đó được.
Cái mới nhất của Version này, mặc dù, không thể đe dọa được bạn. Nó đúng là con đường
nghiên cứu khó khăn với ActionScript 3.0 so với các version trước đó, nhưng điều đó thường
là một chức năng cho tính mạnh mẽ của chính nó hơn các phiên bản trước gây khó khăn.
Điển hình, điều đó là sự điều chỉnh lại cho phù hợp mà người dùng phải thích ứng với cách
làm việc mới với mọi thứ.
Để giúp bạn có thể nhận được sự thay đổi, đây là một vài điều đáng chú ý của các đặc tính
mới của ActionScript 3.0. Ghi nhớ điều này có thể giúp bạn thực hiện nó dễ dàng hơn để
chấp nhận sự thay đổi, đặc biệt khi sự thay đổi ban đầu có thể gây chán nản hay quá phức
tạp. Một vài đặc điểm mới được lựa chọn bao gồm:
Thêm các lỗi được thông báo.
ActionScript 3.0 yêu cầu sự nghiêm ngặt kiểu dữ liệu của các biên, các tham số, các giá trị
hàm trả về, và nhiều thứ nữa. Kiểu dữ liệu được thảo luận ở Chương 2, nhưng sự sôi nổi
giảm bớt để nói về sự thông dịch các loại dữ liệu bạn mong đợi làm việc trong một vài
trường hợp cụ thể. Sự kiểm tra kiểu dữ liệu được giói thiệu trong ActionScript 2.0 nhưng là
các tùy chọn trước đây. Tăng sự ép buộc kiểu dữ liệu cải thiện sự kiểm tra các lỗi và cung
cấp nhiều thông tin hơn trong khi coding cho phép bạn xác định đúng vấn đề. Thêm nữa,
ActionScript 3.0 bây giờ đòi hỏi kiểu dữ liệu tĩnh với runtime. Điều này cải thiện tính tin cậy
của kiểu dữ liệu trong runtime, và cũng cải thiện sự thi hành và giảm bộ nhớ sử dụng bởi vì
kiểu dữ liệu được lưu trữ trong máy code hơn buộc phải đặt địa chỉ động trong runtime.
Sự cải tiến cú pháp.
Vấn đề cú pháp đã được thống nhất và quét dọn toàn bộ ngôn ngữ. Ví dụ như, tên thuộc tính
đã được làm sáng sủa trong một vài trường hợp, và đã làm cho nhất quán bằng cách loại bỏ
đi đầu gạch dưới, bạn sẽ được xem trong chương 3. Hơn nữa, tính phức tạp, sự tinh tế của
cách tiếp cận giống hoặc tương tự các tác vụ đã được làm nhất quán, giống như khi loading


các tài sản bên ngoài (được thảo luận ở chương 13) hay sự liên kết tới URL (như là xem toàn
bộ cuốn sách)
Cấu trúc hiển thị mới.
Nhiều phương thức trước đó đã tự động thêm một vài thứ vào môi trường hiển thị bây giờ đã
được thống nhất. Danh sách hiển thị mới đơn giản hóa quá trình xử lý một cách đáng kể và
cũng làm nó dễ dàng hơn để chuyển sang thứ tự trực quan kiểu nạp chồng, cũng như cha, con
và anh chị em ruột có mối quan hệ thứ bậc, các đối tượng được hiển thị. Như một chuyên đề
lớn được được giới thiệu ActionScript 3.0, chúng ta sẽ thảo luận với độ dài trong chương 4.
Cấu trúc sự kiện mới
Vẫn cùng ví dụ về sự cải tiến tính bền vững, toàn bộ các event bây giờ được giải quyết bằng
các sự kiện lắng nghe (event listener) – thực chất sự lắng nghe cho một event cụ thể xuất
hiện, và sau đó tác động trở lại tương ứng. Cái kiểu event mới cũng mạnh mẽ hơn, cho phép
các sự kiện chuột và bạn phím truyền xuyên suốt nhiều đối tượng trong danh sách hiển thị.
Kiểu event được thảo luận ở chương 3.
Cải tiến cách trình bày XML.
Trước đây xử lý cồng kềnh, sự làm việc phức tạp với tài liệu XML bây giờ là dễ dàng với
ActionScript 3.0. Thông qua chuẩn thông thường được dựa vào E4X, ActionScript bây giờ
xem các đối tượng XML một cách thông minh hơn và quen thuộc. Phương pháp mới cho
phép bạn sử dụng cùng cú pháp dấu chấm với chuỗi các đối tượng liên quan cùng nhau.
Nhiều lựa chọn kịch bản.
Phương thức xử lý văn bản mới bây giờ cho phép nhiều điều khiển nhỏ thao tác trên text.
Bây giờ bạn có thể tìm text của một dòng nói riêng trong một văn bản, số các ký tự trong một
dòng, và các ký tự với chỉ xác định (như là dưới chuột). Bạn cũng có thể tìm số chỉ mục
trong văn bản của ký tự đầu tiên trong một đoạn, và thậm chí cũng tìm ra tối thiểu xung
quanh phạm vi hình chữ nhật với bất kỳ ký tự nào. Toàn bộ các lựa chọn này không chỉ làm
việc với văn bản dễ dàng, nhưng nó còn cho phép một sự tích hợp vừa khít với các dòng và
các ký tự trong một trường và phạm vi trình diễn các phần tử của chúng. Text được thảo luận
trong chương 10.
Các biểu thức thông thường mới.
Cùng với cái lợi ích cho xử lý văn bản là hỗ trợ cho các biểu thức thông thường. Các biểu
thức thông thường giống như sự thao tác với text. Thay vì cụ thể chỉ thao tác bằng tay, các
xâu đã biết của các ký tự, bây giờ bạn có thể thao tác văn bản sử dụng các ký tự đại diện
(wild cards), các loại ký tự (số, chữ, các dấu chấm câu, … ), ký tự trắng (các dấu cách, tabs,
returns), các ký tự lặp lại, và các cái khác. Một ví dụ đơn giản của biểu thức thông thường sử
dụng có thể tìm thấy trong chương 10.
Thêm các lựa chọn quản lý âm thanh.
Các khả năng mới về âm thanh của ActionScript nằm trong số những thay đổi đáng chú ý của


ngôn ngữ. Trên một mức độ thực tế, chúng cải tiến truy cập tới cả với các âm thanh riêng lẻ
và toàn bộ âm thanh đang playing. Các âm thanh bây giờ được đặt thành các kênh, làm chúng
dễ dàng hơn để làm việc với nhiều âm thanh riêng lẻ, nhưng cũng hội tụ toàn bộ các âm
thanh suốt một âm thanh pha trộn để tập hợp điều khiển. Bạn có thể bây giờ cũng lấy được
biên độ và tần số phổ dữ liệu từ các âm thanh trong lúc phát lại. Âm thanh được thảo luận
trong chương 11.
Cách truy cập mới dữ liệu thô.
Cần cao cấp hơn nữa, bây giờ bạn có thể truy cập dữ liệu nhị phân ở runtime. Các byte riêng
lẻ của dữ liệu có thể đọc trong khi download, trong khi âm thanh chơi lại, hay trong khi thao
tác với dữ liệu ảnh bitmap, cho tên một vài ví dụ. Các byte đó có thể được lưu trữ trong một
danh sách lớn và vẫn được truy cập nhanh và có hiệu quả. Chúng tôi cũng sẽ thể hiện một ví
dụ của kỹ thuật này trong chương 11 khi đang thảo luận âm thanh ảo.
Tự động phạm vi quản lý mới.
Trong ngôn ngữ lập trình, từ phạm vi là đôi lúc được sử dụng để xác định khu vực mà một
đối tượng tồn tại. Một tài sản Flash, như là movie clip, có thể là một phần của Flash movie
nhưng không khác. Ví dụ, một movie clip con có thể lồng vào bên trong một trong hai movie
clip được tìm thấy trong timeline chính. Cái movie clip được lồng đó tồn tại trong một clip
nhưng không khác. Phạm vị của nó, do đó, được hạn chế bởi chính cha của chúng. Các cấu
trúc lập trình có sự giới hạn phạm vi, cũng như, và những thách thức là phải đảm bảo công
việc của bạn trong khoảng phạm vi đúng khi định vị các cấu trúc đó. ActionScript 3.0 rất đơn
giản hóa điều này bằng cách tự động theo dõi phạm vi với chương trình của bạn.
Được cải tiến lập trình hướng đối tượng.
Các cấu trúc lập trình hướng đối tượng cũng đã được cải tiến trong ActionScript 3.0 với bao
gồm cả các lớp đóng và các namespace mới, nằm trong các thứ khác nữa. Chúng tôi sẽ thảo
luận khía cạnh của lập trình hướng đối tượng trong chương này, cũng như trong chương 6, và
cũng cấp các ví dụ lớp cơ bản khắp cả cuốn sách. Cái mới trong ActionScript 3.0, toàn bộ các
lớp được mặc định niêm phong, bao gồm chỉ có các thuộc tính và các phương thức được xác
định thời gian tạo tồn tại trong lớp ở timeline. Nếu bạn tìm thấy sự cần thiết để thay đổi các
lớp đó ở runtime bằng cách thêm các thuộc tính, ví dụ, bạn có thể vẫn thực hiện bởi các lớp
chức năng. Thêm vào đó, các namespace, bao gồm cả xác định các namespace tùy ý, cho
phép điều khiển tốt hơn sự thao tác trên các lớp và XML.
2. Platform của Flash.
Nó quan trọng để lưu ý trong cuốn sách này tập trung chủ yếu trên sự phát triển ứng dụng
ActionScript 3.0 sử dụng môi trường phát triển tích hợp Flash CS3 Professional(IDE). Mặc
dù, ActionScript 3.0 là ngôn ngữ lập trình cho ứng dụng Flash Platform, cũng như, đặc biệt là
Flex và AIR (ứng dụng Adobe Integrated Runtime).
Điều này nghĩa là các kỹ năng kịch bản bạn phát triển trong Flash CS3 sẽ được phần lớn áp
dụng cho các khu vực khác của nền Flash Platfrom, sự mở rộng của bạn đạt đến như một lập
trình viên. Hiện có, mặc dù, một vài thứ quan trọng khác để hiểu sự nghiên viễn cảnh lớn của


kịch bản ứng dụng. Chúng tôi sẽ cho bạn chỉ một chút ví dụ ngắn gọn ở đây để xem xét.
Để bắt đầu với, Flash và Flex có trình biên dịch khác nhau nên nó không đảm bảo rằng
project của bạn sẽ dịch đúng trong cả hai ứng dụng đó. Bạn có thể sử dụng Flex Builder (the
trình biên dịch Flex) để biên dịch code ActionScript các file SWF không có Flex framework,
và load chúng vào Flash CS3 – sinh ra được các project. Bạn cũng có thể load Flash CS3
biên dịch được các file SWF thành một project Flex. Mặc dù, ngay khi bạn rời khỏi cốt lõi
ngôn ngữ cần thiết, mọi thứ bắt đầu được chú ý.
Ví dụ, Flex không có tài nguyên của Flash IDE để tạo các tài sản trực quan (giống như movie
clips) và bởi các dấu hiệu giống nhau, Flash không hỗ trợ nhúng tag được sử dụng bởi Flex
để bao gồm các tài sản. Điều này nghĩa là các code giống nhau không thể luôn luôn được sử
dụng cùng nhau khi các trực quan tùy ý được yêu cầu. Cũng vậy, kiến trúc thành phần là
khác nhau, bao gồm một định dạng khác nhau và sự thiết lập thành phấn khi thực hiên không
khớp nhau.
Vấn đề với các tài sản trực quan đã có một vấn đề tranh luận kịch liện khi đó, và sự tiến bộ
bắt đầu làm để làm giảm bớt đi một chút làn sóng đó. Adobe đã phát hành một bản vá cho
Flex 2, và Flex 3 được kiểm tra công khai tại thời gian của bài viết này, sự cải tiến sự tương
thích của các thành phần. Mặc dù, nó sẽ hầu như chắc chắn một khoảng trước khi chuyển
code sang và từ ứng dụng này sẽ là một xử lý yên tâm, nếu nó xảy ra trơn chu. Một bước
nhanh, mặc dù vậy, sự phát triển AIR thích hợp hơn của đường quan hệ. Adobe đang tiếp tục
công việc trên sản phẩm AIR bắt đầu trong Flash CS3.
Mọi thứ giữ lại trong trí nhớ đó là các kỹ năng ngôn ngữ ActionScript 3.0 bạn phát triển sẽ
giảm nhẹ sự chuyển của bạn giữa các ứng dụng trong Flash Platform, thậm chí nếu bạn phải
làm việc với các công cụ hoặc các trình biên dịch khác đến kết luận với một sản phẩm đã kết
thúc.
3. Lập trình hướng thủ tục và lập trình hướng đối tượng
Nhiều cuộc tranh luận đã tạo ra nhiều lý lẽ tán thành và phản đối của lập trình hướng thủ tục
với lại lập trình hướng đối tượng. Để bàn đến ngắn gọn điều này, ở đây là một nền nhỏ bé
liên quan đến sự tiến hóa của ActionScript. ActionScript được bắt đầu như một một ngôn ngữ
lập trình tuần tự, nghĩa là kịch bản bị giới hạn một trình tự tuyến tính của các lệnh Flash làm
những gì theo kiểu từng bước. Phướng pháp này đối với kịch bản là không thực sự mềm dẻo
và không đẩy mạnh được sự dùng lại.
Như ngôn ngữ được tiến hóa, nó trở thành một ngôn ngữ lập trình hướng thủ tục. Giống như
lập trình trình tự, lập trình hướng thủ tục dựa trên từng bước thiết lập của các lệnh nhưng giới
thiệu một cấu trúc hơn, phương pháp mô đun đối với kịch bản. Các thủ tục, trong một tình
trạng khác giống như hàm (hay, thỉnh thoảng là thủ tục con), có thể được thực thi lại và lại
lần nữa khi cần từ các phần khác của một project, không có sự copy và paste vào trên trình tự
các lệnh. Tính mô đun này đẩy mạnh được sự dùng lại, và làm code dễ dàng hơn cho việc
soạn thảo và có hiệu quả hơn.
Những người viết kịch bản trong việc tìm kiếm một mức độ lớn hơn đảm bảo của tính mô
đun và sử dụng lại được đổ về lập trình hướng đối tượng. Ngôn ngữ lập trình hướng đối
tượng tạo các chương trình mà là một tập hợp của các đối tượng. Các đối tượng là trường
hợp riêng lẻ của một lớp – tập hợp của code đó là độc lập và không thay đổi cốt lõi hay phá


vỡ mỗi cái khác. Chia code thành các bao gói nhỏ, được biết thích đáng như một sự đóng gói,
là một dấu hiệu phân biệt của ngôn ngữ lập trình hướng đối tượng. Một đặc điểm quan trọng
khác nữa của lập trình hướng đối tượng là tính kế thừa, hay khả năng lấy các lớp từ các lớp
cha, qua một số đặc điểm cụ thể từ cha.
Một ví dụ cổ điển về cấu trúc lập trình hướng đối tượng, và sự kế thừa một cách cụ thể, định
nghĩa một tập các phương tiện vận tải (vehicle) chuyên trở. Bạn phải bắt đầu với một lớp
chung Vehicle bao gồm đặc điểm chung của toàn bộ các phương tiện, như là cơ bản sự di
chuyển. Bạn phải sau đó tạo lớp phụ: GroundVehicle, WaterVehicle, và AirVehicle. Các lớp
này có thể thay đổi hay đưa vào một vài đặc điểm cụ thể cho vận chuyển bằng ground(đường
bộ), water (đường thủy), air (đường hàng không) theo thứ tự, nhưng không đủ để thể hiện các
phương tiện trong thực tế. Xa hơn nữa được xuất phát từ các lớp có thể là Car và Motorcycle
(giảm từ GroundVehicle), Boat và Submarine (giảm từ WaterVehicle) và Plane và Helicopter
(giảm từ AirVehicle). Phụ thuộc trên sự phức tạp của hệ thống của bạn, bạn có thể làm sôi
nổi trên quy trình này, việc tạo các mẫu riêng lẻ với sự thiết lập riêng biệt cho nhiên liệu tiêu
thụ, ma sát, và ....
Với bạn có thể cho rằng hầu như chắc chắn, phương pháp này để phát triển thêm các khả
năng, tính mềm dẻo, và hứa hẹn khả năng sử dụng lại. Lợi ích này, giữa những cái khác,
thỉnh thoảng vị trí lập trình hướng đối tượng là phương pháp tốt nhất cho một vấn đề. Tuy
nhiên, điều đó là một khuynh hướng trong số các lập trình viên cảm thấy lập trình hướng đối
tượng là giải pháp tốt cho toàn bộ các vấn đề hay, thực tế, chỉ một duy nhất một giải pháp.
Điều này là không hoàn toàn đúng.
Lập trình hướng đối tượng thường tốt nhất cho các dự án lớn, hay cho làm việc với một
nhóm các lập trình viên, nhưng nó có thể thường vượt quá mức cần thiết cho các dự án nhỏ.
Cuốn sách này cố gắng hướng dẫn sử dụng cả hai cách lập trình hướng thủ tục và lập trình
hướng đối tượng thích hợp ở đây. Sử dụng các thực hành hướng đối tượng là mục tiêu tốt và
cái đó chúng ta sẽ khuyến khích trong cuốn sách này. Tuy nhiên, chúng tôi sẽ trước tiên cố
gắng tập trung trên các tài liệu cho mỗi chương, cú pháp nổi bật, và mở rộng làm thế nào và
tại sao mỗi chủ đề sẽ được hướng dẫn trong code.
Trong điều kiện tổng quát, chúng ta sẽ tập trung trên lập trình hướng thủ tục trước khi vào
chương 6, chương này cung cấp với sự chuyển tiếp giữa thực hành hướng thủ tục và hướng
đối tượng. Sau chương 6, bắt đầu mỗi chương sẽ tập trung các chủ đề bắt đầu được thảo luận,
không có sự xung đột xung quanh cấu trúc lớp lập trình hướng đối tượng. Khi thích hợp, tuy
nhiên, mỗi chương sẽ kết thúc với một ví dụ áp dụng lập trình hướng đối tượng.
Điều này là phương pháp thích hợp để trình bày tài liệu cho toàn bộ những người dùng có thể
trong cả hai cách lập trình hướng thủ tục và lập trình hướng thủ tục. Nó là điều chúng tôi hy
vọng, không quan tâm đến kỹ năng và kinh nghiệm của bạn, bạn sẽ thực hiện các chủ đề tại
nhà, và sau đó làm việc trong timeline, hay trong các lớp dựa trên trình độ hiện tại của bạn.
4. Document Class
Nếu bạn lựa chọn bạn sẽ muốn để bắt đầu tư duy đòi hỏi ngay bây giờ trong lập trình hướng
đối tượng, chúng tôi sẽ thể hiện cho bạn làm thế nào để dễ dàng nắm được một bước trong
hướng đó. Flash CS3 đã đưa vào một đặc điểm đó là sự kết hợp đơn giản hóa một lớp chính,
hay tập trung đi vào ứng dụng của bạn với FLA của bạn. Nó được gọi là document class và


nó làm toàn bộ công việc của class cho bạn. Điều này nghĩa là bạn không cần bất cứ code
nào trong timeline và có thể soạn thảo toàn bộ các ví dụ trong Flash hay hệ soạn thảo bên
ngoài hay môi trường phát triển do bạn lựa chọn.
Hãy bắt đầu với một chương mô tả ví dụ mà bạn có thể sử dụng trong timeline. Nó không
làm gì hơn là sử dụng phương thức trace() để đặt một từ trong Output panel – chỉ panel đó
chấp nhận text đưa ra từ file của bạn.
trace("Flash");
Để tạo một document class, bạn sẽ tạo một loại bao bọc quanh phương thức trace() trong cú
pháp class đúng.
Tạo một file ActionScript mới (đúng hơn là một FLA document) và gõ vào bên dưới
document class như sau:
1 package {
2
3 import flash.display.MovieClip;
4
5 public class Main extends MovieClip {
6
7 public function Main() {
8
9}
10
11 }
12 }
Dòng đầu tiên, cùng với dấu kết thúc dòng 12, xác định package của lớp. Một package là một
cấu trúc bắt buộc mà đảm bảo rằng class của bạn được biết để biên dịch. Tiếp theo, bạn phải
import bất cứ lớp nào mà bạn cần để sử dụng trong package.
Một document class về cơ bản cung cấp một lối tắt cho việc tạo một trường hợp của một
movie clip hay sprite (một đối tượng Flash mà chỉ là một frame movie clip) và thêm nó vào
danh sách hiển thị để nó có thể hiển thị được bởi Flash Player. (Điều này chỉ đúng khi đó chỉ
là hiển thị, như trong trường hợp này. Chúng ta sẽ bao hàm sự vận dụng danh sách hiển thị
trong chương 4.)
Toàn bộ các document class phải xuất phát từ một trong hai lớp MovieClip hay Sprite (các
lớp tùy chọn khác mà không là các document class thì không cần được mở rộng từ
MovieClip hay Sprite nếu điều đó là không thích hợp). Trong ví dụ này sử dụng MovieClip
nên bạn phải import lớp MovieClip, xem trong dòng 3.
Dòng 5, cùng với dấu kết thúc ở dòng 11, là sự xác định lớp. Tên của nó là tùy ý nhưng, khi
đặt tên nó, bạn sẽ cần bao gồm một vài quy tắc cơ bản và theo quy ước. Tên sẽ là một từ mà
chưa tồn tại trong ActionScript, nó sẽ bắt đầu với một ký tự chữ cái (hơn là một số hay ký tự
khác), và nó là loại chữ in hoa. Class phải là public, nghĩa là các lớp khác có thể truy cập tới
constructor, và nó phải mở rộng từ MovieClip hay Sprite, như đã thể hiện ở trước đó.
Dòng 7, cùng với dấu kết thúc ở dòng 9, là constructor lớp. Đây là hàm chính mà tự động


chạy khi tạo một trường hợp của lớp này. Nó cũng phải public và phải cùng tên với lớp. Các
hàm khác (nếu có) có thể, và phải, có các tên duy nhất. Toàn bộ những cái còn lại là được
thêm vào các phương thức riêng lẻ được yêu cầu trong trường hợp này. Constructor phải đưa
“Flash” ra Output panel, bởi vậy thêm dòng dưới này vào dòng 8:
7 public function Main() {
8 trace("Flash”);
9}
Khi được kết thúc, bạn phải save file trong cùng một thư mục file FLA của bạn ngay bây giờ.
(Sau đó, bạn sẽ học cách làm thế nào để đặt các file trong các vị trí khác.) Bạn phải cho file
cùng tên với lớp, nhưng thêm .as làm phần mở rộng.
Cho nên, file này sẽ được đặt tên là Main.as. Bây giờ tạo một file FLA mới, chọn
ActionScript 3.0 với phiên bản ngôn ngữ lập trình của nó, và save nó trong cùng thư mục
trước đó bạn đã tạo file class. Tên của FLA là không quan trọng.
Cuối cùng, mở Proterties Inspector và thêm tên document class của bạn, không phải tên của
chính document đó. Trong trường hợp này, gõ vào Main thay vì gõ vào Main.as, giống như
hình 1-1.

Hình 1-1 thêm một document class vào FLA của bạn.
Bây giờ xem trước file của bạn. Cũng sẽ tạo một trường hợp của class Main (nó mở rộng từ
MovieClip và, bởi vậy, chạy giống như một movie clip) và thêm nó vào danh sách hiển thị.
Lớp sẽ đưa “Flash” ra output panel, và kiểm tra ứng dụng của bạn sẽ hoàn thiện.
Trong tương lại, bạn có thể cố gắng code timeline của chúng ta trong document class theo
riêng bạn. Ban đầu, bạn chắc sẽ không biết các lớp đó cần import hay làm thế nào tạo bất cứ
sự thay đổi nào có thể cho các biến hay các cấu trúc tương tụ để tuân theo cú pháp của lớp.
Tuy nhiên, toàn bộ code ví dụ sẽ luôn đi cùng với các class để kiểm tra. Bạn có thể sử dụng
các file này bất cứ lúc nào bạn muốn cho tới khi bạn có được định dạng cho document class.
5. Tính tương thích của code
Tôi muốn kết thúc chương này với một sự báo trước nho nhỏ. Bạn không thể pha trộn code
ActionScript 1.0 hay 2.0 với code ActionScript 3.0 trong cùng SWF. Bạn không thể làm
được điều này nếu bạn đang học từ đầu, nhưng bạn có thể chạy trong hoàn cảnh này nếu bạn
cố gắng update các project để lại bằng việc thêm vào code ActionScript 3.0.
Nếu bạn cần chạy một hỗn hợp rời rạc ActionScript 3.0 và phiên bản trước đó của ngôn ngữ,
như là một di sản bên trong một vỏ giao diện mới, bạn có thể làm điều đó bằng cách loading
một SWF. Một file ActionScript 3.0 có thể load một SWF đã được tạo trong ActionScript 1.0


hay 2.0, nhưng nó không thể truy cập được các biến hoặc hàm cũ của SWF. Do ý định và
mục đích, cùng là không đúng trong quá trình đảo ngược. Một SWF cũ không thể load một
SWF ActionScript 3.0.
Trong chương 13, chúng ta sẽ thảo luận làm thế nào để truyền thông giữa sự riêng biệt của
các SWF sử dụng trong quá trình xử lý cụ thể. Bây giờ, tuy nhiên, chỉ nhắc nhở chính bạn
một lần nữa đó là bạn không thể phối hợp ActionScript 3.0 với các phiên bản của ngôn ngữ
trong cùng một file.
Những gì tiếp theo?
Bây giờ bạn đã biết một chút về ActionScript 3.0 và Flash Platform, nó là một thời gian để
xem các cái cơ bản của ngôn ngữ. Bằng cái nhìn tổng quan các khái niệm phiên bản độc lập
khi bắt đầu, chúng ta có thể tập trung vào cú pháp mới trong các chương sau. Nếu bạn có
nhiều kinh nghiệm với ActionScript 1.0 hay 2.0, bạn có thể bạn muốn bỏ qua tài liệu này.
Trong chương tiếp theo, chúng ta sẽ thảo luận:
Các khái niệm cơ bản mang đến cho bạn một tốc độ nhanh hơn, bao gồm việc sử dụng
phương thức trace() như là công cụ chuẩn đoán để xem phản hồi tức thời từ script của bạn.
Sử dụng các biến để lưu dữ liệu, bao gồm các mảng và các đối tượng tùy ý mà cho phép bạn
dễ dàng quản lý thêm các giá trị, và loại dữ liệu của các dữ giá trị này để cải thiện các thông
báo lỗi.
Các cấu trúc logic như là các điều kiện để quyết định làm và các vòng lặp cho việc đơn giản
hóa các nhiệm vụ lặp đi lặp lại.
Các hàm mà có thể tách biệt code bên trong các khối thuận tiện điều đó sẽ chỉ được thực hiện
khi được chỉ dẫn.
Các cách định địa chỉ các đối tượng Flash với ActionScript, bao gồm sử dụng các đường dẫn
tương đối hay tuyệt đối, và lối tắt định nghĩa là “this”.


Chương 2: Các nguyên tắc cốt lõi của ngôn ngữ cơ bản
Trong chương này:
-Nhiều thể khác nhau cơ bản
-Các biến và các kiểu dữ liệu
-Các điều kiện.
-Các vòng lặp.
-Mảng.
-Hàm.
-Các đối tượng tùy chọn.
-Từ khóa this.
-Địa chỉ tuyệt đối và tương đối.
-Những gì tiếp theo?
Nó là một sự thật rằng ActionScript 3.0 là một bản viết lại hoàn thiện của ngôn ngữ kịch bản
bên trong của Flash, và nó cũng đúng là ActionScript 3.0 không chia xẻ cùng môi trường
code cơ bản như các phiên bản trước của ActionScript. Nhưng đó là toàn bộ ở đằng sau các
scene. Sự thật là, toàn bộ các version của ActionScript tới nay nói chung chia xẻ khá ít.
Điều đó không để nói rằng ngôn ngữ đang không có sự phát triển. Tất nhiên, mỗi version mới
của ActionScript giới thiệu một lô các đặc trưng mới được cung cấp, là đúng với sự tiến triển
của hầu hết các ngôn ngữ. Và, khi sự giải quyết là viết lại ActionScript 3.0 từ đầu, tận dụng
chính điều hiện tại này để sắp xếp gọn gàng (tidy up) một vài thứ hỗn độn (messy) mà vẫn
tồn tại từ những version trước đó như: tên, nghiêm ngặt hơn, và yêu cầu thực hiện tốt nhất
như là các tùy chọn, và sự tổ chức lại event và hệ thống hiển thị.
Toàn bộ sự phát triển này, tuy nhiên, không loại bỏ trên các chuẩn mà ActionScript đã từng
dựa lên, và hầu hết cơ bản ngôn ngữ giữ nguyên không bị ảnh hưởng. Với mục đích tập trung
trên các tùy chọn mới ActionScript 3.0 giai đoạn sau, chúng tôi muốn bao hàm một vài thứ
của các nguyên tắc quan trọng hơn lên trước. Chúng tôi không có ý định không để ý tới các
khái niệm này trong phần còn lại của cuốn sách. Tuy nhiên, bởi vì chúng là các nguyên tắc
cốt lõi, bởi vậy, được sử dụng thường xuyên, chúng tôi hy vọng giải thích chúng đủ chi tiết ở
đây và sử dụng ít thời gian nhất cho chúng khi chúng ta tiến hành.
Nếu bạn đã thoải mái với ActionScript và đang đọc văn bản này để bắt đầu học version 3.0,
bạn có thể muốn giữ lại, hay chí ít là đọc lướt, chương này. Nó là bởi không có nghĩa là một
sự bao hàm toàn điện cho sự bắt đầu một khóa học. Cuốn sách này không thừa nhận rằng bạn
là người từng trải (versed) với mọi phiên bản trước đó của ActionScript, nhưng quy mô và
mục đích cần chúng ta nắm lấy mọi sự hiểu biết cơ bản của các khái niệm script tổng quát.
Nếu bạn chưa sẵn sàng, vui lòng xem trên Lời giới thiệu để có ý tưởng tốt về việc cuốn sách
này danh cho ai, cũng như một vài tham khảo khác nếu bạn cần thêm thông tin cần thiết để
hiểu vấn đề.
Bạn có thể sử dụng chương này, tuy nhiên, cái cần tập trung tham khảo khi khác khá niệm
lập trình cần được giải thích. Trong trang này, chúng ta sẽ xem xét những chủ đề sau:
• Các thể khác nhau cơ bản. Để nhận biết một vài mục và kỹ thuật được sử dụng trong toàn


bộ cuốn sách là không đảm bảo cần thiết cho mỗi mục, chúng tôi sẽ bắt đầu với một vài yếu
tố cần thiết (essential).
• Các biến và các kiểu dữ liệu. thông tin phải được lưu trữ trong những cái chứa đựng được
gọi là các biến nếu nó được gọi lại để sử dụng sau đó, và sự khai báo mà kiểu của dữ liệu sẽ
được lưu trữ trong mỗi biến có thể giúp Flash kiểm tra các lỗi trong khi phát triển.
• Các điều kiện. Trong nhiều trường hợp, khi một quyết định phải làm trong khi (in the
course of) một sự thực thi của script, một điều kiện được sử dụng để đánh giá (evaluate) kết
quả (outcome) của một quy định thiết lập của các điều kiện. Chúng ta sẽ xem các mẫu điều
kiện if và switch.
• Các vòng lặp. Khi bạn phải thực thi trong một chỉ lệnh trong nhiều lần, nó đôi lúc có ích để
làm trong một cấu trúc vòng lặp. Chúng ta sẽ xem cấu trúc vòng lặp for được sử dụng thông
thường, nhưng đồng thời nhiều khả năng để các vòng lặp rõ ràng, kể cả frame và các event
timer.
• Mảng. trong khi một biến có thể chứa đựng chỉ một giá trị đơn giản, nó có khả năng thường
xuyên, hay thậm chí cần thiết, để lưu trữ hơn một giá trị trong một biến. Hình dung một danh
sách các hàng hóa, với một vài mục, được viết trên một mảnh giấy đơn giản. Mảng là một
cấu trúc dữ liệu mà cho phép bạn lưu trữ nhiều giá trị trong một biến.
• Hàm. Hàm là yếu tố cần thiết cho nhiều ngôn ngữ lập trình, và cho phép bạn thực thi code
chỉ khi bạn đã sẵn sàng để làm như vậy, và sử dụng lại code đó có hiệu quả.
• Các đối tượng tùy chọn. Một đối tượng tùy chọn có thể xem xét như một loại biến đặc biệt
mà cho phép bạn lưu trữ nhiều thông tin, một cách dễ dàng và nhất quán để truy lục dữ liệu.
Các đối tượng cũng có thể rất hữu ích cho sự đơn giản hóa các nhiệm vụ của việc truyền
nhiều tham số giá trị tùy ý vào một hàm.
• This. Từ khóa this được sử dụng như một tham chiếu nhanh (shorthand), ý nghĩa cơ bản
của đối tượng hay phạm vi trong một script. Điều này sẽ trở nên rõ ràng trong tình huống,
nhưng việc hiểu từ khóa làm việc thế nào có thể giữ lại cho bạn nhiều sự lặp lại và giảm bớt
sự cần thiết cho các tham chiếu phức tạp trong các script của bạn.
• Địa chỉ tuyệt đối và tương đối. ActionScript có thể tham chiếu các địa chỉ tới các đối
tượng của nó sử dụng các đường dẫn tuyệt đối, như sự bắt đầu từ timeline gốc và kể cả mọi
đối tượng giữa nó và cái đích của bạn, hay các đường dẫn tương đối, như đi từ một cái gốc
(cha) và xuống dưới là các anh em, không có vấn đề là bạn ở đâu.
Lần nữa, chương này không có nghĩa là chỉ thực hiện chỉ sự tham khảo để mang đến cho bạn
sự nhanh nhất nếu bạn hoàn toàn không có chút kinh nghiệm nào với ActionScript. Nó sẽ
giống như cung cấp những phần chính bạn cần như các cơ bản khác – như ở đây script được
lưu trong Flash – đã được bỏ qua một số lý do.
Như được diễn tả trong phần giới thiệu, để bắt đầu một cuốn sách trên Flash, chúng tôi đề
nghị Flash CS3 Professional, The Missing Manual, được xuất bản bởi O’Reilly, nhà xuất bản
cuốn sách này. Tài nguyên để hoàn thiện thêm ActionScript, chúng tôi thành thật khuyên bạn
sử dụng Essential ActionScript 3.0 bởi Colin Moock, cũng được xuất bản bởi O’Reilly. Sau
đó quyết định tham khảo từ trung bình tới nâng cao, nhưng gần như ba khoảng thời gian kích
cỡ của cuốn sách, nó cũng về căn bản hoàn thiện hơn.
Toàn bộ các phần, chương này, cùng với bối cảnh và bổ sung sự giải thích được trình bày sau
các chương, sẽ cung cấp cho bạn đủ hiểu các chủ đề và có các ví dụ đang làm việc.


1. Nhiều thể khác nhau cơ bản
Một vài chủ đề hầu như chắc chắn không đòi phần được dành cho để bàn luận về chúng
nhưng sẽ vẫn đề cập thích đáng để chúng sử dụng trong toàn bộ cuốn sách. Chúng tôi sẽ gồm
cả một vài ví dụ ở đây, chỉ có khi đã có sự bắt đầu của chúng tôi.
Sự thi hành tuần tự
Phổ biến, ActionScript thực thi từ trên xuống dưới, từ trái sang phải theo thứ tự, mỗi dòng
thực thi nó sau đó cái khác, sự làm việc từ trái qua phải. Một vài thứ có thể thay đổi thứ tự
trong một số cách tinh tế, nhưng nó cơ bản là các quy tắc đáng tin cậy. Ví dụ, nguyên nhân
sự thực thi theo trình tự của script nguyên bản để dừng trong khi thủ tục nhỏ đang được thực
hiện. Khi thủ tục con đã hoàn thành, sự thực thi của script nguyên bản tiếp tục từ bên trái của
nó. Các bước này sẽ được giải thích trong tình huống, trong toàn bộ script của cuốn sách này.
Sử dụng dấu ;
Chính thức sử dụng dấu chấm phẩy trong ActionScript là để thực thi hơn một lệnh trên một
dòng đơn. Điều này là hiếm có trong script thông thường, và chúng tôi sẽ xem kỹ thuật này
khi bàn luận tới các vòng lặp. Tuy nhiên, dấu chấm phẩy cũng được sử dụng để cho biết sự
kết thúc một dòng. Điều này không đòi hỏi, nhưng nó được đề nghị cho sự rõ ràng và dễ
dàng có thể chuyển sang học các ngôn ngữ khác mà dấu chấm phẩy là kết thúc một dòng
được đòi hỏi.
Sự đánh giá một biểu thức
Nó giúp ích để chú ý rằng bạn thường thường không giải một phương trình khi thấy một biểu
thức với các giá trị giống nhau bên trái và bên phải của dấu bằng. Ví dụ nếu bạn thấy một vài
thứ giống như x = x + 1, nó không giống như bạn giải phương trình để tìm giá trị x, dòng này
là sự gán một giá trị mới vào x bằng cách cộng thêm 1 vào giá trị trước đó của nó.
Sử dụng lệnh trace
Nghĩa là có sự phản hồi nhanh, trong một ví dụ, hay như một kỹ thuật kiểm tra và sự gỡ rối
khi đang viết các script, nó rất hữu ích để sử dụng lệnh trace. Lệnh này đặt các text liên quan
ra Output panel của giao diện Flash. Hiểu một cách nôm na là, điều này là một tùy chọn chỉ
có thể sẵn dùng tại thời gian đó, không sử dụng tại runtime.
2. Các biến và các kiểu dữ liệu
Các biến là sự thể hiện tốt nhất như là các cái chứa đựng trong cái mà bạn thay thế thông tin
cho những lần gọi sau. Hình dung nếu bạn không lưu trữ mọi thông tin cho lần sau sử dụng.
Bạn không thể sửa lại các giá trị đã được mô tả các thông tin trước đó (như là tên của những
người dùng hay các mật khẩu), các script của bạn sẽ chịu đựng một sự thực hiện khó khăn
theo cách lặp lại những cái không cần thiết cho tính toán, và bạn sẽ không thể mang những
kinh nghiệm để thực hiện những bổ sung tiếp theo cho một nhiệm vụ. Tổng quát, bạn sẽ
không thể làm bất cứ yêu cầu dữ liệu nào cho ứng dụng của bạn để “nhớ được”.
myVariable = 1;
Đó chỉ là một vài quy tắc và sự thực hành tốt để xem xét tên các biến khi nào. Chúng có thể


chỉ là mộ từ, có thể gồm cả các ký tự alpha dài với kí hiệu dollar ($) hay dấu gạch dưới (_),
nó không bắt đầu bằng một số, và không là một từ khóa hay từ dành riêng trong ActionScript
Để chắc chắn giúp bạn sử dụng các biến thích hợp, ActionScript sẽ theo dõi chúng và cảnh
báo cho bạn nếu bạn cố gắng thi hành một hành động không thích hợp trên chúng, mặt khác
khi sử dụng chúng không đúng. Ví dụ, nếu bạn cố gắng thi hành một phép toán học trên một
đoạn text, Flash sẽ đưa ra một cảnh báo để bạn có thể chỉnh đúng vấn đề.
Để làm điều này, Flash phải chỉ ra những gì bạn muốn lưu trữ trong mỗi biến. Điều này được
hoàn thành bởi việc khai báo biến trước khi sử dụng nó với từ khóa var, và đưa ra kiểu dữ
liệu để lưu trữ trong đó bởi đi theo sau tên của biến với một dấu (:) và kiểu dữ liệu. Cụ thể, ví
dụ trước đây để ghi nhớ số 1 phải viết như thế này:
var myVariable:Number = 1;
Đó là bao gồm một vài kiểu dữ liệu, nhưng được giới hạn, chúng được liệt kê trong bảng 2-1:

Bảng 2-1. Các loại biến.
Kiểu dữ liệu Ví dụ Diễn tả
-------------------------------------------------Number 4.5 Bất cứ số nào, bao gồm cả giá trị số thực.
int -5 Là số nguyên
uint 1 Là số nguyên không âm.
String “hello” Text hay một xâu các ký tự.
Boolean true Có giá trị true hay false.
Array [2, 9, 17] Lưu hơn 1 giá trị trong một biến.
Object myObject Cấu trúc cơ bản của toàn bộ ActionScript, nhưng cũng là mẫu tùy chọn từ
đó có thể được sử dụng để lưu nhiều giá trị như là một mảng.
Cũng có nhiều sự thêm vào các kiểu dữ liệu mà diễn tả các class được sử dụng trong biến.
(như đã thảo luận trong Chương 1, nghĩ rằng các class như là các script ở bên ngoài mà điển
hình là tra lại thông tin cho script của bạn và làm việc như các số của một tổ hợp lớn để tạo
ứng dụng của bạn ). Ví dụ, dòng code sử dụng class MovieClip (xây dựng trong Flash) để tạo
một MovieClip tại runtime:
var myMC:MovieClip = new MovieClip();


Nó là không thực tế để có thể liệt kê toàn bộ các kiểu dữ liệu ở đây, nhưng chúng tôi sẽ tham
khảo các kiểu dữ liệu thường xuyên trong toàn bộ cuốn sách, và nó sẽ trở thành bản năng thứ
hai để sử dụng chúng. Trong các phiên bản trước của ActionScript, sự khai báo và kiểu dữ
liệu các biến là tùy ý. Tuy nhiên, trong ActionScript 3.0, điều này thực hiện là bắt buộc. Điều
này có thể cảm thấy cồng kềnh nhưng chẳng bao lâu nữa, điều này sẽ trở thành bản năng thứ
hai, và bạn sẽ có được sự đánh giá đúng về các trường hợp lỗi ngay lập tức và cung cấp các
đặc điểm phản hồi này.
Như chúng tôi bắt đầu đi xâu hơn trong cuốn sách, bạn sẽ học được các biến đó áp dụng cho
toàn bộ phạm vi (thực ra là nơi mà biến đó tồn tại, như là timeline chính của Flash, hay các
class cụ thể) hay là vị trí để các cấu trúc code cụ thể. Chúng ta sẽ trao đổi điều này trong các
code ví dụ.
Chú ý: Trong toàn bộ cuốn sách, các code ví dụ code là cú pháp được đánh màu tương tự như
trong giao diện màu scripts trong Flash. Điều này giúp cho nhận dạng các mục như là cá
phần của từ vựng ActionScript (như là từ khóa và các định danh) và làm chúng dễ dàng để
xem các lời bình luận (diễn tả các đoạn văn bản mà không thực thi) và các string.
3. Các điều kiện
Bạn sẽ thường cần để làm để giải quyết trong script của bạn, sự chọn lựa để làm một cái gì
dưới một tình huống, và cái khác cho một tình huống khác. Những trạng thái này luôn được
đặt bởi các điều kiện. Đơn giản là, một kiểm tra được tạo, hỏi điều một điều kiện là đúng.
Nếu điều kiện là đúng, các giá trị kiểm tra là true, và do đó code cụ thể được thực thi. Nếu
điều kiện không đúng, những hành động khác được thực hiện hay xen kẽ code được thực thi.
if
Hầu hết các mẫu phổ biến của điều kiện là câu lệnh if. Cấu trúc cơ bản của câu lệnh là từ
khóa if, được đi theo sau bởi các dấu ngoặc đơn trong đó có các điều kiện để kiểm tra, và các
dấu ngoặc móc bên trong đó để thực thi các câu lệnh khi mà giá trị của câu lệnh trả về true.
Ba dòng đầu tiên trong ví dụ thiết lập một sự kiện. Giá trị câu lệnh if cho các sự kiện.(giá trị
ban đầu thiết lập các sự kiện sẽ được sử dụng cho điều này và các ví dụ sau trong phần này).
var a:Number = 1;
var b:String = "hello";
var c:Boolean = false;
if (a == 1) {
trace("option a");
}
Để đánh giá sự đúng đắn của kiểm tra bên trong ngặc đơn, các điều kiện thường sử dụng các
toán tử so sánh và logic. Toán tử so sánh để so sánh hai giá trị, như là bằng (==), nhỏ hơn
(<), và lớn hơn hoặc bằng (>=), một vài trường hợp nữa.
Một toán tử logic đánh giá sự đúng đắn của biểu thức. Bao gồm trong cái này là AND (&&),
OR (||), và NOT (!). Điều này cho phép bạn phát biểu if (điều này and điều đó) là đúng, hay
if “điều này hoặc điều đó” là đúng, hay if”điều này” không đúng.
Ví dụ, sau đây sẽ cho giá trị là false, bởi vì cả hai điều kiện là không đúng. Như kết quả,
không có gì trace ra trong Ouput panel.


if (a == 1 && b == "goodbye") {
trace("options a and b");
}
Trong ví dụ này, sự kiểm tra sẽ đánh giá đúng, bởi vì một trong hai điều kiên (cái trước tiên)
là đúng. Như kết quả “option a or b” sẽ được trace.
if (a == 1 || b == "goodbye") {
trace("option a or b");
}
Cuối cùng, sau đây cũng sẽ trả về giá trị đúng, bởi vì toán tử NOT đúng khi mà giá trị c xác
định là không đúng. (Nhớ rằng, đó là câu lệnh if, cốt lõi của nó, là kiểm tra giá trị đúng ).
if (!c) {
trace("not option c");
}
Toán tử NOT cũng được sử dụng như một phần của toán tử so sánh. Khi mà phối hợp với
một dấu bằng, cả hai nghĩa là, “không bằng”. Bởi vậy, sau đây sẽ là sai bởi vì a bằng 1, và
không có gì được trace.
if (a != 1) {
trace("a does not equal 1");
}
Sự thêm vào khả năng có thể được thêm vào câu lệnh if bằng cách thêm vào một lựa chọn vô
điều kiện khác ( đúng không cho vấn đề gì), sự lựa chọn thiết lập code được thực thi không
cho vấn đề mà giá trị đã được kiểm tra, đơn giản bởi vì kiểm tra không được thông qua. Với
code mới như sau được thêm vào ví dụ trước, sự trace cuối cùng sẽ xảy ra.
if (a != 1) {
trace("a does not equal 1");
} else {
trace("a does equal 1");
}
Cuối cùng, câu lệnh có thể chỉ thiết thực bằng sự thêm vào một điều kiện lựa chọn khác (hay
thêm một kiểm tra), để cấu trúc. Trong ví dụ này, sự trace thứ hai sẽ xảy ra.
if (a == 2) {
trace("a does not equal 1");
} else if (a == 1) {
trace("a does equal 1");
}
Lệnh if được yêu cầu chỉ có if, chỉ một lựa chọn else có thể được sử dụng, và mọi số kiểm tra
else if thêm vào có thể được sử dụng. Trong toàn bộ các trường hợp, tuy nhiên, chỉ một kết
quả có thể thực hiện từ cấu trúc đó. Xem xét ví dụ sau, trong ba kết quả có khả năng thực
hiện – là cái đầu tiên và thứ hai chúng là đúng, và cái cuối cùng vì nó không là một trường
hợp nào khác.
if (a == 1) {
trace("option a");
} else if (b == "hello") {


trace("option b");
} else {
trace("option other");
}
Trong trường hợp này, chỉ “option a” có thể xuất hiện trong Output panel bởi vì trước tiên sẽ
kết thúc cấu trúc if. Nếu bạn cần thêm hơn một sự thực thi xảy ra, bạn sẽ cần sử dụng hai hay
nhiều hơn các điều kiện. Cấu trúc sau, là ví dụ, sự thực thi trước tiên trace trong mỗi if, bởi
sự thiết kế này.
if (a == 1) {
trace("option a");
}
if (b == "hello") {
trace("option b");
} else {
trace("option other");
}
Chú ý: Sự kiểm tra trong ví dụ sử dụng một cặp dấu bằng. điều này là toán tử so sánh hỏi
rằng, “điều này có bằng?”. Sự khác biệt này là vô cùng quan trọng bởi vì ngẫu nhiên sử dụng
một dấu bằng sẽ là nguyên nhân đưa ra kết quả không ngờ tới. Một dấu bằng là một toán tử
gán và gán bằng giá trị bên phải của biểu thức cho đối tượng ở bên trái của biểu thức. Bởi vì
sự gán này xuất hiện, nên sự kiểm tra sẽ luôn luôn trả lại giá trị là true.
switch
Một lệnh if có thể thực hiện đơn giản hay sự phức tạp nếu cần. Tuy nhiên, cấu trúc if dài có
thể gây khó khăn để đọc và có thể đôi lúc sẽ tốt hơn khi sử dụng câu lệnh swith. Thêm nữa,
câu lệnh sau có một đặc trưng là cho phép bạn điều khiển nhiều cấu trúc lệnh if được thực thi
– khi mà giá trị kiểm tra là sai.
Hình dung một lệnh if hỏi rằng nếu giá trị a là 1, else if là 2, else if là 3, else if là 4, và ... Sự
kiểm tra giống như vậy có thể trở nên khó khăn để đọc nhanh. Một cấu trúc lựa chọn xuất
hiện như sau:
switch (a) {
case 1 :
trace("one");
break;
case 2 :
trace("two");
break;
case 3 :
trace("three");
break;
default :
trace("other");
break;


}
Trong trường hợp này, “one” sẽ xuất hiện trong Output panel. Dòng swith chứa đựng đối
tượng hay biểu thức bạn muốn kiểm tra. Mỗi dòng lựa chọn cung cấp một giá trị có thể
switch (a) {
case 1 :
trace("one");
case 2 :
trace("two");
break;
}
4. Các vòng lặp
Nó khá là cơ bản để thực thi các chỉ dẫn lặp trong các script của bạn. Tuy nhiên, kể cả dùng
nhiều dòng, dòng này copy sau dòng khác, là không hiệu quả để soạn thảo và bảo dưỡng.
Bao bọc việc lặp thực hiện trong một cấu trúc lặp hiệu quả là vai trò của các vòng lặp. một
vòng lặp lập trình có lẽ chỉ là những gì bạn nghĩ nó là: Sử dụng để đi qua một cấu trúc và sau
đó lặp trở lại để bắt đầu và thực hiện lại nó. Đây là một loại vòng lặp, và loại bạn chọn để sử
dụng có thể giúp quyết định số lần chỉ thị lặp được thực thi thế nào.
Vòng lặp for.
Loại đầu tiên của cấu trúc lặp chúng ta sẽ xem xét vòng lặp for. Vòng lặp này thực hiện nội
của nó một số lần có hạn. Ví dụ, bạn có thể muốn tạo một grid gồm 25 movie clip hay kiểm
tra xem 5 radio button đã được lựa chọn chưa. Trong ví dụ trước tiên, chúng ta muốn đánh
dấu nội dung ra Output panel 3 lần.
Để lặp qua một sự xử lý thực tế, trước tiên phải bắt đầu với một giá trị khởi đầu, như là 0, để
bạn biết bạn không đánh dấu vết mọi thứ ra Output panel. Bước tiếp theo là kiểm tra xem liệu
có phải bạn đã vượt qua giới hạn của bạn. Dòng đầu tiên, 0 không vượt quá giới hạn 3 lần.
Bước tiếp theo là in vết nội dung, và bước cuối cùng là tăng giá trị khởi đầu của bạn, và ghi
điều đó bạn đã được in vết nội dung yêu cầu. Quá trình từ bắt đầu cho tới khi, cuối cùng, bạn
sẽ vượt quá giá trị giới hạn của vòng lặp. Cú pháp cơ bản của vòng lặp for là như sau:for (var
i:Number = 0; i < 3; i++) {
trace("hello");
}
Đầu tiên bạn có thể để ý là sự khai báo biến và kiểu đếm, i. Đây là một phương pháp phổ
biến vì biến i thường chỉ được sử dụng cho sự đếm và, bởi vậy, được tạo ngay tại chỗ và
không được sử dụng lại. Nếu bạn đã khai báo và định kiểu số đếm trước đó, bước đó có thể
bỏ qua ở đây. Tiếp theo là vòng lặp kiểm tra. Trong trường hợp này, biến đếm phải có giá trị
nhỏ hơn 3. Cuối cùng, hai dấu cộng là tương đương với với i = i + 1, hay cộng thêm 1 vào
giá trị hiện tại của i. Kết quả là 3 sự xuất hiện của từ “hello” trong Output panel.
Nó cũng có thể đếm xuống bằng cách đảo lại giá trị trong các bước 1 và 2, và sau đó giảm
giá trị biến đếm:


for (var i:Number = 3; i > 0; i--) {
trace("hello");
}
Có nhiều cách khác nhau, miễn là giá trị của i là lớn hơn 0, sự thực hiện vòng lặp, và trừ đi 1
từ giá trị biến đếm mỗi lúc. Điều này ít phổ biến hơn, và làm việc trong trường hợp này bởi
vì vòng lặp chỉ in vết một string. Tuy nhiên, nếu bạn cần sử dụng giá trị thực tế của i trong
vòng lặp, điều đó cần có thể ra lệnh dù bạn có tăng hay giảm đếm. Ví dụ, nếu bạn tạo 10
movie clip và gọi chúng là mc0, mc1, mc2, và .v.v.., nó có thể là một số đếm rõ ràng.
Chú ý: Chú ý mỗi ví dụ vòng lặp “chính thức” sử dụng dấu chấm phẩy để thực thi hơn một
bước trong một dòng đơn.
.
Vòng lặp while
Một loại vòng lặp khác mà bạn thích sử dụng là vòng lặp while. Thay vì thực thi nội dung
của chính nó trong một sự giới hạn số lần lặp, nó thực thi miễn là những thứ còn lại là đúng.
Một ví dụ, hãy xem một số trường hợp đơn giản của sự lựa chọn một số ngẫu nhiên. Sử dụng
phương thức random() của class Math, ActionScript sẽ chọn một số ngẫu nhiên lớn hơn hoặc
bằng 5. Với cơ bản 50% sự may rủi của sự chọn lựa một số trong mỗi lúc, bạn có thể kết thúc
với sự lựa chọn sai một vài lúc trong một dòng. Để đảm bảo rằng bạn có một số hạn định,
bạn có thể thêm điều này vào script của bạn:
var num:Number = 0;
while (num < .5) {
num = Math.random();
}
Sự bắt đầu với một giá trị mặc định là 0, num sẽ nhỏ hơn .5 lúc đầu trong vòng lặp. Một số
ngẫu nhiên sau đó được đặt vào biến num và, nếu nó nhỏ hơn .5, vòng lặp sẽ thực thi một lần
nữa. Điều này sẽ đi tiếp cho tới khi một số ngẫu nhiên mà lớn hơn .5 được quyết định, do đó
kết thúc vòng lặp.
Một cảnh báo cho vòng lặp.
Nó rất là quan trọng để hiểu rằng, mặc dù gọn gàng và tiện lợi, các cấu trúc lặp không là
phương thức tốt nhất sử dụng để hoàn tất một kết quả. Điều này là bởi vì các vòng lặp đòi hỏi
rất nhiều bộ xử lý. Khi một vòng lặp bắt đầu xử lý của nó, mọi thứ sẽ thực thi cho tới khi
vòng lặp đó kết thúc. Chính lý do này, nó có thể khôn ngoan để tránh các vòng lặp for và
while khi các cập nhật cơ bản tạm thời được yêu cầu.
Trong trường hợp khác, khi một vòng lặp phục vụ như một sự khởi tạo cho một sự xử lý
được cập nhật chỉ khi lúc sự hoàn thành nó, như là việc tạo grid 25 movie clip đã nói trước
đây, bạn sẽ giảm đi một vài vấn đề. Script bắt đầu vòng lặp, 25 clip được tạo ra, vòng lặp
được kết thúc, một frame cập nhật có thể xuất hiện, và bạn thấy toàn bộ 25 clip.
Tính năng của break là không tồn tại với lệnh if và, nếu sử dụng với các lựa chọn khác có
hiệu quả với swich để thêm các chuỗi phức tạp cho nhiều lệnh if. Lệnh switch phải có một
swith, và một case, các tùy chọn khác sẽ trong default, và tùy chọn break cho mỗi case và
default. Break cuối cùng không cần, nhưng có thể thích hơn để đảm bảo tính kiên định.


Tuy nhiên, nếu bạn muốn mỗi 25 clip ló ra, lần lượt từng cái một, các cập nhật cơ bản tạm
thời ban đầu không thể xuất hiện trong khi bộ xử lý đang được sử dụng trong vòng lặp.
Trong hoàn cảnh này, một vòng lặp được hoàn tất bởi các phương thức khác mà không gây
trở ngại cho sự cập nhật bình thường trước đó muốn có thể xảy ra. Hai vòng lặp, các vòng lặp
frame và timer, là phổ biến để sử dụng cho các mục đích này. Một vòng lặp frame là dễ dàng
lặp một frame event, sự thực thi một chỉ dẫn mỗi lúc trở lại ban đầu được cập nhật. Một vòng
lặp timer là tương tự, nhưng nó không bị ràng buộc bởi nhịp độ của frame. Thay vì, một
timer event được thúc đẩy bằng một timer độc lập thiết lập một tần số.
Trong cả hai trường hợp, các event xuất hiện trong sự kết hợp với những event khác trong
các hàm thông thường của file, để cập nhật trực quan, như một ví dụ, có thể tiếp tục xuất
hiện. Cả hai vòng lặp timer và frame sẽ được giải thích, hoàn thiện với các ví dụ, trong
chương tiếp theo.
Cảnh báo.
Sử dụng các vòng lặp while chú ý cho tới khi bạn tiện lợi với chúng. Nó dễ dàng để viết ra
ngẫu nhiên một vòng lặp vô hạn không bao giờ kết thúc, nó sẽ là nguyên nhân code của bạn
dừng trong các dòng của nó. Không thử code này trong code của chính bạn, nhưng đây là
một một ví dụ cự kỳ đơn giản thể hiện rõ nhất một vòng lặp vô hạn:
var flag:Boolean = true;
while (flag) {
trace ("infinite loop");
}
Như bạn thấy từ ví dụ này, biến flag vẫn đúng, cho nên, vòng lặp không bao giờ thất bại.
5. Mảng
Các biến cơ bản chỉ có thể chứa đựng một giá trị. Nếu bạn thiết lập một biến là 1 sau đó cùng
thiết lập là 2 ở dòng sau, giá trị đã bị gán lại, và giá trị của biến đó trở thành 2.
Tuy nhiên, đó là một vài lần khi bạn cần một biến chứa hơn một giá trị. Giả sử một tập hợp
hàng tạp hóa bao gồm 40 sản phẩm. Với các biến để giải quyết các vấn đề này định nghĩa 50
biến và đặt chúng tương ứng với một sản phẩm tạp hóa. Đó tương đương với 50 mẫu được
viết ra trên mặt của của nó. Điều này là vô cùng cồng kềnh và chỉ có thể tạo được bởi người
viết trong quá trình xử lý là cố định và bạn có thể gọi lại và quản lý toàn bộ tên các biến mỗi
lúc bạn muốn truy cập các mục sản phẩm.
Tương với một mảng, tuy nhiên, rất là giống việc làm thế nào chúng ta xử lý điều này trong
thực tế. Một danh sách gồm 50 mục hàng tạp hóa được viết trên một khối của trang giấy. Bạn
có thể thêm vào danh sách trong khi lưu trữ tại đó, qua mỗi mục nó sẽ được thu nhận,và bạn
chỉ cần quản lý một khối trên trang.
Việc tạo một mảng khá dễ dàng. Bạn có thể đặt lại một mảng bằng cách thiết lập một biến
(kiểu Array) để dấu chấm phẩy ngăn cách danh sách mỗi mục, bao quanh bởi một cặp ngoặc
đơn. Bạn có cũng có thể tạo một mảng rỗng bằng cách sử dụng class Array. Cả hai kỹ thuật
được minh họa như sau:
var myArray:Array = [1, 2, 3]
var yourArray:Array = new Array();


Trong cả hai trường hợp, bạn có thể thêm vào, hay loại bỏ từ các mảng trong lúc thực hiện.
Ví dụ, bạn có thể thêm vào một giá trị vào một mảng sử dụng phương thức push(), nó đẩy giá
trị vào cuối mảng. Tóm lại, một phương thức là hành động thực thi bởi một đối tượng, trong
trường hợp này là sự thêm một vài thứ vào mảng và sẽ được thảo luận chi tiết trong các
chương tiếp theo. Bạn có thể loại bỏ một phần tử cuối của một mảng sử dụng phương thức
pop().
var myArray:Array = new Array();
myArray.push(1);
trace(myArray)
// 1 xuất hiện ở Output panel
myArray.push(2);
// hiện giờ mảng có 2 phần tử: 1, 2
trace(myArray.pop());
// phương thức pop() loại bỏ phần tử cuối cùng, nó hiển thị giá trị của 2
trace(myArray)
// nó chỉ còn lại một phần tử trong mảng, 1, nó được hiển thị
Đó là có nhiều hay các phương thức mảng khác, cho phép bạn thêm hay loại bỏ đằng trước
mảng, hay đơn giản các nội dung của nó, kiểm tra vị trí của một phần tử được tìm thấy trong
mảng, so sánh giá trị lại với một giá trị điều khiển, hay nhiều phương thức khác nữa.
Chú ý: Cả hai phương thức được thêm vào cuối của biến mảng myArray với một dấu chấm
ngăn cách hai cái. Điều này là cú pháp được sử dụng để định hướng mẫu đối tượng tài liệu
Flash, và một vài lúc được tham chiếu là sử dụng dấu chấm cú pháp. Về cơ bản, một xâu hệ
thống cùng với một chuỗi các phần tử, từ lớn nhất đến nhỏ nhất, và bao gồm các đối tượng
thích đáng để giao cho xử lý. Trong trường hợp này, phần tử lớn nhất thích đáng là phẩn tử
của chính mảng và, ở bên dưới cái đó là mỗi phương thức. Xem xét ví dụ khác, ở đây bạn
muốn kiểm tra chiều rộng của một movie clip nó đó trong movie clip khác, phần tử lớn nhất
sẽ là cha, hay chứa đựng movie clip, sau đó đến movie clip đặt trên, và sau đó đến chiều rộng
của nó:
mc1.mc2.width;
Cú pháp dấu chấm này sẽ hầu như được sử dụng cho mọi ví dụ đưa vào cuốn sách, và nó sẽ
sớm trở nên khá dễ dàng để hiểu được rằng những gì được tham chiếu bởi đối tượng.
Bạn cũng có thể thệm hoặc lấy các giá trị từ vị trí trong mảng, bằng cách sử dụng cặp dấu
ngoặc vuông và trong đó là các chỉ số, hay vị trí của mảng bạn cần. Để làm điều đó, bạn phải
hiểu rằng ActionScript sử dụng các mảng phần có phần tử bắt đầu là 0, nó có nghĩa là giá trị
đầu tiên tại vị trí 0, thứ hai tại vị trí 1, tiếp theo tại vị trí 2, v..v…Như ví dụ, để lấy giá trị
đang tồn tại ở vị trí thứ 4 từ mảng, bạn phải yêu cầu phần tử tại vị trí 4.
var myArray:Array = ["a", "b", "c", "d", "e"]
trace(myArray[4])
//"e" xuất hiện ở Output panel
Đây là các loại khác nhau của mảng, như là mảng của mảng (các mảng bên trong các mảng
có thể tương tự như cấu trúc database) và các mảng kết hợp (nó lưu trữ không chỉ giá trị
tuyến tính, nhưng cũng là một cặp các phần tử - giá trị và tên thuộc tính để thể hiện giá trị
đó), như ví dụ. Tuy nhiên, vì các ràng buộc, chúng ta tập trung trên các loại mảng phổ biến:


mảng tuyến tính. Những cái khác sử dụng các cấu trúc mảng sẽ được làm rõ trong các
chương tiếp theo.
6. Hàm.
Hàm là một phần không thể thiếu của việc lập trình mà trong đó chúng được bao bọc bên
trong các khối có thể được thực thi khi cần. Chúng cũng cho phép các khối code được sử
dụng lại và sửa chữa hiệu quả, không cần copy, paste, và sửa chữa lặp lại nhiều lần. Không
có hàm, toàn tộ code sẽ được thực thi trong trình tự tuyến tính từ lúc bắt đầu đến lúc kết
thúc, và sửa đổi những yêu cầu thay đổi rất là đơn giản xuất hiện sự lặp lại code.
Việc tạo một hàm đơn giản yêu cầu hơn một chút xung quanh code bạn muốn để thực hiện
với một cú pháp đơn giản cho phép bạn đưa ra một khối bởi một cái tên nào đó. Sự thực hiện
hàm nào đó yêu cầu sau đó chỉ là bạn gọi hàm bằng cái tên đó. Cấu trúc sau đây thể hiện một
hàm mà lưu dấu vết một string ra Output panel. Hàm này được định nghĩa và sau đó, để
minh họa quá trình, được gọi ngay lập tức. (Trong các kịch bản thực tế, các hàm luôn được
gọi tại một vài thời điểm khác nhau hay từ các vị trí khác nhau, như khi người sử dụng click
vào một button với chuột chẳng hạn). Đầu ra được mô tả trong chú thích của hàm đó.
function showMsg(){
trace("hello");
}
showMsg();
//hello
Nếu sử dụng lại code và thực thi code chỉ khi cần là ưu điểm của các hàm, bạn đã biết một
sự hữu ích để làm tăng thêm sự thực thi tuyến tính của ActionScript bởi vì nó cho phép bạn
nhóm code của bạn trong các thủ tục con mà có thể thi hành tại bất cứ thời điểm nào và tại
bất kỳ thứ tự nào. Tuy nhiên, bạn có thể cũng làm nhiều hơn với các hàm để thu được khả
năng lớn hơn.
Ví dụ, cho rằng bạn cần thay đổi mục đích của các hàm nhỏ trước đó. Hãy nói là bạn cần
đánh dấu 10 thông điệp khác nhau. Để làm điều đó không cần những tính năng mới, bạn có
thể tạo 10 hàm và thay đổi string mà gửi ra Output panel cho mỗi hàm.
Tuy nhiên, điều này có thể dễ hoàn thành dàng hơn với việc sử dụng các đối số, hay là các
biến địa phương mà chỉ tồn tại trong bản thân các hàm đó. Bằng cách thêm vào một đối số
khi khai báo hàm, trong trường hợp này string đối số là msg, bạn có thể truyền một giá trị
vào trong đối số đó khi bạn gọi hàm. Bằng cách sử dụng đối số trong thân hàm, nó sẽ giữ bất
cứ giá trị nào được gửi đi. Trong ví dụ này, hàm lưu dấu vết chữ “hello” mỗi lúc nó được
gọi. Thay vì, nó lưu vết bất cứ text nào được gửi vào trong đối số của nó khi hàm được gọi.
Khi sử dụng các đối số, điều này là cần thiết để kiểu dữ liệu trong Flash biết làm thế nào để
tác động và có thể đưa ra nhiều cảnh báo cần thiết để thông báo bạn các lỗi.
function showMsg(msg:String) {
trace(msg);
}
showMsg("goodbye");
//goodbye


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay

×