1. Trang chủ
  2. » Công Nghệ Thông Tin

Ebook Thực hành ActionScript 3.0

137 109 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 137
Dung lượng 2,01 MB

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

Nội dung

Với kết cấu nội dung gồm 6 phần, cuốn sách Thực hành ActionScript 3.0 giới thiệu đến các bạn những nội dung: Sự bắt đầu thực hành ActionScript 3.0, đồ họa và sự tương tác, văn bản, âm thanh và video, lập trình thiết kế và tài nguyên,... Mời các bạn cùng tham khảo nội dung cuốn sách để có thêm tài liệu phục vụ nhu cầu học tập và nghiên cứu.

Trang 1

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

Trang 2

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ó

Trang 3

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

Trang 4

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ể

Trang 5

Chương 1: Tổng quan về Action Script

Trong chương này:

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à

Trang 6

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

Trang 7

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

Trang 8

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

Trang 9

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á

Trang 10

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à

Trang 11

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:

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

Trang 12

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

Trang 13

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”

Trang 14

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

Đ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

Trang 15

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

Trang 16

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ể

Trang 17

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:

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();

Trang 18

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;

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

Trang 19

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

trace("option a");

} else if (b == "hello") {

Trang 20

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:

Trang 21

đó 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

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:

Trang 22

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:

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

Trang 23

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;

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();

Trang 24

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();

// 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ó:

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:

Trang 25

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 đó

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

Trang 26

Nó cũng có thể trả về một giá trị từ hàm, làm tăng sự tiện dụng của nó Có thể trả về một giá trị từ script khi nó được gọi nghĩa là hàm có thể thay đổi khả năng vào và ra của chính nó Bao gồm như là các ví dụ theo sau để chuyển một nhiệt độ từ giá trị độ C sang độ F và từ độ

F sang độ C Trong cả hai trường hợp, một giá trị được đưa vào trong hàm và một kết quả tính toán được trả lại cho script Ví dụ trước tiên ngay lập tức lưu vết các kết quả ra, trong khi ví dụ thứ hai lưu giữ giá trị trong một biến Để làm theo trong thực tế áp dụng trong khi bạn có thể vận dụng ngay vào giá trị trả về hay lưu trữ và xử lý nó vào thời gian sau đó

Chú ý rằng, khi trả về một giá trị từ một hàm, bạn sẽ cũng khai báo kiều dữ liệu của giá trị trả

về Điều này cũng thu được giống như cách khi áp dụng một kiểu dữ liệu khác với dấu hai chấm bởi kiểu dữ liệu cụ thể cho hàm đó và mẫu này là được đặt giữa dấu ngoặc đơn đóng các tham số và dấu ngoặc móc mở của hàm Khi bạn sử dụng để thực hành, nó là tốt nhất để chỉ rõ void cho kiểu trả về khi hàm của bạn không trả về một giá trị nào

7 Các đối tượng tùy chọn

Chỉ sau một khoảng thời gian ngắn làm việc với ActionScript, bạn sẽ hiểu rõ những thứ bạn được nhúng bên trong các đối tượng Hầu hết các thực thể riêng biệt trong ActionScript là con cháu của các lớp đối tượng và giữ cách xử sự trong một kiểu nhất quán tin cậy Điểm chính của cách xử sự này là khả năng cho một đối tượng có các thuộc tính (nó là các phần tử

về cơ bản mô tả cấu tạo nên các thành phần của đối tượng như là chiều rộng, vị trí, sự quay,

…), các phương thức (nó là hành động của đối tượng có thể thi hành), và các event (các event tùy chọn như là click chuột, hay một phím nhấn, có thể gây ra các xử lý khác trong tiến trình làm việc với script)

Bạn cũng có thể tạo các đối tượng tùy ý và định nghĩa các thuộc tính, phương thức, và các event của riêng bạn Để giải thích điều này, chúng ta sẽ tạo một đối tượng tùy ý gọi mặt phẳng và cho nó các thuộc tính để chỉ mức độ nghiêng, cuộn, trượt Các thuộc tính này là điều kiện để miêu tả sự quay vòng mà trong không gian 3D Nếu bạn nghĩ chính bạn được ngồi trong một mặt phẳng, mức độ nghiêng là góc quay mà sẽ gây ra để tiến mặt phẳng đi lên và xuống Sự cuộn là góc quay mà mà sẽ gây ra cho mặt phẳng để quay tròn tiến về phía trước cùng với độ dài của mặt phẳng, giữ mặt tiến về trước như bạn lên liên tục xuyên suốt dãy bậc thang giữa hai đầu Cuối cùng, sự trượt là góc quay mà tới từ phía trước vuông góc xuyên qua điểm bạn ngồi trên mặt phẳng, nguyên nhân mặt phẳng quay tròn trong một mặt phẳng quay ở đây mặt trước sẽ không còn là bề mặt trước nữa

Trang 27

Không có điều kiện cho mặt phẳng, sự nghiêng, quay, và trượt là phần của thư viện

ActionScript Tuy nhiên, bằng cách tạo một đối tượng tùy ý, chúng ta sẽ tạm thời tạo chúng

có thể dùng được với script của chúng ta nếu chúng luôn luôn có Bước trước tiên trong tiến trình là tạo một đối tượng Nó được tạo, chúng ta có thể thêm vào và đặt các thuộc tính:

var plane:Object = new Object();

plane.pitch = 0;

plane.roll = 5;

plane.yaw = 5;

Các giá trị này sẽ gửi cho mặt phẳng trong sự quay chậm bằng tay sang bên phải Chúng có

thể gọi mọi lúc, bởi câu try vấn các thuộc tính giống như cách tạo nó

trace(plane.pitch);

//0

Sự tạo một đối tượng tùy ý chứa đựng các thuộc tính là một cách tác động hiệu quả cao đó là gửi nhiều tham số tùy chọn trong một hàm ActionScript 3.0 không thích có một biến kiểu number của một tham số hay các giá trị cho các tham số này Nếu bạn định nghĩa 5 tham số,

nó sẽ nghĩ rằng 5 tham số sẽ bỏ qua nếu bạn chọn để bỏ qua mọi thứ, nó cũng dễ dàng truyền vào những số không biết của giá trị các tham số từ đầu đến cuối một tham số cố định mà chứa đựng một đối tượng Bạn có thể phân tách sau đó các giá trị từ đối tượng này trong hàm, khởi chạy để bắt đầu các giá trị của các thuộc tính cụ thể mà bỏ qua Đây là một ví dụ,

sử dụng đối tượng Plane được tạo trước đó

phương thức, từ khóa this tham chiếu các phiên bản lớp có chứa các phương thức gọi

Mặc dù một chút chưa rõ để bắt đầu với ActionScript, this có thể là người bạn của bạn Nó

cơ bản là cách dùng nhanh cho “bất kỳ đối tượng hay phạm vi nào bạn đang làm việc lúc này” Phạm vi là khu vực hay khoảng không gian trong khi mà một đối tượng tồn tại Ví dụ, một movie clip trong timeline của Flash Mỗi đối tượng này có một khu vực duy nhất, nên một biến hay hàm được định nghĩa trong movie clip sẽ không tồn tại trong timeline chính, và ngược lại

Nó là dễ dàng nhất để hiểu cách sử dụng this trong ngữ cảnh, nhưng ở đây là hai ví dụ để bạn bắt đầu Nếu bạn muốn tham chiếu tới chiều rộng của movie chứa trong movie clip được gọi là mc từ trong timeline chính, bạn phải theo cách này:

Trang 28

this.mc.width;

Nếu bạn muốn tham chiếu tới timeline chính từ movie clip trong đó, bạn phải viết thế này:

this.parent.mc.width;

Trong cả hai trường hợp, this là điểm tham chiếu từ cái bạn bắt đầu đường dẫn của bạn Nó

khá phổ biến để đưa vào từ khóa khi kéo xuống từ phạm vi hiện tại (như là trong ví dụ đầu

tiên) Điều này là bởi vì Flash phải hiểu những gì lớp cha thực sự là một cha của nó trong

thứ tự bắt đầu đi theo thứ tự cấp bậc Hình dung một gia đình hợp nhất từ một vài gia đình

thành viên, bao gồm các anh, em họ và nhiều thế hệ, hiện tại, và bạn thấy rằng mẹ, cha, hay

ông bà của bạn Nếu bạn chỉ cần nói “cha mẹ”, mọi cha mẹ khác sẽ được biết Nếu bạn thay

vì nó “cha mẹ tôi” hay “cha mẹ của mẹ tôi”, điều đó sẽ đủ cụ thể để bạn đứng đầu hướng từ

bên phải

9 Absolute versus Relative Addresses (Địa chỉ tuyệt đối và tương đối)

Giống như HĐH có các thư mục (folder) hay cấu trúc file của 1 website, bạn có thể tham

chiếu đến 1 đối tượng trong flash bằng đường dẫn trực tiếp hoặc các đường dẫn có liên quan

tới các đối tượng có liên quan đến đối tượng cần tham chiếu (đường dẫn gián tiếp) Thật dễ

dàng nếu dùng đường dẫn trược tiếp đến một đối tượng đã biết chính xác bất kì trong flash,

tuy nhiên điều đó có vẻ cứng nhắc và sẽ không còn đúng nếu rõ nghĩa và có tính mềm dẻo

khi viết chương trình

Ta có thể xem 2 ví dụ sau:

Ở cả 2 bảng thì mã lệnh được viết ở Main timeline của flash và tham chiếu đến mc2 nằm

trong mc1 của flash nhưng cách viết khác nhau

* Bảng 2-2 thì bắt đầu từ timeline chính của Flash (lv0) chỉ tiếp đến mc1 rồi đến mc2 (tăng

dần level)

Mã lệnh trace(this.mc1.mc2.x)  đưa ra tọa độ x của mc2 nằm trong mc1 được đặt ở

timeline chính của flash

* Bảng 2-3 Theo mình hiểu thì đặt mã lệnh ở MovieClip thứ 3 sau đó up lên khung hình

chính (nơi có mc1) và down xuống MovieClip 2 nằm trong MovieClip 1

Trang 29

Chương 3: Các thuộc tính, phương thức và sự kiện

Trong chương này:

- Frame và các event Timer

- Xóa đi các event listener

- Những gì tiếp theo?

Thêm vào nền tảng cốt lõi ngôn ngữ cơ bản đã thấy ở chương trước, bạn sẽ tìm ra nhiều thứ trong script của bạn viết ra sử dụng các thuộc tính, phương thức, event Điều này là cơ bản để xây dựng nên các khối script thực hiện nhiệm vụ và cho phép bạn nhận và thiết lập các đặc điểm, đưa ra hướng dẫn và tác động trở lại để nhập từ nhiều phần tử Flash

• Các thuộc tính Các thuộc tính có một chút là hơi giống với các tính từ trong những từ diễn

tả đối tượng hiện tại để sửa đổi và truy vấn Ví dụ, bạn có thể kiểm tra hay thiết lập chiều rộng của một button Hầu hết các thuộc tính là đọc và ghi, trong những trường hợp có thể cả thu được và gán các giá trị của chúng Một vài thuộc tính, tuy nhiên là chỉ đọc, nó có nghĩa là bạn có thể yêu cầu thông tin nhưng không được thay đổi các giá trị của chúng

• Các phương thức Các phương thức có một chút giống với động từ Chúng được sử dụng

nói cho đối tượng để làm một vài thứ, như là chơi hay dừng Trong một vài trường hợp, các phương thức có thể được sử dụng để đơn giản hóa sự thiết lập của các thuộc tính Bạn phải

sử dụng một phương thức được gọi là set-Size(), ví dụ như, để đồng thời thiết lập chiều rộng

và chiều cao của một vài thứ Các phương thức khác là duy nhất, như là navigateToURL(),

nó chỉ dẫn cho trình duyệt hiển thị một trang web

• Các Event Các event là vật tương tác để khởi sự một hành động bạn viết ra, thiết lập các

thuộc tính và gọi các phương thức Cụ thể như, một người sử dụng phải click chuột vào

button, mà kết quả sau đó trong một event mouse Event đó sau đó gây ra một hàm thực thi, thi hành các hành động mong muốn Event handlers(bộ quản lý sự kiện) là phần tử trung gian giữa các event và thậm chí là gọi các hàm ActionScript 3.0 đã thống nhất sự quản lý các event trong hệ thống nhất quán được gọi là event listeners, nó thiết lập để lắng nghe cho sự xuất hiện của event cụ thể và tác động trở lại phù hợp

Trong chương này, bạn sẽ xây dựng một tiện ích mà sẽ giải thích cho mỗi cấu trúc

ActionScript Bằng cách tạo các event cho chuột và bàn phím, bạn sẽ vận dụng một vài thuộc tính phổ biến, cũng như thực thi một vài phương thức Rất nhiều các phần tử ActionScript có các thuộc tính, phương thức và event Để rõ ràng hơn, chúng tôi sẽ tập chung chính vào movie clip Sử dụng movie clip để làm trung tâm thảo luận của chúng ta sẽ tạo nó dễ dàng hơn để tham khảo hệ thống trợ giúp của Flash, tài nguyên trực tuyến, và các văn bản bổ sung

để thêm vào các thông tin, như bạn thấy để các thuộc tính khác có thể vận dụng

Trang 30

1 Các thuộc tính kế thừa

Một điều quan trọng trong tất cả để hiểu khi tham khảo các thuộc tính là các phần tử

ActionScript thường chia sẻ các thuộc tính phổ biến với các phần tử khác Một lý do cho điều này đó là chúng liên hệ với nhau trong một vài phương diện, như là con cháu cùng một cha

mẹ Trong trường hợp này, con kế thừa các thuộc tính từ cha của nó Chúng ta đã giới thiệu khái niệm này một chút ở trong chương 1 khi mà chúng ta nói về các class Xem xét các ý tưởng đó là một cô con gái, bởi sự khác nhau giới tính với cha cô ấy, một vài tính cách, hay thuộc tính, đó là khác biệt từ người cha Tuy nhiên, họ cũng chia sẻ một vài đặc điểm chung như là mắt, màu tóc

Chúng ta sẽ xem sự chia sẻ thuộc tính xâu hơn trong toàn bộ cuốn sách này, nhưng bây giờ, toàn bộ bạn cần biết là ActionScript tham chiếu thường được sắp xếp bởi các class, và nó cũng sẽ không cần thiết và cồng kềnh để liệt kê các thuộc tính giống nhau cho nhiều class liên quan Sự xem xét movie clip, ví dụ, mọi phần tử Flash có thể được hiển thị trên stage, movie clip nằm trong số chúng Có thể có tọa độ x, y hay vị trí trên stage Sự liệt kê các thuộc tính này cho mọi mục sẽ mất rất nhiều không giản và làm tài nguyên thêm chút khó khăn để đi qua toàn bộ

Để đơn giản hóa mọi thứ, thuộc tính x và y là kiểu được liệt kê các thuộc tính kế thừa, là đúng trong hệ thống Flash trợ giúp Để xem các thuộc tính kế thừa, ví dụ, trong hệ thống trợ giúp Flash, chỉ click vào link Show Inherited Public Properties sẽ tìm ra ngay lập tức bên dưới tiêu đề Public Properties

2 Properties (thuộc tính)

Nếu bạn nghĩ rằng các thuộc tính theo các cách mà để mô tả một đối tượng, chúng trở thành bản tính thứ hai Yêu cầu thông tin một movie clip ở đây là, ví dụ như, sự thiết lập chiều rộng mô tả ở các bước đó cả hai đều sử dụng các thuộc tính

Trong chương 2, chúng ta sẽ thảo luận ngắn gọn về mẫu đối tượng và cú pháp dùng dấu chấm đưa ra thứ tự và cấu trúc cho ActionScript cũng như là nhiều ngôn ngữ script và ngôn ngữ lập trình khác Sự tham chiếu một thuộc tính bắt đầu với một trường hợp cụ thể - gọi movie clip hình vuông của chúng ta là “box” bởi vì bạn phải quyết định các phần tử bạn muốn truy vấn tới hay thay đổ Nếu chúng ta xem xét một file kiểm tra chỉ duy nhất với một movie clip trong nó, ví dụ cụ thể như là “box”, toàn bộ những thứ còn lại là sự tham chiếu thuộc tính và một trong hai sự thiết lập hay nhận về giá trị

Để bắt đầu, chúng tôi sẽ thể hiện cho bạn cấu trúc để làm 5 thay đổi thuộc tính movie clip trong bảng sau Sau đó, khi chúng tôi giải thích làm thế nào để điều khiển các event trong các phần tiếp theo, chúng ta sẽ thay đổi các thuộc tính này tương tác với nhau Theo sau các

ví dụ giả sử rằng một movie clip một hình vuông trong stage, và có một tên cụ thể là “box” Hình 3-1 giải thích sự thay đổi cơ bản bằng mỗi thuộc tính Màu sáng của hình vuông là màu của stage khi movie clip được chuyển dịch đi.( thuộc tính alpha thể hiện trạng thái cuối

cùng) Nét đứt thuộc tính visible là chỉ thể hiện box là khi không visible

Trang 31

Bảng 3-1 thể hiện 6 thuộc tính movie clip với cú pháp ví dụ và chú ý về việc mỗi đơn vị của thuộc tính

Nếu bạn có kinh nghiệm với các version trước đó của ActionScript, bạn có thể để ý thấy một vài sự chuyển đổi trong cú pháp thuộc tính Trước tiên, các thuộc tính không bắt đầu bằng dấu gạch dưới Điều này có ích là đảm bảo tính chắc chắn với ActionScript 3.0 Còn hơn là

cú pháp thuộc tính không ổn định, có dấu gạch dưới hay không có dấu gạch dưới đừng ở đằng trước

Thứ hai, một vài dải giá trị được sử dụng từ 0-100 bây giờ là 0-1 Ví dụ bao gồm cả scaleX, scaleY, và alpha Thay vì sử dụng 50 để thiết lập một giá trị 50% , cụ thể là 0.5

Cuối cùng, trước tiên gọi phương thức sử dụng các thuộc tính scaleX và scaleY, hơn là

_xscale và _yscale, nó tương tự như AS1/AS2 Điển hình là các thuộc tính AS3 sẽ đưa ra các bản x, y của thuộc tính như là một hậu tố, để tham chiếu tới thuộc tính dễ dàng hơn

Bảng 3-1 thể hiện cú pháp thiết lập một thuộc tính Sự truy đến giá trị của thuộc tính, cũng được biết như sự trả về thuộc tính, nó rất là dễ dàng Ví dụ, nếu bạn muốn đưa ra giá trị

alpha của box, hay lưu trữ nó vào một biến, bạn có thể ghi cả hai như sau:

trace(box.alpha);

var bAlpha:Number = box.alpha;

Bạn có thể cũng sử dụng toán tử gán để dễ dàng cập nhật lại các giá trị Như code bên dưới thêm 20 đơn vị và giá trị rotation hiện tại của box

box.rotation += 20;

3 Events (sự kiện)

Các event làm cho thế giới Flash đi một vòng thế giới Chúng chịu trách nhiệm cho sự thiết lập các script của bạn trong hoạt cảnh, bởi ví chúng được thực thi Một nút có thể được tác động bởi sự kiện chuột, text fields tác động với các sự kiện bàn phím gọi các hàm bạn viết là thông qua các sự kiện tùy chọn

Các sự kiện thì đa dạng Thêm vào nữa các sự kiện hiển nhiên như là chuột và bàn phím nhập vào, hầu hết các lớp ActionScript đều có các sự kiện đó Ví dụ, các sự kiện được bắn ra khi xem một video, làm việc với text, và thay đổi kích thước stage Đòi hỏi các sự kiện này điều khiển ứng dụng của bạn, bạn cần phải tìm ra sự xuất hiện của chúng

Trong các version trước đó của ActionScript, có nhiều cách để bắt sự kiện Bạn có thể áp

Trang 32

dụng một script tự động cho một button, ví dụ, cách giải quyết là sử dụng on(Release) Như

kỹ năng ngôn ngữ, bạn có thể tạo các sự kiện xử lý và áp dụng chúng từ xa sử dụng các tên

cụ thể (instance names để chỉ tên các đối tượng), việc sử dụng myButton.onRelease là một ví

dụ Cuối cùng, bạn có thể sử dụng các sự kiện lắng nghe, chủ yếu với các thành phần hay các đối tượng tùy chọn

Trong ActionScript 3.0, việc bắt sự kiện được đơn giản hóa bằng cách dựa vào một phương pháp để xử lý toàn bộ các event, nó là sử dụng việc lắng nghe các sự kiện không quan tâm đến kiểu sự kiện hay làm thế nào để sử dụng được nó Lớp EventDispatcher để “giám sát” việc lắng nghe sự kiện không phải là mới, nhưng nó đã được cải tiến và bây giờ chịu trách nhiệm để xử lý phần lớn các sự kiện trong AS3

Class EventDispatcher cho phép bạn lắng nghe sự xuất hiện các sự kiện bằng cách đặt việc lắng nghe các sự kiện vào trong dịch vụ, loại bỏ toàn bộ code của bạn bằng việc loại bỏ sự lắng nghe từ dịch vụ, và điều chỉnh các sự kiện khi bạn cần một sự kiện xuất hiện cụ thể lúc nào Bạn có thể cũng kiểm tra xem một đối tượng lắng nghe đã được thiết lập cho sự kiện hay chưa, điều này chúng ta sẽ rõ hơn sau khi chúng ta nói về sự lan truyền sự kiện

Using Event Listeners (Sử dụng các Event Listener)

Các khái niệm việc lắng nghe sự kiện khà là đơn giản Hình dung rằng bạn đang trong hội trường chứa 100 người Chỉ một người trong khán thính giả đã đưa ra hướng dẫn làm thế nào

để trả lời khi người thuyết trình hỏi một câu hỏi cụ thể Trong trường hợp này, một người đã được nói cho nghe một sự kiện cụ thể, và hành động theo hướng dẫn đã được cung cấp khi sự kiện này xuất hiện

Bây giờ hình dung nhiều người trả lời cần phải được lên kế hoạch Ví dụ, khi người thuyết trình cần sân khấu, ánh sáng phải bị mờ đi Khi người thuyết trình nhấn lên một thiết bị cầm tay, một thiết bị nghe nhìn phải tiến lên trước video trong trình diễn Khi mỗi video kết thúc, người thuyết trình phải tác động lại bằng cách giới thiệu vật trưng bày tiếp theo trong bài diễn thuyết Cuối cùng, khi một khán thính giả giơ tay lên, một người trợ diễn thuyết sẽ mang một chiếc microphone tới giúp cho khán thính giả trong việc hỏi câu hỏi của họ

Đây là toàn bộ sự tác động trở lại của các sự kiện cụ thể đó xuất hiện trong quá trình diễn thuyết Một vài thứ đã được lên kế hoạch và hướng tới người tiếp nhận cụ thể như là gây ra tác động của kỹ thuật viên để tiến để đưa lên video tiếp theo trong trình tự Những cái khác không được lên kế hoạch, chẳng hạn như khi nào, hoặc thậm chí nếu một thính giả có một câu hỏi Mỗi nhóm thích hợp trong những thứ hỗn độn đã được nói nói sự kiện đó lắng nghe

và làm thế nào hành động lại khi và sự kiện đó xuất hiện

Tạo một sự kiện lắng nghe, nó hầu hết là cơ bản, và khá là không phức tạp Điều đó làm cho việc xử lý mọi thứ trở nên đơn giản hơn là thêm vào khả năng cho hệ thống và có thể được sử dụng các ưu điểm của bạn Bước chính đầu tiền là định nghĩa một chủ thể của việc lắng nghe, chúng có thể đã được nói để lắng nghe cho một sự kiện cụ thể Một ví dụ dễ dàng để hiểu đó

là một button có thể được nói cho biết lắng nghe một sự kiện chuột có thể tác động với script trước đó

Khi bạn đã định nghĩa được một phần tử mà có thể lắng nghe cho một sự kiện, bước chính tiếp theo là chọn một sự kiện thích hợp cho phần tử đó Ví dụ, nó cần xác minh cho một nút

để lắng nghe một sự kiện chuột, nhưng nó cần xác định ít hơn cho cùng button để lắng nghe

Trang 33

đến khi kết thúc một video hay đưa trở lại trạng thái ban đầu của stage Nó có thể thích hợp hơn cho video player để lắng nghe khi kết thúc đoạn video, và stage lắng nghe bất cứ sự kiện định lại kích cỡ ban đầu Mỗi phần tử tương ứng có thể sau đó hành động, hay chỉ dẫn cho cái khác hành động, khi một event xuất hiện nó là bước chính thứ ba trong sự thiết lập một listener

Để định nghĩa sự chỉ dẫn đó phải được thực thi khi một sự kiện xuất hiện, bạn dễ dàng để viết một function và nói cho các sự kiện lắng nghe một tham số để gọi hàm khi mà các sự kiện xuất hiện Các function đó sự dụng tham số để nhận thông tin các sự kiện mà được gọi

nó, cho phép hàm sử dụng một vài từ khóa của dữ liệu trong quá trình nó thực thi

rotate_right_btn.addEventListener(MouseEvent.MOUSE_UP, onRotateRight);

function onRotateRight(evt:MouseEvent):void {

box.rotation += 20;

}

Để liên kết chúng cùng nhau, phương thức addEventListener() được sử dụng để định nghĩa

sự kiện và chỉ định chức năng để thực thi các đối tượng đó được hỗ trợ cho việc lắng nghe Hãy trở lại ví dụ với button, button này có thể lắng nghe cho sự kiện mouse up Button được

gọi là rotate_right_btn, và chức năng có thể thực thi là onRotateRight() Code như thế này: rotate_right_btn.addEventListener(MouseEvent.MOUSE_UP, onRotateRight);

function onRotateRight(evt:MouseEvent):void {

box.rotation += 20;

}

Trong dòng 1, bạn bắt đầu với tên của button và sau đó thêm phương thức

addEventListener() Phương thức yêu cầu 2 tham số bắt buộc Tham số đầu tiên là sự kiện

mà bạn muốn lắng nghe Mỗi sự kiện bạn sẽ cố gắng bắt lại, nó là sự kiện gắn kèm(built-in) hay là một event tùy chọn của bạn, ban đầu trong lớp đó định nghĩa sự kiện đó, và chính các

sự kiện luôn được định nghĩa như một hằng số trong lớp đó Ví dụ, lớp MouseEvent chứa đựng các hằng số mà ám chỉ các sự kiện chuột như là mouse up và mouse down Ví dụ này

sử dụng hằng số MOUSE_UP để tham chiếu đến sự kiện mouse up Một ví dụ khác gồm có hằng số ENTER_FRAME trong lớp Event, mô phỏng cập nhật bắt đầu play và sự kiện

KEY_UP trong lớp KeyboardEvent để bắt giữ người dung nhập từ bàn phím Chúng ta sẽ xem cả hai sự kiện này sau trong chương này

Tham số thứ hai là hàm có thể được gọi khi mà sự kiện đã nhận được Trong ví dụ này, một tham chiếu đến hàm onRotateRight(), được định nghĩa từ dòng 2 đến dòng 4, đã được thiết lập Bạn hầu như chắc chắn quen thuộc với cấu trúc của hàm từ sự thảo luận về hàm trong chương 2 Để xem lại, nội dung của hàm được định nghĩa bằng cặp dấu ngoặc nhọn Trong trường hợp này, dòng 3 thêm 20 đơn vị cho giá trị rotation(phép quay) hiện tại của movie clip “box” Cũng được giải thích trong chương 2, giá trị void mà theo sau tên hàm và dấu ngoặc chỉ cho biết rằng không có giá trị gì được trả về bởi hàm đó

Những gì không được giải thích đầy đủ là các đối số của hàm mà nhận từ các sự kiện đó Không giống như các hàm tùy chỉnh, đối số trong các hàm lắng nghe sự kiện phải được yêu cầu Trong đoạn code ví dụ sau, nó được đặt tên tùy là evt và nhận thông tin về phần tử phát động sự kiện Nếu hữu ích, bạn có thể truyền thông tin từ tham số này để sử dụng trong hàm, điều này bạn sẽ thấy bên dưới đây Tham số phải được gõ để các dữ liệu dự kiến Điều này

Trang 34

sẽ giúp cho bạn tìm ra các lỗi nếu một sự kiện gõ không đúng loại nhận được Trong trường hợp này, bởi vì chúng ta đang lắng nghe cho MouseEvent, đó là loại dữ liệu được sử dụng cho tham số đó

Để minh họa điều này, hãy xem các ví dụ sự kiện chuột khác Tuy nhiên lúc này, chúng ta sẽ xem nhiều sự kiện, và truyền các thông tin từ các đối số để hiển thị một vài lợi ích của cấu trúc này

Trong ví dụ này, 2 sự kiện lắng nghe được chỉ định cho một movie clip Một lắng nghe cho

sự kiện mouse down, cái khác lắng nghe cho mouse up Mỗi chúng gọi các hàm khác nhau Tuy nhiên trong cả hai hàm, thuộc tính target của sự kiện, nó được tìm từ tham số của hàm, được sử dụng để định nghĩa các phần tử nhận được từ sự kiện chuột Điều này cho phép hàm

ở dòng 3 bắt đầu việc kéo movie clip mà đã được click, cả hai không chỉ rõ movie clip bởi chính tên của nó (hiểu rằng nó thông qua target chứ ko chỉ ra đối tượng movie clip cụ thể) Cách tiếp cận chung này rất hữu ích bởi vì nó làm cho hàm trở nên mềm dẻo hơn Hàm có thể tác đụng lên bất cứ item thích hợp mà được click hay được truyền qua đối số của nó Nói cách khác, giống như hàm có thể bắt đầu và dừng việc kéo bất kỳ movie clip mà cùng sự lắng nghe đã được thêm vào

Trong các file mã nguồn đi kèm, file start_stop_drag.fla thể hiện điều này bằng cách thêm dòng dưới này vào sau ví dụ trước:

myMovieClip2.addEventListener(MouseEvent.MOUSE_DOWN, onStartDrag);

myMovieClip2.addEventListener(MouseEvent.MOUSE_UP, onStopDrag);

Một cách dễ dàng bởi việc thêm vào các movie clip để thực hành, và chỉ định sự lắng nghe, bạn có thể kéo và thả mỗi movie clip

Using Mouse Events to Control Properties

Sử dụng Mouse Event để điều khiển các thuộc tính

Bây giờ chúng ta có thể kết hợp cú pháp chúng ta bao hàm trong phần “Thuộc tính” và “Sự kiện”, thiết lập điều khiển tương tác trên các thuộc tính Trong thư mục chương 03 kèm theo

mã nguồn cho cuốn sách này, bạn sẽ tìm một file gọi là props_events.fla Nó chứa đựng những gì hơn là movie clip “box”, và 2 button trong thư viện đó được sử dụng để lặp lại sự thay đổi 4 thuộc tính đã thảo luận dễ dàng hơn Movie clip chứa đựng các con số thể hiện các frame của nó là thấy được trong bất kỳ thời gian nào, và một tên đối tượng của mỗi button sẽ tương ứng với mục đích đó Bao gồm move_up_btn, scale_down_btn,

rotate_right_btn, fade_up_btn, and toggle_visibility_btn, giữa những cái khác Bắt đầu phần chính của chương dự án chứa đựng một vài button mà sẽ thay đổi các thuộc tính của movie clip trung tâm Hình 3-2 thể hiện bản thiết kế của file

Trang 35

Hình 3-2 Bản thiết kế của file props_events.fla

Bắt đầu với sự di chuyển, chúng ta cần định nghĩa một hoặc nhiều hàm để cập nhật vị trí của movie clip Đây là hai cách cho nhiệm vụ này Trước tiên là tạo một hàm cho toàn bộ sự di chuyển mà sử dụng điều kiện để quyết định làm thế nào để phản ứng lại mỗi sự kiện Chúng

ta sẽ giải thích những thứ đó khi chúng ta thảo luận về sự kiện bàn phím Bây giờ, chúng ta

sẽ đơn giản nhằm vào cách định nghĩa một hàm cơ bản riêng rẽ cho mỗi loại di chuyển như thể hiện ở ví dụ 3.1

Trang 36

dừng lại bằng cách sử dụng phương thức stop() của nó Giống như các thuộc tính, các

phương thức xuất hiện sau cú pháp là dấu chấm đó là một quy tắc của ActionScript, sau đó các đối tượng gọi phương thức Ví dụ, nếu movie clip “box” trong timeline chính sử dụng phương thức stop(), cú pháp sẽ trông như thế này:

box.stop();

Using Keyboard Events to Call Methods

Sử dụng các sự kiện bán phím gọi các phương thức

Việc bắt giữ các sự kiện bàn phím rất là đơn giản hơn là bắt sự kiện chuột, với một ngoại lệ

Trang 37

đáng chú ý: đích nhắm tới của việc lắng nghe sự kiện là không theo tuần tự đối tượng bạn mong muốn để điều khiển Khi làm việc với text, text field được điều khiển, thực vậy sự phục vụ như là đích nhắm tới của các sự kiện bàn phím Khi sự điều khiển các movie clip, tuy nhiên trạng thái là chính nó thường là một sự hữu ích, đối tượng nhận sự kiện bàn phím tập trung vào đó

Sự thêm vào việc lắng nghe các trạng thái nghĩa là bạn có thể xử lý toàn bộ các phím sự kiện với một sự lắng nghe đơn giản, và sau đó tách ra duy nhất các phím sự kiện được đòi hỏi với một điều kiện, đưa ra các hướng dẫn phù hợp Để đơn giản cú pháp phần cuối cùng của việc giải thích script, Chúng tôi sẽ sử dụng mẫu switch của câu lệnh điều kiện Câu lệnh switch, xem lại trong chương 2, nó đơn giản hơn cả việc sử dụng cấu trúc điều kiện if/else-if

stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyPressed);

