Bài học dưới đây chỉ là bài vở lòng đối với giới lập trình nhưng lại khá mới mẻ với các nhà đồ họa, vốn chỉ chuyên về hình ảnh và màu sắc. Thế nhưng nếu bỏ chút công sức tìm hiểu về action script, bạn sẽ có được khả năng gần như vô hạn trong thế giới hiệu ứng tương tác kỳ thú của Flash...Bạn cũng đừng lo lắng quá vì các thí dụ minh họa trong bài là các đoạn code đơn giản, dễ hiểu và chạy được ngay khi nhập vào action panel.
Thực ra có nhiều phần mềm đồ họa hổ trợ thêm ngôn ngữ lập trình để người sử dụng có thể tham gia viết lệnh, tạo thêm cho mình công cụ, tiện ích nhằm đáp ứng riêng cho 1 nhu cầu nào đó như trong AutoCad thì có Autolist, trong 3Dsmax có Maxscript...tương tự như là Macro trong word và excel vậy. Tuy nhiên so với những phần mềm trên thì ngôn ngữ action script trong Flash quan trọng hơn nhiều, nó đóng 1 vai trò thiết yếu tạo nên thế mạnh riêng cho Flash, đó là tính TƯƠNG TÁC. Thử đơn cử 1 vài ví dụ có actionScript tham gia như sau:
- Các trình ứng dụng web như: form login, giao tiếp với các cơ sở dữ liệu...
- Tạo các ứng dụng tương tác cao như các ứng dụng về game, thiệp..
- Tạo các họat cảnh 3D: Trong các đoạn quảng cáo, banner..
- Tải file động: load và unload các file nằm ngoài (external data) vào flash
- Biên dịch hồ sơ XML: Tương tác máy chủ và máy khách
Tuy nhiên trong khuôn khổ học phần này chúng ta chỉ nên xem qua các cấu trúc cơ bản để kết hợp và xử lý các công cụ trực quan của flash và các dòng lệnh đơn giản actionscript. việc nghiên cứu sâu hơn nên dành cho các khóa học nâng cao sau này khi chúng ta đã có sự chuẩn bị và nhiều thời gian hơn.
A. Đặc điểm:
- Case Sensitivity: Flash có phân biệt chữ Hoa, chữ thường. Vì thế tên biến "Name" và "name" sẽ là 2 tên biến riêng biệt.
- OOP: Theo hướng lập trình hướng đối tượng kiểu như Java
- Version mới nhất hiện nay là ActionScript 2.0
Tiêu chuẩn viết lệnh là: ngắn gọn, dễ hiểu và ít tốn tài nguyên máy (về thời gian..).
B.
C. Từ khóa (Key word):
| | | | |
| break (ngắt lệnh) | case (trong cấu trúc switch) | class (lớp) | continue |
| default (lệnh mặc định) | delete | dynamic (kiểu dữ liệu dynamic) | else (trong câu điều kiện if..else) |
| extends (kiểu lớp kế thừa) | for (vòng lặp for) | function (hàm) | get |
| if (câu điều kiện if) | implements | import (import thư viên) | in (Trong hàm for) |
| instanceof | interface | intrinsic | new (khai báo 1 intance của class) |
| private (kiểu dữ liệu private) | public (kiểu dữ liệu public) | return (kiểu hàm trả về 1 giá trị) | set |
| static (kiểu dữ liệu static) | switch (cấu trúc chia từng trường hợp) | this (chỉ đối tượng hiện hành) | typeof |
| var (khai báo biến) | void (kiểu hàm không trả về giá trị) | while (vòng lặp while) | with (cấu trúc gom thuộc tính ) |
| | | | |
Như vậy để tránh cho actionscript "hiểu nhầm", chúng ta không được khai báo tên biến trùng với từ khoá.
D. Cú pháp (Syntax)
1. Dấu chấm_Dot (.): - Gán phương thức: my_mc.onRelease=function(){}
- Đường dẫn: _root.clip1_mc.clip2_mc. gotoAndStop(2)
- Sở hữu, thuộc tính: my_mc._width;
chiều ngang movieClip "my_mc"
2. Dấu chấm phẩy_Semicolons (;): là dấu kết thúc 1 câu lệnh (như dấu chấm câu).
3. Dấu ngoặc móc_Curly braces ({}): Mở đầu và kết thúc 1 hàm hay 1 cấu trúc có nhiều dòng lệnh.
4. Dấu ngoặc đơn_Parentheses (()): Thường là phần khai báo tham số cho 1 hàm, function myFunction (x,y,z){your code}
5. Dấu 2 gạch xiên (//, /*...*/): Cho phép người dùng thêm dòng chú thích, minh họa chương trình. Flash sẽ bỏ qua khi chạy chương trình. Lợi dụng tính chất này, ta có thể tạm thời vô hiệu hóa 1 đoạn lệnh nào đó khi kiểm tra từng cụm lệnh:
Tạo 1 dòng chú thích: đặt ký hiệu // ở đầu câu
Tạo 1 cụm nhiều dòng chú thích: khóa đầu và đuôi cụm bằng /* và */
E. Toán tử (Operators)
1. Toán tử số (Numeric Operators):
Toán tử | ý nghĩa | Ví dụ | Kết quả |
+ | - | Cộng / Trừ | Number(2) + Number (4) | 6 |
* | / | Nhân / Chia | 2*3 | 6 |
% | | Modulo (số dư của phép chia) | 7%4 | 3 |
++ | -- | Tăng / Giảm | 5++ / ++5 | 5 / 6 |
total = (Number(4) + Number(2*5))%3 | lấy số dư của (4 + 2*5) chia 3 | 2 |
2. Toán tử so sánh (Comparison Operators): toán tử này thường sử dụng cho kiểu dữ liệu Boolean
Toán tử | ý nghĩa | Ví dụ | Kết quả |
> | < | Lớn hơn / Nhỏ hơn | | true/ false |
>= | <= | Lớn hơn/ nhỏ hơn hoặc bằng | | true/ false |
Trong các toán tử +, -, <, >, <=, >=, =, <> các giá trị (x) kiểu Number luôn viết ở dạng Number(x)
3. Toán tử luận lý (Logical Operators): toán tử này thường sử dụng cho kiểu dữ liệu Boolean
Toán tử | ý nghĩa | Ví dụ | Kết quả |
&& | và | var x :Number =5; if(x>0&&x<10) st=true; trace(st);
| true |
|| | hoặc | var x:Number = 9; var start:Boolean = false; if ((x>25) || (start)) trace("OR test passed");
| OR test passed |
! | phủ định | var happy:Boolean = false; if (!happy) trace("don’t worry, be happy");
| don't worry, be happy |
4. Toán tử tăng giảm (Bitwise Operators): toán tử này thường sử dụng cho kiểu dữ liệu Boolean
Toán tử | ý nghĩa | Ví dụ | Kết quả |
& | AND | | true |
| | OR | | false |
^ | XOR | | |
~ | NOT | | |
<< | Shift left | | |
>> | Shift right | | |
>>> | Shift right zero fill | | |
5. Toán tử tương đương (Equality Operators): toán tử này thường sử dụng cho kiểu dữ liệu Boolean
Toán tử | ý nghĩa | Ví dụ | Kết quả |
== | != | Equality / Inequality | var a:String = "5", b:Number = 5; if (a == b) trace("right");
else trace("wrong");
| right |
=== | !== | Strict equality/ Strict inequality | var a:String = "5", b:Number = 5; if (a === b) trace("right");
else trace("wrong");
| wrong |
Kiểu toán tử này thuờng thấy trong các form log in kiểm tra username và password
6. Toán tử gán (Assignment Operators):
Toán tử | ý nghĩa | Ví dụ | Kết quả |
= | gán | x= 5 + 3 | 8 |
+= | -= | Strict equality | x +=2 | ![](javascript:void(0);) |
*= | /= | Inequality | x *=2 | |
%= | Strict inequality | 7 %=2 | |
<<= | >>= | | | |
>>>= | | | |
^= | | | |
|= | | | |
&= | | | |
var x:Number= 15;
var y:Number = x;
var x:Number = 30;
trace ("x="+x);
trace ("y="+y); //output: x=30, y=15
F. CẤU TRÚC CƠ BẢN
With: là hàm gom nhiều dòng thuộc tính hoặc của 1 movieClip vào 1 cấu trúc như hàm tellTarget
Các cụm lệnh sau là tương đương
ball_mc._x = 50; ball_mc._y = 100; ball_mc.gotoAndStop(3);
| | with (ball_mc) { _x = 50; _y = 100; gotoAndStop(3); }
| | tellTarget ("ball_mc") { _x = 50; _y = 100; gotoAndStop(3); }
|
function polar(r) {
var a, x, y: Number;
with (Math) {
a = PI * r * r;
x = r * cos(PI);
y = r * sin(PI/2);
}
trace("area = "+a+"; x = "+x+"; y = "+y);
}
trace(polar(3));
2. Câu điều kiện (conditions): Nếu...thì....
Các cấu trúc sau là tương đương
? | | if | | if...else |
var x:Number = 5;
var y:Number = 10; var z:Number = (x < 6) ? x: y; trace (z); //5
| | var x:Number = 5; var y:Number = 10; var z:Number; if (x<6) z=x; if (x>=6) z=y; trace (z); //5 | | var x:Number = 5;
var y:Number = 10;
var z:Number; if (x<6) z=x else z=y; trace (z); //5
|
Giải thích: Nếu x < 6 thì z = x, kết quả là 5, nếu không thì z = y, kết quả là 10. Kết quả thí vụ là 5 |
| | Ví dụ 1: Button 2 trạng thái on/off | ![](javascript:void(0);) | Trong keyframe 1 của main timeline ta nhập dòng code như sau switch_mc.onRelease = function(){ if (this._currentframe==1) this.gotoAndStop(2) else this.gotoAndStop(1); }
//Nếu button đang ở trạng thái "off" thì chuyển sang "on" và ngược lại
| Trong keyframe 1 của movieClip "switch_mc" nhập code: stop(); và tạo 2 hình button khác nhau trong keyframe 1 và 2 của switch_mc |
|
2. Vòng lặp (loop)
for | | do...while |
for(init; condition; next) { statement(s); } | | do { statement(s) } while (condition) |
| | | | | | |
for (liệt kê) | | for (Cộng dồn) | | while | | do..while |
for (var i:Number=0; i<5; i++){ trace(i); } //1,2,3,4
| | var sum:Number = 0; for (var:Number i=1; i<=5; i++){ sum = sum + i; trace(sum); } //1,3,6,0,15
| | var x:Number = 0; while (x<5){ trace(x); x++; };//1,2,3,4
| | var x:Number = 0; do { trace(x); x++; } while (x<5);//1,2,3,4
|
switch
switch (number) {
case 1:
trace ("case 1 tested true");
break;
case 2:
trace ("case 2 tested true");
break;
case 3:
trace ("case 3 tested true");
break;
default:
trace ("no case tested true")
}
Lệnh kiểm tra số ngày trong tháng | | lệnh di chuyển movie clip bằng bàn phím |
| | |
var month:Number=3; switch (month) { case 1,3,5,7,8,10,12: trace ("có 31 ngay"); break; case 2: trace ("co 29 ngay"); break; case 4,6,9,11: trace ("co 30 ngay"); break; default: trace ("chua chon thang") }
| | move_mc.onClipEvent (keyDown) { switch (Key.getCode()) { case (Key.RIGHT) : this._x += 3; break; case (Key.LEFT) : this._x -= 3; break; case (Key.UP) : this._y -= 3; break; case (Key.DOWN) : this._y += 3; break; default : trace("nhan phim mui ten"); } }
|
G. Hàm (function):
Hàm là khối lệnh có vai trò như 1 công thức lập sẵn được sử dụng nhiều lần trong chương trình. Hàm xử lý trên các tham số (Arguments) và trả về 1 giá trị (Hàm return) hay thực hiện 1 chức năng (Hàm void)
Tạo hàm: từ khoá function
Hàm return: Hàm tạo công thức tính toán
Hàm voil: Hàm tạo lệnh
Ví dụ 1:
Hàm return (hàm tính toán, trả về một giá trị kết quả) | | Hàm Void (hàm chức năng, thực hiện 1 lệnh) |
| | |
function sum(a, b, c){ return a + b + c; //trả về giá trị tổng 3 tham số
}
newValue = sum(4, 32, 78); //gọi hàm với 3 tham số cụ thể
trace(newValue); // xuất kết quả ra output panel (114)
| | function greet(name:String, age:Number):Void { trace("Ban " + name+ ", "+age+" tuoi"); } greet("Steve", 23); //call function
|
Ví dụ 2: hàm cộng thêm
additionator = function(add_me) {
var total:Number = 10 + add_me;
trace(total);
}
additionator(4);
Ví dụ 3: Kiểm tra giới tính để tiện xưng hô, chào hỏi...
function showSalutation(lastName:String, gender:String):Void {
if (gender == "F") {
trace("Ms. "+lastName);
} else {
trace("Mr. "+lastName);
}
}
//call function
showSalutation("Smith", "F");
Một số hàm thông dụng dựng sẵn trong Flash: | stop(); |
| gotoAndPlay(); |
| gotoAndStop(); |
| nextFrame(); |
| trace();//xuất kết quả lệnh trong output panel |
| round (); //làm tròn số |
| getURL() |
0 nhận xét:
Đăng nhận xét