Actions Script 2.0 - Biến
biến
(variables)
- Biến là một vùng nhớ chứa giá trị của 1 kiểu dữ liệu nào đó: ví dụ var myScore: Number=2; biến myScore có giá trị là 2, kiểu dữ liệu là Number (kiểu số)
- Tên biến là duy nhất và được khai báo ngay khi tạo biến, như vậy không thể có mặt đồng thời 2 biến trùng tên trong chương trình.
- Biến có thể được gán giá trị là một hằng số (var myScore:Number=10;) hay là kết quả trả về của một hàm (var myScore=function (){})
I. kiểu dữ liệu của biến
a. Biến nguyên thủy (primitive): dữ liệu là 1 giá trị bất biến, 1 hằng số
- String (chuỗi): là 1 chuổi ký tự, luôn được khai báo trong dấu nháy var myStr:String = "u like ActionScript?";
trace(myStr);//u like ActionScript
- Number (số): là một con số var myNum:Number=10;
trace("The value is "+ myNumber);//The value is 10
- Boolean (luận lý): kiểu dữ liệu đúng, sai (true, false). var myBoo:Boolean=false; Chỉ nhận 1 trong 2 giá trị như ví dụ sau
var myNum:Number=2;
var myBoo:Boolean = (myNum>0);
if (myBoo==true) var myStr:String = "u right, kq="+myNum+">0";
else var myStr:String = "u wrong, kq="+myNum+"<0";
trace(myStr); // u right, kq=2>0
b. Biến tham chiếu (reference): giá trị có thể thay đổi do biến là 1 tham chiếu từ 1 instance trong 1 class, đây là kiểu biến của MovieClip và Object.
Object: là tập hợp các thuộc tính của 1 đối tượng, các thuộc tính như: tên, giá trị. Khi đề cập phải chỉ rõ thuộc tính của đối tượng nào thông qua cú pháp dấu chấm.
var employee:Object = new Object(); // khai báo instance "employee" của class Object qua toán tử new
//Các thuộc tính của employee
employee.name = "Steve"; //tên của employee
employee.age = 24; //tuổi của employee
employee.sex = "male" //giới tính của employee
movie clip: Movie clips là 1 symbol thể hiện 1 họat cảnh trong flash. Các đối tượng thuộc lớp movie clip có các thuộc tính riêng. Ví dụ khai báo phương thức startDrag của MovieClip "my_mc": my_mc.startDrag(true);
Ngoài ra còn 1 số kiểu biến khác như: null (chưa gán giá trị), undefined: (Không xác định được giá trị), NaN (không là 1 number)
| Giá trị biến có thể thay đổi liên tục thông qua lệnh gán như ví dụ bên: Đầu tiên x =15 và copy giá trị vào y. gán lại cho x=30 thì giá trị của y vẫn là 15. |
var x:Number = 15; var y:Number = x; var x:Number = 30; trace(x); trace(y); //30/15 |
|||
| Thêm 1 ví dụ như biến inValue lúc đầu có giá trị bằng 3, và giá trị này đuợc gán cho biến out qua hàm sqrt() giá trị trả về sau cùng là out=9, và x=3: | function sqrt(x){ return x * x; } var inValue:Number= 3; var out:Number = sqrt(inValue); |
II. Sử dụng biến
1. Đặt tên biến (Trong properties panel): bao gồm tên biến và kiểu biến, ví dụ các kiểu của biến my
my_mc (kiếu biến movie clip), my_btn (kiếu biến button), my_arr (array), my_str (String), my_txt (text), my_lv (LoadVar)...
2. Cú pháp (Syntax)
- khai báo biến nguyên thuỷ là var tenbien : kieudulieu = giá trị;
var myNum:Number = 3; //Khai báo biến "myNum" có giá trị là 3, kiểu Number
var a,b,c:Number; //Khai báo 3 biến kiểu Number a,b,c
var name:String = "Steve", age:Number = 34; //Khai báo biến "name" giá trị là Steve, kiểu String
//biến "age" giá trị là 34, kiểu Number
giá trị của biến có thể thay đổi trong khi chay chương trình qua phép gán như sau
var myNum:Number=10; //Đầu tiên giá trị myNum là 10
myNum= Number(5)-Number(2)*4; //Gán giá trị myNum cho phép tính 5-2*4
trace(myNum); //Kết quả -3
- Khai báo biến tham chiếu: Tạo mới 1 instance của 1 class, dùng toán tử "new" để khởi tạo hàm constructor của class đó ( Hàm constructor luôn trùng với tên class), và trả về 1 instance mà bạn sẽ gán vào biến "song". Ví dụ sau tạo một đối tượng sound
Một số class dựng sẵn như: Array, Boolean, Date, Error, Function, Math, Number, Object, String, Sound, Video, Button, LoadVars Color,TextField, XML. Trong đó Object class là class gốc, các class còn lại đều kế thừa các phương thức và thuộc tính của class Object.
III. Phạm vi họat động của biến (variable scope)
1. Biến phải được khai báo trước khi sử dụng, nếu không giá trị trả về sẽ là NaN hoặc undefined (Không xác định)
| SAI | ĐÚNG | |||
|
|
|||
|
|
2. Biến khai báo trong timeline nào thì phạm vi họat động chỉ trong timeline đó, ở những khu vực khác thì biến xem như không tồn tại. Hãy xét qua thí dụ minh họa sau:
- Nhập dòng khai báo biến var i:Number =5; trong keyframe 1 ở main timeline.
- Nhập dòng trace(i); trong keyframe 1 ở movieClip nào đó.
- Khi chạy file (Ctrl_Enter) thì bạn sẽ nhận được kết quả là underfind.
Giải thích: flash không tìm được giá trị của biến i do chỉ tìm trong movieClip thôi (trong khi bạn đã gõ nó vào main timeline). Để khắc phục bạn có thể dùng 1 trong 3 cách sau:
- sửa lệnh thành trace(_root.i); \\chỉ rõ vi trí khai báo biến i
- Khai báo var i:Number =5; trong movieClip thay vì ở main timeline
3. biến cục bộ (local variable) và biến toàn cục (global variable):
Biến cục bộ (local variale): Khi chỉ cần sử dụng biến trong 1 hàm hoặc 1 timeline thì biến nên được khai báo ngay trong hàm, timeline đó.
| function test (){ var i:Number = 5; trace (i); } test();// kết quả bằng 5: xuất hàm i thông qua hàm test trace (i);// kết quả là undefined do gọi biến ngoài hàm i |
Biến toàn cục (global variable): Với một biến sử dụng rộng khắp cho mọi hàm, mọi timeline thì biến nên được khai báo theo kiểu biến toàn cục như sau _global.numUsers=5; thay vì var numUsers:Number=5; như trường hợp biến cục bộ.
Đỗ Thanh Dương @ 22:17 28/10/2010
Số lượt xem: 669
- Actions Script 2.0 - Cấu trúc cơ bản (28/10/10)
- Bài 7: Tương tác (28/10/10)
- Bài 6: Phim và âm thanh trong Flash (28/10/10)
- Bài 5: Nút nhấn (28/10/10)
- Bài 4: Hoạt cảnh Simbol (28/10/10)

Ý kiến trao đổi