Chúng ta sẽ bắt đầu bằng việc thêm vào việc lắng nghe cho các trạng thái Trong trường hợp này, chúng ta sẽ xem sự kiện key down, nó được cụ thể bằng việc sử dụng một hằng số giống như hầu hết các sự kiện được định nghĩa trước đó, nhưng lúc này nó là một phần của lớp KeyboardEvent Khi sự kiện xuất hiện, việc lắng nghe sự kiện của chúng ta sẽ gọi hàm onKeyPressed()

Tiếp theo, chúng ta sẽ định nghĩa hàm onKeyPressed(), để sử dụng kiểu giá trị đối số nhận được như KeyboardEvent Cuối cùng, chúng ta phân tách thuộc tính keyCode từ thông tin sự kiện đưa tới đã được lưu vào đối số evt keyCode là số duy nhất được chỉ định cho mỗi phím

và cho phép bạn xác định các phím đó đã được nhấn hay chưa

Một giá trị keyCode được chỉ định cho mỗi phím, để giá trị này không thể được sử dụng cho trường hợp phím kiểm tra như là chữ hoa “S” có cùng keyCode như là chữ thường “s” Nếu bạn cần phân tách các trường hợp chính xác, sử dụng charCode, nói chỉ có các giá trị duy nhất cho mỗi trường hợp

