Ebook Thực hành ActionScript 3.0

137 109 0
Ebook Thực hành ActionScript 3.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

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.

LỜI NÓI ĐẦU Khi định sách tay bạn tài nguyên tốt cho thư viện bạn Nó giúp bạn biết chúng tôi, tác giả viết sách đặc biệt Chúng tơi hai lập trình viên sử dụng Flash toàn ngày làm việc chúng tôi, 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 trình đào tạo, hội nghị, lúc chúng tơi chia sẻ số king nghiệm quan trọng Chúng tơi qn nói nhiều đặc trưng sách ActionScript phù hợp với nhóm người bắt đầu Trước tiên ngạc nhiên thực vượt q quan điểm, sau chúng tơi nhận thức rõ không đủ thông tin để tạo thành đánh giá Chúng không sử dụng tài nguyên người bắt đầu công việc chúng tơi có chương trình giảng dạy cá nhân để dựa vào Nên, bắt đầu nghiên cứu làm chúng tơi lấp đầy thiếu hụt cung cấp sách cho sinh viên để thực giúp họ bên ngồi lớp học Chúng tơi nói với nhiều sinh viên, nhóm người sử dụng, người dạy bắt đầu phác thảo sách mà nghĩ đưa chúng tơi học thực tiễn Khi ActionScript 3.0 phát hành, nhóm số người quan tâm tăng đột ngột Một loạt phản ứng từ tình trạng bị kích động đến kính sợ, việc học ActionScript 3.0 bẻ cong trở nên dễ dàng Nói Platform Flash tách mảnh thành Flex (“người phát triển”) Flash (“Người thiết kế”) gây cho nhiều người thiết kế người lập trình khơng rõ ràng tương lai chúng Khi Flash CS3 Professional vừa phát hành, nhu cầu cần cho tài nguyên hướng dẫn không giải (và nhiều trường hợp, tăng thêm), chúng tơi biết thời gian để phát triển sách mà bạn nắm giữ Chúng hy vọng sách giúp người dùng Flash từ người muốn tìm hiểu đến người hoảng sợ, từ người háo hức tới người có kinh nghiệm nắm lấy khả hiệu xuất ActionScript 3.0 Chúng hy vọng trang làm giảm chuyển sang từ thứ phiên trước đó, thứ gì, ActionScript phải sử dụng, lớn cấu trúc thay đổi từ ngôn ngữ bắt đầu Cuốn sách hướng vào người thiết kế phát triển Flash với ActionScript thời gian đầu, người lập trình tìm thấy nhạy bén để hiểu biết ActionScript 3.0 Mặc dù chúng tơi cảm thấy bìa sách bản, hiểu biết giao diện Flash số lượng nhỏ kinh nghiệm viết kịch nắm Chúng tin giải thích rõ ràng tài liệu đủ ngắn gọn để người đọc bắt đầu, nên bạn người bước vào lập trình, chúng tơi chào mừng bạn! Tuy nhiên, bạn có chút trọng yếu, khuyên bạn nên lướt qua chương để xem bạn nghĩ cung cấp đủ quy tắc cốt lõi lập trình để lấp đầy lỗ trống hiểu biết bạn, hai chương đầu cung cấp cở sở xây dựng chương khác Cũng vậy, bạn lập trình viên tương đối có kinh nghiệm với ActionScript 2.0, bạn muốn nhìn qua vài chương thích thú trước định dù sách dành cho bạn hay không Chúng làm bật vấn đề chuyển từ ActionScript 2.0 sang ActionScript 3.0, muốn bạn vui vẻ với đặc điểm không gặp khó khăn với phương pháp chúng tơi thơng qua trước bạn định tin dùng sách Chúng cố gắng để dạy nguyên tắc sau chương mẫu, số chương, tổng số trang phân loại dễ dàng Trong nhiều trường hợp, cần khoảng thời gian để đọc xuyên xuốt phần chắn điều mà sách mang lại cho bạn Không giống sách ActionScript 3.0 khác mà xem, sách không dựa nhiều nguyên tắc lập trình hướng đối tượng Nếu bạn không quen với hạn chế này, đừng lo lắng Bạn có sách thích hợp tay bạn bạn học thêm với chương Chúng biểu thị khái niệm bao chùm lên chương sử dụng tập trung cú pháp thực timeline, đưa vào khái niệm OPP với phương pháp Năm chương bao gồm đưa event ActionScript 3.0 cách thức hiển thị nội dung (the display list) – khơng đưa thêm vào số lượng nội dùng lớp hay liên quan đến hướng đối tượng Bắt đầu chương 6, cung cấp thêm đưa hướng đối tượng, bắt đầu với lập trình hướng đối tượng bản, tiếp tục chín chương 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 ví dụ Nếu bạn hứng thú bạn với ví dụ lập trình hướng đối tượng từ giai đoạn đầu, tồn ví dụ chương dùng lớp mẫu tải xuống mã nguồn Điều không cung cấp bước nhảy ban đầu cho thứ với vài kinh nghiệm lập trình hướng đối tượng, đáp ứng hội tiếp thu kiến thức bạn tự tìm tiến xa chút để tiếp nhận thay đổi (curve) Tốt nhất, nét đặc trưng Document Class Flash CS3 Professional cho phép bạn bắt đầu sử dụng lớp nhanh trước đây, cho phép lớp đáp ứng phục vụ cho (stand-in) timeline nhiều file fla Tồn bạn có để sử dụng gõ vào tên lớp Flash Property Inspector ( bạn đợi để học thêm, bước sang đoạn “The Document Class” chương 1) Cuối cùng, thiết kế dự án triển khai liên quan trặt trẽ với sách Bắt đầu với chương 7, chương theo sau lập trình hướng đối tượng bản, download mã nguồn đặc trưng gói lớp cho chương Các lớp bao gồm phương thức tiện ích thuộc tính mà sử dụng project bổ sung Khi bạn cảm thấy yên tâm (comfortable) với cú pháp ActionScript 3.0, nguyên tắc lập trình hướng đối tượng, bạn củng cố (reinforce) bạn học cách xây dựng project Những file sử dụng website đồng hành (companion) sách, mà chúng tơi nói lúc Chúng cố gắng để thiết kế sách chứa đựng nhiều yếu tố cần thiết (essentials) ActionScript chúng tơi tính đến (include), dựa vào (given) phạm vi khn khổ Phần I: Sự bắt đầu Phần I bắt đầu với chương 1, thảo luận ActionScript 1.0, 2.0, 3.0, khác version sử dụng Flash CS3 Professional ứng dụng Flash Player Nó kết thúc(concludes) với chương xem xét việc xây dựng khối ngun tắc cốt lõi ngơn ngữ trung gian ActionScript Phần II: Đồ họa tương tác Chương bắt đầu(leads off) phần II, đoạn dài sách, với giải thích từ vựng ActionScript: propertises, methods, events (kể nét riêng biết khác ActionScript 3.0) Chương tập trung nhiều vào nội dung hiển thị, chương bao chùm (covers) điều khiển timeline, chương đưa lập trình hướng đối tượng Chương thảo luận đối tượng hoạt hình sử dụng ActionScript, chương 8, chương nói (explain) việc vẽ với code Phần III: Văn Chương 10 chương phần tập trung định dạng văn bản, hỗ trợ HTML, sử dụng định kiểu trình bày trang (cascading style sheets) Phần IV: Âm Video Chương 11 mở phần IV với thảo luận âm Thêm vào việc vận dụng (manipulating) âm bên (internal) bên ngồi(external), tác động (touches) metadata ID3 đưa đến kết (culminate) với vận dụng (exercise) để hình dung (visualization) âm hiệu quả, việc lấy mẫu sóng âm phát lại Chương 12 bao (wraps up) phần IV việc thể (demonstrating) làm để chơi video với khơng có thành phần nào, giống làm để đặt phụ đề video bạn để tiếp cận nhiều thứ tiếng 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 gửi liệu server hay client khác Chương 13 bao gồm loading file SWF, images, liệu mã hóa URL, giống việc truyền thông ActionScript 3.0 ActionScript 1.0/2.0 load file SWF, thảo luận ngắn vấn đề(issues) bảo mật Chương 14 bao gồm XML chuẩn để làm việc với XML làm cho công việc dễ dàng với đối tượng, phương thức, thuộc tính ActionScript Phần VI:Lập trình thiết kế tài ngun Chúng tơi trình bày phần IV sách Chương 15 cần xem chút phương pháp lập trình, hướng đối tượng mẫu thiết kế, tài nguyên để nghiên cứu thêm Cuốn sách tập trung vào ActionScript 3.0, áp dụng cho hầu hết phân đoạn Flash platform, trình bày mơi trường Flash CS3 Professional Như không bao gồm Flex, AIR, Flash Media Server, hay cơng nghệ platform Flash khác Thêm nữa, khơng chứa đựng kỹ thuật lập trình hướng đối tượng, khơng tài liệu theo chiều xâu Để biết thêm thông tin đ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, sách hiểu khó khăn mà giới hạn phạm vi đưa Duyệt qua bảng nội dung cho bạn ý tưởng hay chủ đề đề cao và, vài trường hợp, tốt cho thứ mà bao hàm tài liệu Tuy nhiên, chút đáng ý ActionScript mà không thảo luận theo mức độ trung bình nâng cao Nó bao gồm kết nối sở 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, tạo thành phần cho riêng bạn Chúng tơi khơng nói tài liệu tham khảo Nếu bạn lập trình viên ActionScript có kinh nghiệm tìm kiếm nhanh chóng với phiên 3.0 ngơn ngữ Chúng khuyên bạn nên đọc ActionScript 3.0 Cookbook, tác giả Joey Lott, Keith Peters, and Darron Schall(O’Reilly) Nếu bạn xem tham khảo toàn sách, khuyên bạn thử sách Essential ActionScript 3.0 Colin Mook(O’Reilly) Cuốn sách chúng tơi phục vụ hữa ích cho người nói tiêu đề, đặc biệt bạn khơng phải người dùng cao cấp, khơng thay khác Phần I: Bắt đầu Chương 1: Tổng quan ActionScript Chương 2: Cốt lõi ngôn ngữ Phần I bắt đầu sách với tập hợp(collection) tổng quan bản, trải qua chương Nó bắt đầu với nhìn khái qt ActionScript, cung cấp danh sách đặc trưng bật, giải thích tóm tắt thủ tục lập trình hướng đối tượng, ý quan trọng sách xếp Nó kết luận với việc xem lại cốt lõi ngơn ngữ bản, hầu hết chúng lại phù hợp với toàn version ActionScript Tài liệu bắt đầu sách đưa lời giới thiệu ActionScript ngôn ngữ mới, hay làm chúng với quen thuộc với nó, 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 Action Script Trong chương này: -ActionScript 3.0 gì? -Flash Platform -Lập trình thủ tục hướng đối tượng -Document Class -Tính tương thích Code -Những tiếp theo? Khi bạn muốn biết ActionScript để bắt đầu cơng việc với version mới, nhìn tổng quan tóm tắt phát triển cho bạn hiểu thấu bên sử dụng – đặc biệt liên quan tới Flash Player làm vận dụng(handles) với phiên khác ActionScript Giới thiệu ngắn gọn chương cho bạn nhìn nhanh ActionScript 3.0 phù hợp với tiến trình làm việc bạn(workflow), bao gồm: ActionScript 3.0 gì? Nó trơng đợi (expected) phiên ActionScript mang lại tính Tuy nhiên, phiên viết lại từ đầu chí xử lý tách biệt từ phiên ActionScript trước runtime Điều cố ý đẩy nhanh (splintering) Flash Player làm tăng thi hành cách đáng kể, mang đến cho giới hạn nhiều phiên ActionScript tác động đến Flash Platform Vào thời điểm viết sách này, ActionScript 3.0 ngơn ngữ lập trình bên Flex AIR (ứng dụng Adobe Inegrated Runtime) Sự khác trình dịch mơi trường cụ thể ngăn ngừa file viết ActionScript 3.0 làm việc khía cạnh Flash Platform, nguyên tắc thực nhiều ngôn ngữ nơi Ngơn ngữ lập trình hướng thủ tục hướng đối tượng Nhiều ý (great deal of) tập trung vào lập trình hướng đối tượng (object – oriented programming_OPP) có tiềm với ActionScript 3.0, khả sức mạnh ngôn ngữ thực phát huy (shine) phạm vi Tuy nhiên, bạn chuyển sang ActionScript 3.0 dễ dàng khơng có nghĩa là bạn trở thành chuyên gia OPP Nó sử dụng tập hợp cấu trúc hàm mơ tả cách lập trình hướng thủ tục, để viết dự án ActionScript 3.0 Ngoài ra, sử dụng Flash CS3, viết code timeline, coding riêng (exclusively) với lớp bên ngồ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 sở lập trình hướng đối tượng ActionScript 3.0 làm trở nên mạnh mẽ mang lại cho tính quan trọng khác, ngơn ngữ lập trình hướng đối tượng cở (như Java) thực việc chuyển ngôn ngữ dễ dàng chút The Document Class Lập trình hướng đối tượng không dành cho người, dành cho người bắt đầu chặng đường này, Flash CS3 cung cấp lối vào đơn giản cho ứng dụng lập trình hướng đối tượng cách tạo lớp tài liệu(Document class) Một thuộc tính Properties Inspector, bạn cần rõ lớp điểm bắt đầu bạn, khơng có script timeline yêu cầu Tính tương thích code để lại Bởi ActionScript 3.0 khơng thể trộn lẫn với phiên trước ngơn ngữ file giống nhau, phát triển dự án hỗ trợ code cũ không Chúng giới thiệu ngắn gọn vấn đề phức tạp thảo luận chúng rộng xâu chương ActionScript 3.0 gì? Mặc dù ngơn ngữ kịch bên version Flash chứa đựng nhiều thứ giống với việc sử dụng phiên trước đó, chắn nghĩ tới ActionScript 3.0 với thứ hoàn toàn mới, với vài lý đơn giản Trước tiên, vài thứ khác biệt, mẫu event thành phần hiển thị Thứ hai, thay đổi tinh tế chạy với ngơn ngữ yêu cầu vài ý chúng thích hợp với chất thứ hai Điều ln mối quan tâm nhỏ, giống coi nhẹ thay đổi tên thuộc tính Và quan trọng là, mặc dù, ActionScript 3.0 viết lại từ đầu sử dụng code khác phiên trước ngôn ngữ Sự tối ưu mang lại thi hành tăng lên ấn tượng, có nghĩa code ActionScript khơng thể pha trộn với version trước ngơn ngữ file Cái Version này, mặc dù, đe dọa bạn Nó đường nghiên cứu khó khăn với ActionScript 3.0 so với version trước đó, điều thường chức cho tính mạnh mẽ phiên trước gây khó khăn Điển hình, điều đ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 với thứ Để giúp bạn nhận thay đổi, vài điều đáng ý đặc tính ActionScript 3.0 Ghi nhớ điều giúp bạn thực dễ dàng để chấp nhận thay đổi, đặc biệt thay đổi ban đầu gây chán nản hay phức tạp Một vài đặc điểm lựa chọn bao gồm: Thêm lỗi thông báo ActionScript 3.0 yêu cầu nghiêm ngặt kiểu liệu biên, tham số, giá trị hàm trả về, nhiều thứ Kiểu liệu thảo luận Chương 2, sôi giảm bớt để nói thơng dịch loại liệu bạn mong đợi làm việc vài trường hợp cụ thể Sự kiểm tra kiểu liệu giói thiệu ActionScript 2.0 tùy chọn trước Tăng ép buộc kiểu liệu cải thiện kiểm tra lỗi cung cấp nhiều thông tin coding cho phép bạn xác định vấn đề Thêm nữa, ActionScript 3.0 đòi hỏi kiểu liệu tĩnh với runtime Điều cải thiện tính tin cậy kiểu liệu runtime, cải thiện thi hành giảm nhớ sử dụng kiểu liệu lưu trữ máy code buộc phải đặt địa động runtime Sự cải tiến cú pháp Vấn đề cú pháp thống quét dọn tồn ngơn ngữ Ví dụ như, tên thuộc tính làm sáng sủa vài trường hợp, làm cho quán cách loại bỏ đầu gạch dưới, bạn xem chương Hơn nữa, tính phức tạp, tinh tế cách tiếp cận giống tương tự tác vụ làm quán, giống loading tài sản bên (được thảo luận chương 13) hay liên kết tới URL (như xem toàn sách) Cấu trúc hiển thị Nhiều phương thức trước tự động thêm vài thứ vào môi trường hiển thị thống Danh sách hiển thị đơn giản hóa trình xử lý cách đáng kể làm dễ dàng để chuyển sang thứ tự trực quan kiểu nạp chồng, cha, anh chị em ruột có mối quan hệ thứ bậc, đối tượng hiển thị Như chuyên đề lớn được giới thiệu ActionScript 3.0, thảo luận với độ dài chương Cấu trúc kiện Vẫn ví dụ cải tiến tính bền vững, tồn event giải kiện lắng nghe (event listener) – thực chất lắng nghe cho event cụ thể xuất hiện, sau tác động trở lại tương ứng Cái kiểu event mạnh mẽ hơn, cho phép kiện chuột bạn phím truyền xuyên suốt nhiều đối tượng danh sách hiển thị Kiểu event thảo luận chương Cải tiến cách trình bày XML Trước xử lý cồng kềnh, làm việc phức tạp với tài liệu XML dễ dàng với ActionScript 3.0 Thông qua chuẩn thông thường dựa vào E4X, ActionScript xem đối tượng XML cách thông minh quen thuộc Phương pháp cho phép bạn sử dụng cú pháp dấu chấm với chuỗi đối tượng liên quan Nhiều lựa chọn kịch Phương thức xử lý văn cho phép nhiều điều khiển nhỏ thao tác text Bây bạn tìm text dòng nói riêng văn bản, số ký tự dòng, ký tự với xác định (như chuột) Bạn tìm số mục văn ký tự đoạn, chí tìm tối thiểu xung quanh phạm vi hình chữ nhật với ký tự Toàn lựa chọn không làm việc với văn dễ dàng, cho phép tích hợp vừa khít với dòng ký tự trường phạm vi trình diễn phần tử chúng Text thảo luận chương 10 Các biểu thức thơng thường Cùng với lợi ích cho xử lý văn hỗ trợ cho biểu thức thông thường Các biểu thức thông thường giống thao tác với text Thay cụ thể thao tác tay, xâu biết ký tự, bạn thao tác văn sử dụng ký tự đại diện (wild cards), loại ký tự (số, chữ, dấu chấm câu, … ), ký tự trắng (các dấu cách, tabs, returns), ký tự lặp lại, khác Một ví dụ đơn giản biểu thức thông thường sử dụng tìm thấy chương 10 Thêm lựa chọn quản lý âm Các khả âm ActionScript nằm số thay đổi đáng ý ngôn ngữ Trên mức độ thực tế, chúng cải tiến truy cập tới với âm riêng lẻ toàn âm playing Các âm đặt thành kênh, làm chúng dễ dàng để làm việc với nhiều âm riêng lẻ, hội tụ toàn âm suốt âm pha trộn để tập hợp điều khiển Bạn lấy biên độ tần số phổ liệu từ âm lúc phát lại Âm thảo luận chương 11 Cách truy cập liệu thô Cần cao cấp nữa, bạn truy cập liệu nhị phân runtime Các byte riêng lẻ liệu đọc download, âm chơi lại, hay thao tác với liệu ảnh bitmap, cho tên vài ví dụ Các byte lưu trữ danh sách lớn truy cập nhanh có hiệu Chúng tơi thể ví dụ kỹ thuật chương 11 thảo luận âm ảo Tự động phạm vi quản lý Trong ngơn ngữ lập trình, từ phạm vi đôi lúc sử dụng để xác định khu vực mà đối tượng tồn Một tài sản Flash, movie clip, phần Flash movie khơng khác Ví dụ, movie clip lồng vào bên trong hai movie clip tìm thấy timeline Cái movie clip lồng tồn clip khơng khác Phạm vị nó, đó, hạn chế cha chúng Các cấu trúc lập trình có giới hạn phạm vi, như, thách thức phải đảm bảo công việc bạn khoảng phạm vi định vị cấu trúc ActionScript 3.0 đơn giản hóa điều cách tự động theo dõi phạm vi với chương trình 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ải tiến ActionScript 3.0 với bao gồm lớp đóng namespace mới, nằm thứ khác Chúng thảo luận khía cạnh lập trình hướng đối tượng chương này, chương 6, cấp ví dụ lớp khắp sách Cái ActionScript 3.0, toàn lớp mặc định niêm phong, bao gồm có thuộc tính phương thức xác định thời gian tạo tồn lớp timeline Nếu bạn tìm thấy cần thiết để thay đổi lớp runtime cách thêm thuộc tính, ví dụ, bạn thực lớp chức Thêm vào đó, namespace, bao gồm xác định namespace tùy ý, cho phép điều khiển tốt thao tác lớp XML Platform Flash Nó quan trọng để lưu ý sách tập trung chủ yếu 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 ngơn ngữ lập trình cho ứng dụng Flash Platform, như, đặc biệt Flex AIR (ứng dụng Adobe Integrated Runtime) Điều nghĩa kỹ kịch bạn phát triển Flash CS3 phần lớn áp dụng cho khu vực khác Flash Platfrom, mở rộng bạn đạt đến lập trình viên Hiện có, mặc dù, vài thứ quan trọng khác để hiểu nghiên viễn cảnh lớn kịch ứng dụng Chúng cho bạn chút ví dụ ngắn gọn để xem xét Để bắt đầu với, Flash Flex có trình biên dịch khác nên khơng đảm bảo project bạn dịch hai ứng dụng Bạn sử dụng Flex Builder (the trình biên dịch Flex) để biên dịch code ActionScript file SWF khơng có Flex framework, load chúng vào Flash CS3 – sinh project Bạn load Flash CS3 biên dịch file SWF thành project Flex Mặc dù, bạn rời khỏi cốt lõi ngôn ngữ cần thiết, thứ bắt đầu ý Ví dụ, Flex khơng có tài ngun Flash IDE để tạo tài sản trực quan (giống movie clips) dấu hiệu giống nhau, Flash không hỗ trợ nhúng tag sử dụng Flex để bao gồm tài sản Điều nghĩa code giống luôn sử dụng trực quan tùy ý yêu cầu Cũng vậy, kiến trúc thành phần khác nhau, bao gồm định dạng khác thiết lập thành phấn thực hiên không khớp Vấn đề với tài sản trực quan có vấn đề tranh luận kịch liện đó, tiến bắt đầu làm để làm giảm bớt chút sóng Adobe phát hành vá cho Flex 2, Flex kiểm tra công khai thời gian viết này, cải tiến tương thích thành phần Mặc dù, chắn khoảng trước chuyển code sang từ ứng dụng xử lý yên tâm, xảy trơn chu Một bước nhanh, vậy, phát triển AIR thích hợp đường quan hệ Adobe tiếp tục công việc sản phẩm AIR bắt đầu Flash CS3 Mọi thứ giữ lại trí nhớ kỹ ngôn ngữ ActionScript 3.0 bạn phát triển giảm nhẹ chuyển bạn ứng dụng Flash Platform, chí bạn phải làm việc với cơng cụ trình biên dịch khác đến kết luận với sản phẩm kết thúc Lập trình hướng thủ tục lập trình hướng đối tượng Nhiều tranh luận tạo nhiều lý lẽ tán thành phản đối lập trình hướng thủ tục lập trình hướng đối tượng Để bàn đến ngắn gọn điều này, nhỏ bé liên quan đến tiến hóa ActionScript ActionScript bắt đầu một ngơn ngữ lập trình tuần tự, nghĩa kịch bị giới hạn trình tự tuyến tính lệnh Flash làm theo kiểu bước Phướng pháp kịch không thực mềm dẻo không đẩy mạnh dùng lại Như ngơn ngữ tiến hóa, trở thành ngơn ngữ lập trình hướng thủ tục Giống lập trình trình tự, lập trình hướng thủ tục dựa bước thiết lập lệnh giới thiệu cấu trúc hơn, phương pháp mô đun kịch Các thủ tục, tình trạng khác giống hàm (hay, thủ tục con), thực thi lại lại lần cần từ phần khác project, khơng có copy paste vào trình tự lệnh Tính mơ đun đẩy mạnh dùng lại, làm code dễ dàng cho việc soạn thảo có hiệu Những người viết kịch việc tìm kiếm mức độ lớn đảm bảo tính mơ đun sử dụng lại đổ lập trình hướng đối tượng Ngơn ngữ lập trình hướng đối tượng tạo chương trình mà tập hợp đối tượng Các đối tượng trường hợp riêng lẻ lớp – tập hợp code độc lập không thay đổi cốt lõi hay phá vỡ khác Chia code thành bao gói nhỏ, biết thích đáng đóng gói, dấu hiệu phân biệt ngơn ngữ lập trình hướng đối tượng Một đặc điểm quan trọng khác lập trình hướng đối tượng tính kế thừa, hay khả lấy lớp từ lớp cha, qua số đặc điểm cụ thể từ cha Một ví dụ cổ điển cấu trúc lập trình hướng đối tượng, kế thừa cách cụ thể, định nghĩa tập phương tiện vận tải (vehicle) chuyên trở Bạn phải bắt đầu với lớp chung Vehicle bao gồm đặc điểm chung toàn phương tiện, di chuyển Bạn phải sau tạo lớp phụ: GroundVehicle, WaterVehicle, AirVehicle Các lớp thay đổi hay đưa vào vài đặc điểm cụ thể cho vận chuyển ground(đường bộ), water (đường thủy), air (đường hàng không) theo thứ tự, không đủ để thể phương tiện thực tế Xa xuất phát từ lớp Car Motorcycle (giảm từ GroundVehicle), Boat Submarine (giảm từ WaterVehicle) Plane Helicopter (giảm từ AirVehicle) Phụ thuộc phức tạp hệ thống bạn, bạn làm sơi quy trình này, việc tạo mẫu riêng lẻ với thiết lập riêng biệt cho nhiên liệu tiêu thụ, ma sát, Với bạn cho chắn, phương pháp để phát triển thêm khả năng, tính mềm dẻo, hứa hẹn khả sử dụng lại Lợi ích này, khác, vị trí lập trình hướng đối tượng phương pháp tốt cho vấn đề Tuy nhiên, điều khuynh hướng số lập trình viên cảm thấy lập trình hướng đối tượng giải pháp tốt cho toàn vấn đề hay, thực tế, giải pháp Điều khơng hồn tồn Lập trình hướng đối tượng thường tốt cho dự án lớn, hay cho làm việc với nhóm lập trình viên, thường vượt q mức cần thiết cho dự án nhỏ Cuốn sách cố gắng hướng dẫn sử dụng hai cách lập trình hướng thủ tục lập trình hướng đối tượng thích hợp Sử dụng thực hành hướng đối tượng mục tiêu tốt khuyến khích sách Tuy nhiên, trước tiên cố gắng tập trung tài liệu cho chương, cú pháp bật, mở rộng làm chủ đề hướng dẫn code Trong điều kiện tổng quát, tập trung lập trình hướng thủ tục trước vào chương 6, chương cung cấp với chuyển tiếp thực hành hướng thủ tục hướng đối tượng Sau chương 6, bắt đầu chương tập trung chủ đề bắt đầu thảo luận, khơng có xung đột xung quanh cấu trúc lớp lập trình hướng đối tượng Khi thích hợp, nhiên, chương kết thúc với ví dụ áp dụng lập trình hướng đối tượng Điều phương pháp thích hợp để trình bày tài liệu cho tồn người dùng hai cách lập trình hướng thủ tục lập trình hướng thủ tục Nó điều hy vọng, không quan tâm đến kỹ kinh nghiệm bạn, bạn thực chủ đề nhà, sau làm việc timeline, hay lớp dựa trình độ bạn Document Class Nếu bạn lựa chọn bạn muốn để bắt đầu tư đòi hỏi lập trình hướng đối tượng, chúng tơi thể cho bạn làm để dễ dàng nắm bước hướng Flash CS3 đưa vào đặc điểm kết hợp đơn giản hóa lớp chính, hay tập trung vào ứng dụng bạn với FLA bạn Nó gọi document class //hàm containsRect kiểm tra xem hình chữ nhật rect2 có nằm hình chữ nhật rect1không //false Chúng ta xét thêm diện tích trùng hai hình chữ nhật hình: Nó trùng tồn diện tích sử dụng hàm containsRect vài phần diện tích (intersection) vùng chữ nhật bao phủ tồn hình chữ nhật (rect1 rect2 ) xét vùng union, mã lệnh sau gọi hàm đó: trace(rect1.intersects(rect2)); //true //nếu KQ hàm intersects true, gọi hàm sau gọi hình chữ nhật //màu xanh giao hình trace(rect1.intersection(rect2)); //(x=50, y=25, w=50, h=25) trace(rect1.union(rect2)); //gọi hình chữ nhật bao phủ tồn hình rect1 rect2 phần union //(x=0, y=0, w=150, h=75) Using Matrices (sử dụng ma trận) Flash sử dụng ma trận để điều khiển scale, rotation, x, y tọa độ, chúng sử dụng tơ màu chuyển (gradient), sử dụng với bitmap bitmap nói đến chương sau Cấu trúc ma trận x flash sau: Các bạn để ý “chữ” (thực số) ma trận, giải thích chúng a d để thay đổi ti lệ chiều dài, chiều rộng (scaling), b c để thay đổi độ nghiêng (skew) , tất nhiên a, b, c, d làm thay đổi thuộc tính góc (rotation) đối tượng (thông qua hàm sin cos rắc rối) tx ty giá trị x y tọa độ tương ứng giá trị cuối u, v, w giá trị thay đổi theo không gian 3D (three-dimensional) nhiên flash chưa hỗ trợ điều có nghĩa bỏ qua chúng, bạn đặt chúng giá trị 0 để biểu diễn hình 2D thông thường Dưới bảng hệ thống lại tham số ma trận cách chúng thay đổi đối tượng gắn vào: Màu đỏ đối tượng sau sử dụng ma trận Skew độ nghiêng khác với góc (rotation) Cái bảng dễ hiểu chứ, tiếng anh đâu phải khó  ah mà “The Motion Package” phần sau chương Các bạn khơng nên quan tâm đến hàm sin cos , sách hok giải thích mà xài đi! Nhớ xài xài phần Methods nha, cột thứ thuộc tính tương ứng phương pháp nữa, vào chi tiết: Skewing with matrices (làm nghiêng với ma trận) var rect:Sprite = new Sprite(); rect.graphics.lineStyle(1, 0x000000); rect.graphics.beginFill(0x00FF00, 4); rect.graphics.drawRect(0, 0, 100, 50); rect.graphics.endFill(); //vẽ hình chữ nhật rect có màu sắc addChild(rect); function deg2rad(deg:Number):Number { return deg * Math.PI / 180; } //chuyển đơn vị độ thành đơn vị radian để sử dụng var mtrx:Matrix = rect.transform.matrix; mtrx.c = Math.tan(deg2rad(20)); //tham số c ma trận mtrx nhận giá trị tan(π/9) (vì π/9 = 200) rect.transform.matrix = mtrx; //hình chữ nhật biến đổi theo ma trận mtrx bị nghiêng 200 hình đây, mặc định trục 00 hướng thẳng đứng xuống: (KQ hình màu xanh phía trên) Để có KQ hình phía sửa lại mã lệnh sau: var mtrx:Matrix = rect.transform.matrix; mtrx.c = Math.tan(deg2rad(-20)); rect.transform.matrix = mtrx; Bây có hình làm nghiêng -200 vị trí lại lệch sang bên trái (so với đường gạch đứt) cần tính tốn để đưa vị trí tương ứng với hình bên KQ sau: Bạn dùng lượng giác để tính độ lệnh so với đường gach đứt, sau tịnh tiến hình thuộc tính x có cách khác đơn giản hơn, sử dụng phương pháp deltaTransformPoint() Đầu tiên điểm bị lệch cần phải điều chỉnh có tọa độ (0, 50) tức đỉnh hình chữ nhật bên trái Chúng ta tạo điều mã lệnh sau: var mtrx:Matrix = rect.transform.matrix; mtrx.c = Math.tan(deg2rad(-20)); rect.transform.matrix = mtrx; trace(deltaTransformPoint(new Point(0, 50))) Câu lệnh cuối đưa KQ xấp xỉ (-18, 50) cho thấy điểm (đỉnh bên bên trái hình chữ nhật) biến đổi từ điểm (0;50) sau thay đổi hình chữ nhật nghiêng 200 Phương pháp deltaTransformPoint() cho cách đơn giản để di chuyển đỉnh hình bị “nghiêng” đến tọa độ mà tính tốn, mã lệnh thêm vào để hình bên xảy là: rect.x -= mtrx.deltaTransformPoint(new Point(0, 50)).x; //di chuyển tọa độ x hình (từ điểm xét đỉnh hình phía bên trái //đang (-18,50) mà có tọa độ ban đầu (0;50) (tọa dộ ban đầu đỉnh bên trái phía //hình chữ nhật) //chúng ta quan tâm đến giá trị x điểm rect gọi thuộc tính x nó, ngồi //khi skew có x thay đổi giá trị y (chỉ bề ngang) không đổi Creating better gradient fills (tạo kiểu tô màu chuyển tốt hơn) Sử dụng matrices, Bạn làm điều khiển số thuộc tính tơ đầy (full), kể chiều rộng, chiều cao, thuộc tính góc, tọa độ điểm bắt đầu tô đối tượng tùy chọn mô tả khu vực Để đơn giản hóa, thêm phương pháp createGradientBox() lớp ma trận vào: createGradientBox(width, height, rotation, tx, ty); Chúng ta xét VD sau: //radial gradient var gradType:String = GradientType.RADIAL; var matrix:Matrix = new Matrix(); matrix.createGradientBox(100, 100, 0, 0, 0); var colors:Array = [0xFF0000, 0x000000]; var alphas:Array = [1, 1]; var ratios:Array = [0, 255]; var canvas = new Sprite(); canvas.graphics.beginGradientFill(gradType, colors, alphas, ratios, matrix); canvas.graphics.drawRect(0, 0, 100, 100); canvas.x = canvas.y = 100; addChild(canvas); Đây KQ: Dễ dàng thấy tọa độ bắt đầu tô màu chuyển 0;0, tô kiểu tỏa tròn (radial) với chiều rộng chiều dài vùng tơ 100 pixel (hình vng có tọa độ đỉnh bên trái phía (0;0) kick thước 100 pixel Do kiểu tô tỏa tròn góc tơ = khơng quan trọng với kiểu tơ theo đường thẳng khác, cần xác định góc tơ (góc 00 hướng hướng qua phải, chiều dương theo chiều Kim đồng hồ) Để thuận tiện xác định góc tơ radian, cần đến hàm làm nhiệm vụ chuyển đơn vị từ dộ sang radian: //LINEAR gradient var gradType:String = GradientType.LINEAR; var matrix:Matrix = new Matrix(); matrix.createGradientBox(100, 100, deg2rad(90), 0, 0); //tô từ màu đỏ sang màu đen với góc tơ 900 hay tô thẳng đứng xuống var colors:Array = [0xFF0000, 0x000000]; var alphas:Array = [1, 1]; var ratios:Array = [0, 255]; var canvas = new Sprite(); canvas.graphics.beginGradientFill(gradType, colors, alphas, ratios, matrix); canvas.graphics.drawRect(0, 0, 100, 100); canvas.x = canvas.y = 100; addChild(canvas); function deg2rad(deg:Number):Number { return deg * (Math.PI/180); } Chúng ta có KQ: Chúng ta điều khiên số kiểu tơ khác Chúng ta tùy chọn cho phương pháp beginGradientFill() SpreadMethod.REFLECT and SpreadMethod.REPEAT SpreadMethod.REFLECT: tham số cho phép tô màu chuyển tùy chiều liên tiếp nhau: SpreadMethod.REPEAT:tuy chọn cho phép thực tô màu chuyển nửa đối tượng nửa lặp lại hiệu ứng đó: Cách sử dụng tham số đơn giản, cho vào làm tham số cuối phương pháp beginGradientFill() Lưu ý dùng loại // sử dụng ma trận để điều khiển xuất màu chuyển sắc var gradType:String = GradientType.LINEAR; var spread:String = SpreadMethod.REFLECT; //hiệu ứng tô gradient var matrix:Matrix = new Matrix(); //ma trận thêm vào sử dụng cho kiểu tô gradient matrix.createGradientBox(50, 50, deg2rad(90), 0, 0); var colors:Array = [0xFF0000, 0x000000]; var alphas:Array = [1, 1]; var ratios:Array = [0, 255]; var canvas = new Sprite(); canvas.graphics.beginGradientFill(gradType, colors, alphas, ratios, matrix, spread); canvas.graphics.drawRect(0, 0, 100, 100); canvas.x = canvas.y = 100; addChild(canvas); function deg2rad(deg:Number):Number { return deg * (Math.PI/180); } The Motion Package (Gói chuyển động) Chúng ta kết luận chương mà không đền cập đến tồn lớp MatrixTransformer AS3 phần gói chuyển động Thậm chí việc sử dụng ma trận MatrixTransformer class đơn giản so với cách biến đổi ma trận lớp ma trận (Matrix class) MatrixTransformer class dành cho việc thiết lập điều khiển cấu hình ma trận khác flash Khởi tạo giá trị làm nghiêng đối tượng 200 cách sử dụng lớp MatrixTransformer giống phần “Skewing with matrices” trước (các bạn xem lại để phân biệt lớp ma trận này): Chúng ta xem VD đơn giản sau để “nghiêng” đối tượng dispObj cách sử dụng MatrixTransformer biến đổi ma trận Matrix (mat) từ thay đổi đối tượng cần thay đổi var mat:Matrix = new Matrix(); MatrixTransformer.setSkewX(mat, 20); dispObj.transform.matrix = mat; Chúng ta tiếp tục với dự án khác, đối tượng xoay đè chuột xuống, đối tượng xoay quanh chuột tự xoay quanh theo góc định, khơng có tốt sử dụng phương pháp rotateAroundExternalPoint() Cơng việc Đế sử dụng gói motion (có chứa ) phải nhập vào chương trình: import fl.motion.*; Sau cần biến để xác định xem chuột có nhấn không: var down:Boolean = false; Chúng ta đưa kiện flash thực hàm chương trình stage.addEventListener(MouseEvent.MOUSE_UP, onUp, false, 0, true); stage.addEventListener(MouseEvent.MOUSE_DOWN, onDown, false, 0, true); addEventListener(Event.ENTER_FRAME, onLoop, false, 0, true); Cần hàm để xác định giá trị down true chuột click xuống: Nó đặt MouseEvent.MOUSE_DOWN function onDown(evt:MouseEvent):void { down = true; } Tương tự hàm để xác định chuột trạng thái khơng nhấn, đặt MouseEvent.MOUSE_UP function onUp(evt:MouseEvent):void { down = false; } Sau hàm đặt Event.ENTER_FRAME để đảm bảo chương trình chạy liên tục: function onLoop(evt:Event):void { if (down) { var mat:Matrix = dispObj.transform.matrix; MatrixTransformer.rotateAroundExternalPoint(mat, mouseX, mouseY, 20); //Ma trận biến đổi có phương pháp rotateAroundExternalPoint() Cho biến đổi //ma trận mat (ma trận bình thường), dispObj.transform.matrix = mat; //bây giò, mat biến đổi đối tượng điều khiển (là dispObj) xoay quanh //Tọa độ chuột, với góc xoay 200 (đơn vị độ nha) } } Xong đó, nhớ tạo đối tượng có tên dispObj, chèn mã lệnh chạy thử 9-Slice Scaling (9 miếng ghép thay đổi tỉ lệ) Một số hình ảnh sử dụng 9-Slice scaling: Chú thích: Original: hình dạng ban đầu Scaled with distortion: thay đổi tỉ lệ có kèm theo biến dạng Scaled without distortion: đổi tỉ lệ khơng có kèm theo biến dạng 9-Slice scaling enabled: Có sử dụng 9-Slice scaling Tất hình dạng thấy dự án 9slice.fla, chuột làm nhiệm vụ thay đổi tỉ lệ đối tượng màu vàng, cú click chuột chuyển đổi trạng thái Scaled without distortionvà Scaled with distortion 9-Slice scaling giảm bớt biến dạng việc thay đổi tỉ lệ hình sau: (màu vàng đậm hình sau sài 9-Slice scaling ) Đê bắt đầu phải tạo đối tượng, cho tọa độ nữa: var sp:Sprite = new Sprite(); with (sp.graphics) { lineStyle(1, 0x000000, 1, true); beginFill(0xFFFF00, 5); drawRoundRect(0, 0, 100, 50, 15); endFill(); } sp.x = sp.y = 50; addChild(sp); Để thay đổi lê mà tránh bị biến dạng nhiều, tạo hình chữ nhật đối tượng (hình chữ nhật hình hình màu vàng đậm) var slice9rect:Rectangle = new Rectangle(15, 15, 70, 20); //tọa độ, chiều dài, rộng canh cho trùng với hình chữ nhật diện sp sp.scale9Grid = slice9rect; scale9Grid thuộc tính sp, cho phép tạo miếng cắt đối tượng hình vẽ trên, tất nhiên trung tâm hình chữ nhật, miếng cắt trung tâm slice9rect thay cho đối tượng thể hình sở hữu thuộc tính scale9Grid nên khơng bị biến dạng scale Tiếp theo xây dựng hàm cho Eventlistener: Event.ENTER_FRAME addEventListener(Event.ENTER_FRAME, onLoop, false, 0, true); Sau định nghĩa hàm onloop: function onLoop(evt:Event):void { sp.width = Math.max(mouseX - sp.x, 30); sp.height = Math.max(mouseY - sp.y, 30); } Hàm Math.max cho phép chọn giá trị lớn tọa độ chuột trừ 50 (tọa độ sp (50;50), khơng trừ số đo hình hình khơng đến chiều dài chuột tọa độ đối tượng (0;0) mà tọa độ chuột tính từ (0;0) đảm bảo tọa độ chuột bên phải đối tượng chiều dài chiều rộng đối tượng kéo đến chuột, chuột nằm phía hay bên trái, hình bị “lật” muốn đối tượng sp có chiều dài, chiều rộng tọa độ x, y chuột, không mong muốn điều này, nên giá trị số đo sp 30 (nếu mouseX - sp.x hay mouseY - sp.y nhỏ 30, hàm Math.max lấy giá trị 30) Sau hàm để click chuột, trạng thái việc sử dụng hình chữ nhật slice9rect khơng sử dụng hình đó: stage.addEventListener(MouseEvent.CLICK, onClick, false, 0, true); function onClick(evt:Event):void { if (sp.scale9Grid) { //nếu scale9Grid thể sp sp.scale9Grid = null; //xóa bỏ, cho thành khơng có (null) } else { //còn ngược lại sp.scale9Grid = slice9rect; //Thể scale9Grid đối tượng sp } } Dễ dàng nhận khơng có đối tượng slice9rect, dễ dàng nhận biến dạng đối tượng sp thay đổi tỉ lệ cho nó, thực chất 9-slice scaling cách thể khác hình sp, thay cho nó bị scale (thay đổi tỉ lệ số đo) Applied Examples (Áp dụng vào ví dụ) A Simple Color Picker (bảng chọn màu đơn giản) Dự án tạo bảng chọn màu bảng cách sử dụng kiểu tô gradient, tất nhiên “bảng” đối tượng tạo gắn với lớp đồ họa nghiên cứu sau đây: Chúng ta bắt đầu việc tạo đối tượng hình phức tạp mà sử dụng gradient, giá trị alpha, quay ma trận (matrix rotation), tạo có phần giống phần trôn màu flash (Flash’s Color Mixer panel) Chương tiếp theo, học cách lấy màu từ bảng chọn cách sử dụng chuột Bảng chọn màu có phần: phần nằm ngang màu chuyển cách hòa hợp theo mảng màu phần nằm dọc chuyển màu từ suốt (phía trên) đến đục dần (màu đen phía dưới), học cách thêm độ đục (sắc đen) vào gam màu khác Chúng ta tạo layer, để chứa mã lệnh để chứa đồ họa, hàm drawGradientBox(), có ý nghĩa để định nghĩa hàm để điều khiển công việc mà không cần nhiều lặp lại Hàm cho phép vẽ gradient có kick thước, màu chuyển, độ mờ đục (alpha) phân phối tỉ lệ (distribution ratios) thiết đặt quay cho ma trận tô màu chuyển (matRotation biến matRot chương trình) function drawGradientBox(size:uint, col:Array, alph:Array, rat:Array, matRot:Number):Sprite { //hàm có đầy đủ tính var sp:Sprite = new Sprite(); //tạo sprite var mat:Matrix = new Matrix(); //Ma trận áp dụng cho chương trình var fill:String = GradientType.LINEAR; //kiểu tơ mat.createGradientBox(size, size, matRot, 0, 0); //tạo hộp tơ có kick thước vùng tơ, có góc tơ có nói trước roài sp.graphics.beginGradientFill(fill, colors, alphas, ratios, mat); //gắn lớp đồ họa sp.graphics.drawRect(0, 0, size, size); //Gắn vào hình chữ nhật,đường bao quanh vùng tô return sp; //đồ họa trả lại cho hàm vẽ } //Đoạn mã sau tạo đối tượng color picker var colorPicker:Sprite = new Sprite(); var colors:Array = [0xFF0000, 0xFFFF00, 0x00FF00,0x00FFFF,0x0000FF,0xFF00FF, 0xFF0000]; //Các màu tham gia chuyển var alphas:Array = [1, 1, 1, 1, 1, 1, 1]; //Thể rõ ràng (alpha = 100%) var ratios:Array = [0, 42, 84, 126, 168, 210, 255]; //tỉ lệ màu chuyển phân phối đồng var spectrum:Sprite = drawGradientBox(100, colors, alphas, ratios, 0); //một sprite gắn vào đồ họa colorPicker.addChild(spectrum); //Sprite lại gắn vào color picker //Các thông số nhằm mục đích cho gradient khác, chuyển từ màu đen sang //trong suốt tô từ lên => tạo độ mờ đục đen có màu chuyển theo //mảng giống nói trước bắt đầu colors = [0x000000, 0x000000]; alphas = [1, 0]; ratios = [0, 255]; var overlay:Sprite = drawGradientBox(100, colors, alphas, ratios, deg2rad(-90)); colorPicker.addChild(overlay); //overlay gắn vào color picker, tất nhiên add sau nên //nằm chắn trước spectrum đồ họa màu chuyển colorPicker.x = 100; colorPicker.y = 100; this.addChild(colorPicker); //Sử dụng hàm để chuyển đơn vị sang radian cho flash làm việc function deg2rad(deg:Number):Number { return deg * (Math.PI/180); } Xong rồi, trước mắt “hình” mà thơi! Chương sau cho bạn cách lấy màu từ bảng chọn sử dụng màu cho dự án khác bạn A Custom Button Class (tạo lớp Button thông dụng) Cái tạo sau hữu ích, bạn sử dụng lớp CreateRoundRectButton viết sau cho dự án khác, vào chi tiết đồ họa nút Mã lệnh ban đầu gồm 15 dòng đầu, nhập phần cần thiết cho chương trình từ flash import flash.text.* import fl.motion.Color; Ngồi có biến lưu giá trị màu, tên button Chú ý: lớp mở rộng sprite, đó, bạn tạo sprite khởi tạo lớp Sau lớp khởi tạo dự án bạn, bạn thêm sprite kết vào danh sách hình (display list) thấy nút kết thúc cơng việc Kiểu liệu unit đơn vi cách thể khác hàm (phương pháp) lên đối tượng đó, dùng kiểu liệu đối tượng tạo có nhiều cách thể khác sử dụng hàm (khác thông số hàm) package { import flash.display.*; import flash.text.*; import fl.motion.Color; public class CreateRoundRectButton extends Sprite { private var _w:Number; private var _h:Number; //Chiều rộng chiều dài private var _rad:Number; private var _linW:Number; private var _col:uint; private var _txt:String; private var _txtCol:uint; public function CreateRoundRectButton(w:Number, h:Number, rad:Number, linW:Number, col:uint, txt:String, txtCol:uint) { _w = w; _h = h; _rad = rad; //độ cong hình chữ nhật bao quanh nút (cong phần đỉnh) _linW = linW; //chiều rộng nét vẽ _col = col; //Màu nút _txt = txt; //ND nhãn nút _txtCol = txtCol //Màu chữ nút //Các giá trị đưa vào hàm lấy từ lớp var btn:SimpleButton = createBtn(); //Chú ý: không sử dụng phương pháp New() lớp tĩnh khởi tạo //createBtn() định nghĩa sau addChild(btn); var labl:TextField = createLabel(); //tạo nhãn TextField, hàm createLabel() định nghĩa sau labl.mouseEnabled = false; //chuột bị vô hiệu hóa rê đến phần nhãn (label) cảu nút addChild(labl); } private function createBtn() { //tạo nút ứng với trạng thái var btn:SimpleButton = new SimpleButton(); btn.upState = createRoundRect(_col); //nút khơng có chuột rê vào, createRoundRect(_col) đưa nút có hình dạng khác var ovCol:uint = Color.interpolateColor(_col, 0xFFFFFF, 3) phương pháp Color.interpolateColor() dùng để chèn thêm màu vào, VD _col nhận giá trị màu đen tham số 1, tham số màu trắng, thuộc tính thứ quy định màu hợp màu thể (tham số thứ lớn, màu hợp nghiêng sang màu tham số thứ 2), KQ đưa màu hợp tham số btn.overState = createRoundRect(ovCol); //nút có chuột rê bên trên, createRoundRect(ovCol) đưa nút có hình dạng khác var dnCol:uint = Color.interpolateColor(_col, 0x000000, 3) btn.downState = createRoundRect(dnCol); //nút có chuột click vào, createRoundRect(dnCol) đưa nút có hình dạng khác btn.hitTestState = btn.upState; return btn; //trả lại giá trị kiểu nút } //hàm sử dụng shape lẽ phần thể nút hàm //createRoundRect(col:uint) hàm tạo hình dạng nút đích thực private function createRoundRect(col:uint):Shape { var rRect:Shape = new Shape(); //hoàn toàn đồ họa API rRect.graphics.beginFill(col, 5); //tô theo màu định rRect.graphics.lineStyle(_linW, _col, 1); rRect.graphics.drawRoundRect(0, 0, _w, _h, _rad); rRect.graphics.endFill(); return rRect; } //Hàm để tạo nhãn cho nút private function createLabel():TextField { var txt:TextField = new TextField(); txt.width = _w; txt.height = _h; //kích thức nhãn nút = kick thước nút var format:TextFormat = new TextFormat(); format.font = "Verdana"; format.color = _txtCol; format.size = 10; format.bold = true; format.align = TextFormatAlign.CENTER //dịnh dạng font, màu, kick cỡ, in đậm, canh chỉnh chữ (trung tâm) txt.defaultTextFormat = format; //thay đổi format mặc định thành format thiết lập txt.text = _txt; //ND nhãn giá trị _txt txt.selectable = false; //người sử dụng chọn “chữ” nhãn return txt; //trả lại giá trị cho hàm } } } Sau ứng dụng lớp vừa tạo var btn:Sprite = new CreateRoundRectButton(80,20,10,2,0x0066CC,"Play", 0x000000); //nút tạo vị trí (0;0) theo mặc định, thông số liên quan đến lớp, xem lại lớp //để hiểu thông số truyền giá trị cho lớp addChild(btn); btn.addEventListener(MouseEvent.CLICK, onClick, false, 0, true); function onClick(evt:MouseEvent):void { trace("button works"); } Mục lục Lời nói đầu Chương 1: Tổng quan Action Script -ActionScript 3.0 gì? -Platform Flash -Lập trình hướng thủ tục lập trình hướng đối tượng -Document Class -Tính tương thích Code Chương 2: Các nguyên tắc cốt lõi ngôn ngữ -Nhiều thể khác -Các biến kiểu 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 tuyệt đối tương đối Chương 3: Các thuộc tính, phương thức kiện -Các thuộc tính kế thừa -Các thuộc tính (Properties) -Các kiện(event) -Các phương thức (Method) -Sự lan truyền event (Event Propagation) -Frame event Timer -Xóa event listener Chương 4: Danh sách hình hiển thị -Các thành phần danh sách hiển thị -Thêm xóa “children” -Quản lí tên đối tượng, vị trí kiểu liệu -Thay đổi phân cấp danh sách hình -Làm nút chọn động Chương 5: Điều khiển Timeline -Sự di chuyển playhead -Nhãn khung hình (Frame Label) -Số khung hình /s (Frame Rate) -Cấu trúc ứng dụng Chương 6: Lập trình hướng đối tượng -Lớp (Classes) -Thừa kế (Inheritance) -Sự hợp thành (Composition) -Đóng gói (Encapsulation) -Tính đa hình (Polymorphism) -Làm lại tương tác -Bổ sung chương Trang 001 Trang 005 Trang 005 Trang 008 Trang 009 Trang 010 Trang 012 Trang 003 Trang 016 Trang 016 Trang 018 Trang 021 Trang 023 Trang 025 Trang 026 Trang 027 Trang 028 Trang 029 Trang 030 Trang 030 Trang 031 Trang 036 Trang 038 Trang 041 Trang 044 Trang 046 Trang 046 Trang 052 Trang 056 Trang 057 Trang 061 Trang 062 Trang 062 Trang 063 Trang 065 Trang 067 Trang 068 Trang 069 Trang 071 Trang 076 Trang 078 Trang 082 Trang 086 Trang 089 Chương 7: Sự chuyển động -Sự di chuyển đơn giản -Hình học lượng giác -Vật lý -Lập trình cho Tween -Tạo hoạt hình từ Timeline -Phân vùng hệ thống Chương 8: Vẽ với Vectơrs -Lớp đồ họa -Gói hình học -Gói chuyển động -9 miếng ghép thay đổi tỉ lệ -Áp dụng vào ví dụ Trang 091 Trang 091 Trang 093 Trang 101 Trang 105 Trang 106 Trang 112 Trang 115 Trang 115 Trang 120 Trang 128 Trang 129 Trang 131 ... khác ActionScript Giới thiệu ngắn gọn chương cho bạn nhìn nhanh ActionScript 3.0 phù hợp với tiến trình làm việc bạn(workflow), bao gồm: ActionScript 3.0 gì? Nó trơng đợi (expected) phiên ActionScript. .. thật ActionScript 3.0 viết lại hồn thiện ngơn ngữ kịch bên Flash, ActionScript 3.0 không chia xẻ môi trường code phiên trước ActionScript Nhưng tồn đằng sau scene Sự thật là, toàn version ActionScript. .. pha trộn code ActionScript 1.0 hay 2.0 với code ActionScript 3.0 SWF Bạn làm điều bạn học từ đầu, bạn chạy hồn cảnh bạn cố gắng update project để lại việc thêm vào code ActionScript 3.0 Nếu bạn

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

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan