Tháng Năm 2009


Lập trình có thể coi là khoa học và nghệ thuật. Vì vậy lập trình viên giỏi cần có 2 điều kiện kiến thức về ngôn ngữ mà họ dùng và tính sáng tạo, ít khi nào có trường hợp chỉ có 1 cách lập trình cho một đề án lắm.
Trong quá trình viết AS, bạn sẽ tạo ra cho riêng mình một phong thái viết code khá đặc trưng. Có thể mới đầu bạn sẽ dùng phong cách viết code trong những bài viết này, rồi sau đó bạn sẽ từ từ chuyển sang phong cách của riêng bạn

Thường thì khái niệm về các ngôn ngữ lập trình đều giống nhau, và trong bài này sẽ bàn về những khái niệm lập trình và làm sao áp dụng nó trong Flash

Cách suy nghĩ của computer

Thật ra computer dốt lắm chẳng biết suy nghĩ đâu, chỉ biết làm việc theo mệnh lệnh một cách không suy nghĩ. Vì vậy computer không bao giờ lỗi mà lỗi ở người viết lệnh sai khiến nó.

Còn AS chỉ là một chuổi lệnh, chỉ thị cho computer, hay đúng ra là Flash phải làm những gì trong môi trường runtime (runtime environment).

Khi viết AS thì bạn nên tự coi mình “ngu” như computer, và đọc lại những dòng lệnh AS và nghĩ tới kết quả của việc thi hành lệnh đó. Khi tự đặt mình vào vị trí của computer, bạn sẽ đoán được script của bạn sẽ làm những gì trong môi trường runtime, và bạn có thể thấy ra những lỗi mà bạn vô ý mắc phải. Khi mà bạn trở thành diễn viên tuyệt vời trong vai computer thì bạn cũng trở thành một lập trình viên tài ba.

Lệnh, hàm, và phép tính

Lệnh (command) là yếu tố căn bản của AS để chỉ thị Flash làm một hành động cụ thể. Lệnh được thi hành tuyệt đối trong các trường hợp khả thi. Ví dụ nếu như ta viết gotoAndPlay(5) để cho Flash tới frame 5 và chơi, nhưng nếu trong movie không có frame 5 thì lệnh không thể làm được.

Hàm (function, mình sẽ dùng từ function nhiều hơn là hàm) là phần tính toán các phép tính và cho ra (return) một kết quả. Ví dụ hàm random() sẽ cho ra một con số ngẫu nhiên nào đó, hay hàm sqrt() sẽ cho ra giá trị bình phương của 1 số mà hàm nhận được truyền cho.

Lệnh và hàm đều có thể được truyền cho 1 hay nhiều thông số (parameter, mình sẽ dùng từ parameter thay vì thông số), và những thông số đó giúp cho hàm và lệnh được cụ thể hơn. Ví dụ gotoAndPlay(5) thì 5 là thông số, nếu như không có thông số này thì lệnh “gotoAndPlay” sẽ không biết rõ phải nói Flash đi đâu. cũng như hàm sqrt() cũng cần có thông số để cho ra giá trị bình phương của số ấy.

Sự khác biệt giữa hàm và lệnh chính là các phép tính. Phép tính thường là những dấu +, -, *, / hay là phép so sánh <, ==. >. Hàm có phép tính, lệnh thì không

Biến số

Biến số (parameter) cần thiết trong mọi ngôn ngữ lập trình vì nó lưu trử thông tin về một cái gì đó trong chương trình. Biến số gồm có 2 phần: tên và giá trị. Đôi khi bạn chỉ cần lưu trử thông tin trong biến số một thời gian ngắn, ví dụ bạn muốn Flash thi hành 1 số lệnh 10 lần thì bạn cần đếm số lần mà Flash đã thi hành lệnh để có thể ra lệnh cho Flash ngưng ngay sau khi thi hành xong lệnh lần thứ 10. Nhưng cũng có lúc bạn cần phải lưu lại thông tin trong một thời gian dài hay trong suốt quá trình thời gian Flash chơi.

Tên của biến số thường là một nhóm từ, hay cũng có thể chỉ đơn giản là 1 từ, hay 1 chữ cái. Thông thường tên của biến số nên rõ ràng dễ hiểu và nói lên được tính chất của thông tin mà biến số đang lưu trử. Ví dụ nếu bạn muốn lưu trử tên của người dùng trong biến số thì bạn nên đặt tên biến số đó là userName (mình nghĩ đặt tên tiếng Anh dễ hiểu hơn, vì tiếng việt không dấu cũng dễ bị hiểu lầm), bạn có thể đặt tên biền số đó là “n” nhưng quá ngắn, người đọc script của bạn sẽ khó hiểu, nếu đặt là name thì dễ trùng với các biến số hay từ khoá khác (_name là một đặc tính của đối tượng MovieClip)

Khi viết AS, bạn cần lưu ý viết làm sao cho dể hiểu và dễ đọc. Và các lập trình viên quy ước tên biến số theo quy tắc sau: tên biến số luôn viết thường chữ đầu tiên, và viết hoa chữ cái đầu tiên cho các chữ kế tiếp, ví dụ userName, userLastName, userMotherMaidenName v.v.

Lưu ý rằng chỉ các chữ cái và số mới được dùng để đặt tên cho biến số, và luôn bắt đâu tên bằng chữ cái.

Có nhiều loại biến số để lưu trử nhiều loại thông tin, và ngay mỗi loại thông tin cũng có thể có nhiều loại khác nhau nữa. Như số (number) là một loại giá trị của biến số, và dưới nó còn có các loại khác như số nguyên (integer), số … không nguyên (floating, double). Bạn cũng có thể dùng biến số để chứa các chuỗi (chuỗi gọi tắt cho chuỗi chữ cái), chuỗi có thể chỉ có 1 chữ cái, nhiều chữ cái hay là không có gì hết, tất cả các chuỗi sau đây đều hợp lệ: “ablsdfjksl”, “a”, ” “, “”. Khi viết một chuỗi thì cần dùng dấu ngoặc kép (“”) để bắt đầu và kết thúc chuỗi.

Trong các ngôn ngữ lập trình khác như Java, C++, hay ngay cả ActionScript 2.0 trong Flash MX 2004 thì bạn phải xac định trước loại thông tin nào bạn sẽ lưu trong biến số. Nhưng với ActionScript 1 (trong FlashMX) thì bạn không cần làm việc này. Ví dụ biến số userName lúc đầu chứa 1 chuỗi, nhưng sau đó lại chứa 1 số nguyên thì cũng vẫn hợp lệ.

Ngoài chuỗi và số, còn có nhiều loại khác nữa nhưng chúng ta sẽ đề cập tới vào những bài sau.

Điều kiện

Trong những trường hợp chúng ta không biết nên ra lệnh cho Flash phải làm gì cho thích hợp với từng tình huống thì ta có thể dùng “điều kiện” để ra lệnh cho Flash.

Ví dụ nếu như bạn ra lệnh cho Flash không cho người dùng coi một đoạn phim trong Flash nếu như user dưới 18 tuổi, nếu user trên 18 tuổi thì hãy chơi đoạn phim ấy. Trước tiên, Flash sẽ so sánh số tuổi của user với số 18, nếu như số tuổi của user thoả mãn điều kiện chúng ta đặt ra thì Flash sẽ có 1 giá trị true từ phép so sánh trên, và ngược lại sẽ là false Điều kiện sẽ luôn luôn là đúng (true) hay sai (false). Một giá trị chỉ có đúng hay sai thì được gọi là boolean. Sau khi thực hiện phép so sánh và có được kết quả từ phép so sánh trên, Flash sẽ chọn một trong 2 giải pháp do chúng ta đưa ra cho từng trường hợp.

Đôi khi chúng ta cần có nhiều điều kiện hơn chỉ là đơn giản “true” hay “false”, ví dụ như bạn muốn Flash chơi đoạn phim A cho ngừơi trên 18 tuổi, dưới 18 nhưng trên 13 thì chơi đoạn phim B, và những ai dưới 13 thì chơi đoạn phim C.

Vòng lặp

Con người làm ra computer vì lười không muốn làm nhiều, mà bán cái cho computer. Nhất là phải làm đi làm lại 1 việc nào đó thì càng nhàm chán. Vì vậy vòng lặp (loop) là một yếu tố quan trọng trong các ngôn ngữ lập trình. AS cũng vậy, bạn có thể dùng vòng lặp trong script.

Trong vòng lặp, “điều kiện” rất quan trọng. Mọi vòng lặp cần có điểm bắt đầu và điểm dừng và một điều kiện để báo hiệu điểm dừng của vòng lặp. Ví dụ như bạn muốn cho vòng lặp chạy 10 lần thì sẽ có 1 biến số dùng để đếm vòng lặp, bắt đầu từ 0, Mỗi vòng lặp chạy thì biến số này sẽ tăng thêm 1. Khi tới 9 thì vòng lặp sẽ dừng lại. Sau đây minh hoạ của vòng lặp này:

1. Một số lệnh trứơc vòng lặp
2. Bắt đầu vòng lặp, set biến số counter = 0
3. Làm một số lệnh trong vòng lặp
4. Tăng biến số counter +=1
5. Nếu biến số counter nhỏ hơn 9, trở lại bước thứ 3
6. Ra khỏi vòng lặp, và tiếp tục chương trình.

Ở đây chúng ta bắt dầu biến số counter = 0 vì quy ước thông thường các ngôn ngữ lập trình đều bắt đầu vòng lặp ở 0.

Một điểm đáng lưu ý của vòng lặp là điều kiện đước xét trước khi thực hiện các lệnh trong vòng lặp. Trong vài trường hợp, điều kiện sẽ được xét sau khi thực hiện các lệnh trong vòng lặp. Chúng ta cũng có thể ngưng vòng lặp trước điểm dừng của nó, và điều này sẽ được đề cập tới vào bài kế tiếp

Làm những điều không tưởng

Lệnh, hàm, phép tính, biến số, thông số, điều kiện, vòng lặp là những phần căn bản trong ngôn ngữ lặp trình, và cái này thì ai cũng biết nhưng làm sao phối hợp lại thành một chương trình hoàn hảo mới là cái khó.

Chương trình đơn giản chỉ là một tập hợp lệnh cho computer để giải quyết 1 vấn đề nào đó. Vì vậy trước khi viết 1 chương trình chúng ta cần phải xác định “vấn đề” cần phải giải quyết. Ví dụ thực tế ở ngoài đời, mẹ bạn nhờ bạn ra chợ mua gà. Nhưng chỉ đơn giản nói ra chợ mua gà thì chưa đủ vì biết mua gà sống hay gà làm rồi. nếu mua gà sống thì mua loại nào v.v. Đó là chưa nói tới mua gà ở chở nào, giá cả ra sao v.v. Nếu như bạn mẹ nói rõ là ra chợ bến thành, mua 1 con gà mái dầu, nặng khoảng 2 kg, với giá khoảng 10000 thì thật là dễ dàng cho bạn phải không?

Biết được vấn đề mua gà rồi thì tìm cách mua gà. Bạn phải “lên kế hoạch”, nên nhờ bạn chở hay đi taxi ra chợ bến thành. Nếu đi taxi đi hãng nào, tìm số phone để gọi, v.v. còn nhờ bạn chở đi thì nhờ tên nào. Rồi nên mặc quần áo nào đi chợ. Ra đến chợ thì phải mặc cả làm sao, trả tiền mặt hay ghi sổ nợ. Bạn thấy không, từ một chuyện mua gà đơn giản vậy mà có thể tốn cả ngày trời để lên chương trình

Viết AS, bạn cần phải lưu ý tới tất cả mọi việc dù nhỏ cách mấy để cho Flash có thể làm đúng theo như ý bạn trong mọi tình huống. Các chương trình có bug không phải vì người viết dỡ mà vì chưa nghĩ tới hết mọi tình huống thôi.

Tóm lại, điều quan trọng trong lập trình là khả nẳng phân tích một vấn đề chính thành nhiều vấn đề nhỏ cho tới khi không còn nhỏ hơn nữa, và sau đó xây dựng chương trình từ giải quyếy các vấn đế nhỏ lên dần cho tới vấn đề chính.

Viết mã hoàn chỉnh

Bọ (bug) đơn giản là lỗi của chương trình mà bạn tạo ra. Bug có thể chỉ là những lỗi cú pháp đơn giản, hay là những lỗi phức tạp do cách bạn giải quyết vấn đề trong môi trường runtime.

Để tránh có bug trong script của bạn thì bạn nên tốn nhiều thì giờ vào giai đoạn phân tích, thiết kế chương trình cho script của bạn. Kiểm tra các đoạn code nhiều lần, và đóng vai “computer” cho thật giống, đừng suy nghĩ, mà thi hành các lệnh trong script của bạn. Viết từng đoạn code nhỏ rồi ráp lại với nhau (vì vậy mà lập trình theo hướng đối tượng được sử dụng nhiều nhất)

Nếu script của bạn có bug thì đừng thế mà nản lòng, vì không có chương trình nào do con người làm ra mà không có bug cả. Vì vậy bạn đừng cố gắng viêt code sao cho tuyệt hảo không có lỗi. Nếu có bug thì bạn diệt bug thôi Bạn có thể chuẩn bị “chiến đấu” với bug bằng cách viết code sao cho dễ hiểu và dễ đọc, viết nhiều chú thích cho các đoạn mã. Đôi khi diệt bug (debug) rất đơn giản nhưng có khi cũng rất kho mà biết bug ở đâu để diệt. Flash có kèm theo vài công cụ giúp bạn debug dễ dàng hơn, chúng ta sẽ nói tới các công cụ này trong bài tới.

Theo http://www.vnfx.com

Chào các bạn, cảm ơn các bạn trong thời gian qua đã ghé thăm web Blog của Candy, rất xin lỗi vì thời gian qua Candy bận, không vào trang web của mình nên đã không trả lời các comment của các bạn, rất xin lỗi và cảm ơn các bạn nhiều 🙂
Bây giờ Candy đang học thêm Flash, bạn quan tâm tới môn này thì cùng Candy chia sẻ về Flash bạn nhé

Chúc bạn luôn vui vẻ và thành côgn trên đường đời ^^

……………………..

Hàm ._visible:
Hàm ._visible dùng cho một button (nút, viết tắt btn) có dạng:
btn._visible = true ; //nút có thể nhấn được
btn._visible = false ; //nút không nhấn được
btn._visible = 1 ; //nút thấy được
btn._visible = 0 ; //nút không thấy

Hàm .visible cũng có thể dùng cho movieClip với cấu trúc tương tự: mc._visible =

Ví dụ: Cách làm cho 2 nút Play và Stop đặt chồng lên nhau.

Image

Ta đã biết rằng nếu để 2 nút (button) chồng lên nhau thì chỉ có thể tương tác đối với nút nằm trên, nhưng với hàm visible ta sẽ tạo ra hiệu ứng cho 2 nút đặt chồng lên nhau mà vẫn thực hiện được tương tác lên từng nút với đúng chức năng và yêu cầu của nó.
-Đầu tiên ta mở 1 file Flash và tạo 4 layer: action, nen, chuyenDong, nut. Lưu file dưới tên ham._visible.fla.
-Tiếp theo, ta tạo một chuyển động bất kì trên layer chuyển động, ở đây tôi đã chọn chuyển động của quả banh rơi từ độ cao h xuống đất. (Nếu chưa biết về cách tạo chuyển động bạn có thể tham khảo bài viết Tạo chuyển động)
-Kế đến, bạn tạo 2 nút Stop và nút Play, ở đây tôi sẽ tạo 2 nút đơn giản có dạng hình vuông và hình tam giác, rồi bạn đặt chồng chúng lên nhau. (Nếu chưa biết về nút bạn có thể tham khảo bài viết Tìm hiểu về các biểu tượng trong Flash)

Image

-Đặt tên cho nút. Lưu ý, đây không phải là tên của nút khi bạn tạo (highlight màu xanh chuối), tên này chỉ được sử dụng trong Library. Còn tên highlight màu vàng sẽ được sử dụng cho mã code (đuôi _btn dùng để ám chỉ đây là 1 nút để người đọc code dễ hiểu).

Image

-Sau khi đã đặt tên cho nút thì bạn bật cửa sổ Actions (hay nhấ phím tắt F9) và nhập đoạn code sau đây:
//tình trạng ban đầu
stop_btn._visible = 1 ; //nút stop có thể thấy được
play_btn._visible = 0 ; //nút play không thể thấy được
stop_btn.onRelease = function () {
//sau khi nhấn nút stop các hành động sau sẽ được thực hiện
stop () ;
stop_btn._visible = 0 ;
play_btn._visible = 1 ;
}
play_btn.onRelease = function () {
play () ;
stop_btn._visible = 1 ;
play_btn._visible = 0 ;
}

Lưu ý: các đoạn code sau dấu “//” được qui ước như các ghi chú nhằm giải thích cho người đọc code, nên sẽ được máy tính tự động bỏ qua khi thực hiện code. Bạn cũng không cần thiết phải nhập những giải thích này vào bảng Actions.
Bây giờ bạn đã có thể Ctr + Enter để kiểm tra và thưởng thức tác phẩm của mình.

Chúc thành công và vui vẻ trong công việc !

Bạch Dương (dayhoc.com)