Để chỉ cụ thể mỗi phím, chúng ta sẽ sử dụng các hằng số đã được định nghĩa trong lớp

KeyBoard, hơn là phải nhớ mỗi giá trị số keyCode Điều này tạo cho nó sự dễ dàng để tham chiếu đến các phím Enter/Return như là Keyboard.ENTER, phím mũi tên bên trái như là Keyboard.LEFT, v v…

Chúng ta sẽ sử dụng 5 phím để gọi 5 phương thức Khi mỗi phím chỉ định được nhấn, nó sẽ thực thi các phương thức tương ứng, và sau đó nhảy ra ngoài câu lệnh switch Chúng ta cũng thêm vào một trạng thái giá trị mặc định khi đó sẽ chỉ ra keyCode của các phím khác được nhấn Phấn script cuối cùng trông như thế này:

Trang 38

Code này có thể thấy trong file methods_events.fla trong mã nguồn kèm theo, cũng như các file kết hợp, props_methods_events.fla, nó bao gồm cả các thuộc tính và phương thức ví dụ trong chương này

Cảnh báo

Sự phụ thuộc trong sự thiếp lập của bạn, nhiều phím sự kiện sẽ không có hàm thích hợp trong Flash khi sử dụng điều khiển Control>Test Movie Điều này có lẽ không gây lỗi nhưng thay vào đó kết quả của Flash Player sử dụng các phím tắt bàn phím giống như ứng dụng Flash làm Để kiểm tra phím sự kiện, đơn giản sử dụng Control>Disable Keyboard Shortcuts trên menu điều khiển để vô hiệu hóa các phím tắt trong Player (điều đó là sau khi yêu cầu Test Movie) Để đảm bảo rằng lại cho phép các phím tắt, hay bạn không muốn có thể sử dụng cmd+W (với hệ điều hành Mac) hay Ctrl + W (với Windows) để đóng cửa sổ, hay sử dụng các phím tắt tương tự Như một sự lựa chọn, bạn có thể kiểm tra movie trong một trình duyệt

5 Event Propagation (Lan truyền sự kiện)

Đến nay trong chương này, chúng ta đang làm việc với các đối tượng trong danh sách hiển thị Chúng ta sẽ giải thích danh sách hiển thị nhiều chi tiết hơn trong chương tới nhưng về bản chất danh sách hiển thị chứa đựng toàn bộ các đối tượng cơ bản trong file của bạn Nó bao gồm stage, mọi file SWF được load, các hình, các nút v.v, cho đến toàn bộ các clip lồng nhau

Các đối tượng trong danh sách hiển thị là một phần của các luồng sự kiện đặc biệt thường được quy cho như là luồng sự kiện Khi mà đích của các sự kiện nào đó, bao gồm cả sự kiện chuột và bàn phím là trong danh sách hiển thị, sự kiện này không gửi ngay lập tức đến đích

sự kiện Thay vào đó, nó được gửi đến danh sách hiển thị, và sự kiện lan truyền từ đầu danh sách xuống đích sự kiện và sau đó nổi (làm việc theo hướng của nó) ngược trở lại toàn bộ sách hiển thị lần nữa

Xem xét hai movie clip (mc2 và mc3) trong movie clip (mc1) đó trên stage Tiếp nữa, hình dung rằng đích của sự kiện được lồng vào movie clip mc2 Khi sự kiện được yêu cầu xuất hiện, nó không gửi ngay lập tức tới mc2, nhưng đúng hơn là danh sách hiển thị Trước tiên,

Trang 39

stage nhận sự kiện, sau đó mọi thứ xác đáng được load được các file SWF (bao gồm cả timeline chính, trong ví dụ này), sau đó movie clip cha mc1, và sau đó là đích của sự kiện mc2 Sau khi sự kiện nhận được qua đích đến, nó sau đó truyền ngược trở lại danh sách hiển thị mc2, root, và stage Hình 3-3 miêu tả quá trình, thể hiện sự kiện chuột gửi từ trên danh sách hiển thị là stage, làm theo cách của nó đi qua timeline chính và movie clip cha cho tới khi nó tìm thấy đích sự kiện, và sau đó nổi lên trở lại qua lại danh sách hiển thị

Hình 3-3 Quá trình lan truyền sự kiện

Sự lan truyền sự kiện có thể được sử dụng cho các ưu điểm lớn với một chút hoạch định Ví

dụ, hãy nói cả hai movie clip lồng vào nhau được thiết kế để tác động lại các sự kiện mouse over và mouse out Bất cứ khi nào người dùng cuộn chuột lên trên một trong các clip đó, nó

sẽ thay đổi giá trị alpha chỉ ra sự tương tác Trong trường hợp này, thông thường bạn có thể phải gắn sự lắng nghe cho mỗi sự kiện cho mỗi movie clip Đoạn code ví dụ sau, và hình 3-4 thể hiện kết quả, ở đây mỗi movie clip được thể hiện bởi một thư mục: folder0 và folder1 Ví

dụ 3-2 thể hiện code file ví dụ

Trang 40

Hình 3-4 Sự tác động thay đổi giá trị alpha sử dụng sự kiện mouse over and mouse out

Bây giờ hình dung rằng đang sử dụng cùng cách đó cho mọi folder, xem ở hình 3-5 Mã có thể khá là bao quát với toàn bộ sự lắng nghe cho mỗi folder Tuy nhiên, với sự lan truyền sự kiện, nó có thể được gắn việc lắng nghe movie clip cha, folder_group (được đánh dấu bằng đường nét đứt) Sự kiện sẽ đổ xuống qua danh sách hiển thị, và hàm lắng nghe sự kiện thông thường đơn giản sẽ phân tách đối tượng đó với đích mong đợi Mã đó bao gồm được rút gọn hơn nhờ có sự lan truyền sự kiện

folder10, hàm lắng nghe sự kiện sẽ biết folder nào là đích tới bằng thuộc tính phân tách target của sự kiện, và giá trị alpha tương ứng với mỗi folder sẽ được thay đổi Điều này được thấy trong file mã nguồn event_propagation2.fla Hình 3-5 tái tạo lắng nghe sự kiện không được gắn cho mỗi folder, nhưng thay vào đó là movie clip cha (được thể hiện bằng nét đứt) bên trong nó là mỗi folder được đặt Theo cách mà sự kiện lan truyền, sự kiện mouse over và mouse out tự động được gửi tới danh sách hiển thị ở đây chúng được nhận bởi mỗi con của movie clip đích

Ngày đăng: 30/01/2020, 07:51

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

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

w