Simulacrum, từ simulacrum Latin, là một sự bắt chước, giả mạo hoặc hư cấu. Khái niệm này được liên kết với mô phỏng, đó là hành động mô phỏng .Một...
tài liệu thiết kế flash
Trường Đại Học Sư Phạm TP hồ Chí Minh
Khoa Vật Lý
Câu lạc bộ Vật Lý ảo
dYc
Bạn đang đọc: tài liệu thiết kế flash
Tài liệu hướng dẫn
Lập trình
Cho
Ấn phẩm nội bộ dành cho thành viên Câu lạc bộ Vật Lý ảo
LỜI NÓI ĐẦU
Các bạn thân mếm!
Làm phim hoạt hình với Flash đã khá quen thuộc với mọi người, và đã được sử dụng ở hầu hết những website động lúc bấy giờ. Flash được ưu thích bởi những đồ họa sinh động, thích mắt .
Câu lạc bộ Vật lý ảo, khoa Vật lý trường ĐH Sư Phạm TP.HCM sử dụng Flash để mô phỏng những hoạt động, những hiện tượng kỳ lạ vật lý xãy ra trong tự nhiên, mô phỏng những thí nghiệm vật lý, … Để việc mô phỏng được thuận tiện, đúng chuẩn, tất cả chúng ta sử dụng ngôn từ lập trình ActionScript tích hợp trong Flash. ActionScript là những mã ngữ cảnh, điều khiển và tinh chỉnh những đối tượng người tiêu dùng và bảng tiến trình của Flash, nó là TT sức mạnh cho Flash, hầu hết những kỷ thuật nâng cao đều sử dụng những đoạn mã ActionScript .
ActionScript không chỉ là ngôn từ dành riêng cho người lập trình mà là công cụ bổ trợ hiệu suất cao cho phong cách thiết kế của bạn. Không nhất thiết bạn phải là người giỏi lập trình thì mới sự dụng được ngôn từ này, chỉ cần bạn biết một chút ít tiếng Anh và thuật toán là hoàn toàn có thể sử dụng thuận tiện .
Những ai có thể sử dụng được tài liệu này?
Đây là tài liệu được biên soạn dành cho những ai đã học qua chương trình Flash cơ bản, ( nếu bạn chưa biết gì về Flash thì hãy trang bị cho mình những kiến thức và kỹ năng cơ bản của Flash trước khi xem tài liệu này ) .
Đây là tài liệu hướng dẫn sử dụng ActionScript phân phối cho việc mô phỏng flash trong câu lạc bộ vật lý ảo. Do đó nhiều phần không thiết yếu sẽ được lướt qua hoặc không trình làng tới .
Rất mong nhận được sự góp phần quan điểm kiến thiết xây dựng tài liệu cho hoàn hảo hơn từ phía những bạn đọc .
Chúc những bạn thành công xuất sắc !
Chương 1 :
Tìm hiểu về những lệnh cơ bản
Trong chương này tất cả chúng ta sẽ làm quen với một số ít lệnh cơ bản nhằm mục đích điều khiển và tinh chỉnh bảng tiến trình chính, tinh chỉnh và điều khiển những đoạn phim, nút nhấn và những thuộc tính của chúng .
Để thuận tiện xem và hiệu chỉnh những đoạn mã của bạn, bạn nên để những đoạn mã của mình trong một lớp ( layer ) riêng, ví dụ tôi đặt những đoạn mã của mình vào lớp action .
Mở bảng action thao tác ( F9 ). Bảng thao tác có giao diện như hình trên. Phía bên trái bảng thao tác phân phối cho những bạn hàng loạt những công thức được pháp luật sẵn bởi flash. ( Các bạn không cần chăm sóc đến những công thức này ). Vùng thao tác của bạn là vùng màu trắng bên phải .
- Dòng chú thích
- Những gì viết sau dấu // sẽ được flash bỏ qua, đây chỉ là dòng chú thích do người lập trình đưa vào nhằm ghi chú các câu lệnh của mình.
- Vd: //câu lạc bộ vật lý ảo
- Đoạn chú thích
- Có chức năng tương tụ như dòng chú thích.
- Dừng bảng tiến trình.
- Có chức năng dừng mọi hoạt động trong bảng tiến trình.
- Bắt đầu chạy bảng tiến trình.
- Đối số (frame) là số frame hoặc frame lable.
- Lệnh có chức năng đi đến và dừng tại frame ở đối số
- Ví dụ: gotoAndStop(15); đi đến và dừng tại khung thứ 15.
- Chú ý: bạn nên đặt tên cho frame ở khung frame lable thì sẽ tránh được một số lỗi khi bạn chèn thêm frame vào.
- Ví dụ ở frame 15 bạn đặt nhãn là myFrame, thì thay vì viết như trên bạn có thể viết: gotoAndStop(“myFrame”); như vậy sẽ tránh gặp lỗi khi bạn chèn thêm một hoặc vài khung hình nữa ở trước frame 15.
· _currentframe : là khung hiện hành mà đầu phát đang đến .
- lệnh có chức năng tương tự nhưng ngược lại với gotoAndStop();
Trong vùng stage thao tác của bạn có rất nhiều đối tượng người tiêu dùng, ví dụ đoạn phim, nút nhấn, văn bản text, …, bạn hãy đặt tên cho chúng để thuận tiện gọi chúng khi bạn cần .
Ví dụ tôi có một quả bóng với thuộc tính là movie clip, tôi đặt tên như sau :
Việc đặt tên như thế nào là tùy ở bạn ( nhớ là đừng đạt tên trùng với những lệnh có sẵn trong flash là được ). Ở đây tôi dùng hậu tố _mc để chỉ nó là một đoạn phim. Chúng ta có 1 số ít hậu tố như sau :
Hậu tố | Ý nghĩa |
_mc | Đoạn phim (movie clip) |
_btn | Nút nhấn (button) |
_sound | Âm thanh |
_video | Đoạn video |
_str | Chuỗi (string) |
_aray | Mảng (dãy) |
….. | …… |
- Gọi tên tất cả các đối tượng đang có mặt trong vùng stage và thực hiện lệnh action
- Vd: this.stop( ); tất cả các đối tượng ngừng hoạt động.
Instance Name. action ( ) ;
- Instance name là tên của đối tượng
- Action có thể là một lệnh hoặc một thuộc tính của đối tượng.
- Vd: quabong_mc._x = 100; dòng lệnh này sẽ thiết lặp thuộc tính tọa độ x của quả bóng là 100 trong vùng Stage.
- Bạn nên chú ý 4 thuộc tính của đối tượng sau:
_x : tọa độ x của đối tượng người tiêu dùng
_y : tọa độ y của đối tượng người tiêu dùng
_width : thuộc tính độ rộng của đối tượng người dùng
_height : thuộc tính độ cao của đối tượng người dùng
Chú ý : toàn bộ 4 thuộc tính trên tính bằng đơn vị chức năng px, chúng được bộc lộ trong bảng Properties. Ngoài ra bạn nên quan tâm thuộc tính thiết yếu như :
_alpha : thuộc tính trong suốt của đối tượng người dùng
_currentframe : trả về cho bạn một số lượng là số frame hiện tại của đầu phát .
_rotation : dùng để xoay một góc ( độ ) của đối tượng người dùng .
_visible : thuộc tính kiểu Boolean ( luận lý ) có 2 giá trị true hoặc false, nếu là true thì đối tượng người dùng được nhìn thấy, nếu là false thì đối tượng người tiêu dùng được dấu đi .
_xmouse : trả về giá trị x của chuột
_ymouse : trả về giá trị y của chuột
_xscale : độ co và giãn theo phương x của đối tượng người dùng
_yscale : độ co và giãn theo phương x của đối tượng người tiêu dùng
Khi làm flash bạn nên phong cách thiết kế những hành vi của từng đối tượng người dùng ở những đoạn phim riêng, sau đó kéo chúng vào vùng Stage sẽ giúp bạn thuận tiện chỉnh sửa, tăng cấp chúng hơn. Vì vậy rất có năng lực bạn phải thao tác với nhiều bảng tiến trình. Chúng ta xét một ví dụ đơn thuần sau để điều khiển và tinh chỉnh những quả bóng :
Công việc tiên phong của bạn là mở chương trình Macromedia Flash lên và vẽ vào vùng stage một quả bóng. Chọn quả bóng và nhấn F8 để chuyển nó thành một đoạn phim, việc làm này đã khá quen thuộc với bạn. Trong bảng tiến trình của đoạn phim bạn chọn frame số 2 nhấn F6 để tạo khung hình khóa, tại đây bạn kéo quả bóng ( lên hay xuống là tùy bạn ) 1 px theo phương y. Việc bạn vừa thực thi sẽ giúp cho quả bóng nẩy lên xuống liên tục thi bạn chạy thử chương trình .
Bây giờ trở về màn hình hiển thị thao tác chính bạn sẽ thấy một phiên bản quả bóng là một MovieClip. Đặt tên cho nó là ball_mc trong ô Instance Name. Bạn hãy tạo hoạt động cho quả bóng bằng cách thông dụng như Create Motion Tween mà bạn đã biết. Bây giờ nhấn tổng hợp phím Ctrl + Enter bạn sẽ thấy một quả bóng vừa nhảy tưng tưng vùa chạy qua màn hình hiển thị .
Trên đây là những thao tác cơ bản mà bạn đã biết trước đây. Bây giờ là những gì bạn cần biết. Tạo thêm một lớp mới là action ngay bên trên layer 1 của bảng tiến trình chính. Nhấn F9 để mở bảng ActionScript và mở màn viết lệnh .
Bạn khởi đầu nhập vào như sau :
Bạn nghĩ rằng mọi thứ sẽ bất động ? Nhưng thực tiễn không phải như vậy, quả bóng vẫn ” nhảy tưng tưng ”. Tại sao lại như vậy ? Điều này thật dễ hiểu, bạn chỉ làm dừng bảng tiến trình chính ( có hành vi chạy ngang của quả bóng chớ không làm dừng bảng tiến trình phụ ( có chứa hành vi nhảy tưng tưng của quả bóng ) .
Để điều khiển và tinh chỉnh dừng hành vi nhảy của quả bóng bạn hoàn toàn có thể mở bảng tiến trình đó lên và nhập vào dòng lệnh như trên, nhưng điều đó sẽ không hay chút nào nếu bạn phải thao tác với quá nhiều đoạn phim. Có một cách thật đơn thuần hơn, tại bảng chính bạn nhập như sau :
Quả bóng chỉ chạy mà không nhảy .
Muốn dừng hàng loạt quả bóng bạn làm như sau :
Tuyệt vời, quả bóng nằm im bất động .
Chú ý : nếu có nhiều bảng tiến trình lồng vào nhau thì bạn gọi tên chúng từ ngoài vào trong kiểu như đường dẫn trong những thư mục vậy nhưng ở đây chúng cách nhau bởi dấu chấm (. ) .
Các sự kiện trong phim flash hoàn toàn có thể là một sự kiện bên ngoài, ví dụ khi bạn nhấn vào nút, hoặc sự kiện từ bên trong như tải phim hoặc vận động và di chuyển đến khung hình sau đó .
1. Các sự kiện bên ngoài
Phổ biến nhất trong phim flash là những nút nhấn ( button ). Mỗi khi người dùng tác động ảnh hưởng ( nhấn ) lên chúng thì flash sẽ triển khai những lệnh do người phong cách thiết kế làm sẵn .
- Sự kiện onPress: lệnh sẽ được thực hiện khi nhấp chuột
- Sự kiện onRelease: lệnh sẽ được thực hiện khi nhấp chuột rồi thả ra.
- Trong ví dụ trên, bạn tạo một button có instance name là push_btn. Mở
bảng action của layer action và viết lệnh như sau :
Nếu bạn viết lệnh trực tiếp lên nút thì bạn chọn vào nút đó và mở bảng action lên viết như sau :
2. Các sự kiện bên trong
Các sự kiện bên trong xãy ra bạn khó mà quan sát được, thế cho nên thật khó để biết flash hoạt động giải trí ra làm sao. Nhưng điều đó không quan trọng và cũng không gây khó khăn vất vả gì cho bạn khi phong cách thiết kế .
Một ví dụ đơn thuần của sự kiện bên trong là onEnterFrame, sự kiện này được tạo mỗi khi đầu phát chuyển sang một khung mới .
Bây giờ là lúc ứng dụng trong thực tiễn. Trong ví dụ quả bóng nói trên, ta sẽ học cách tinh chỉnh và điều khiển nó .
Tạo 2 quả bóng có tên phiên bản ( instance name ) là ball01_mc và ball02_mc. Tạo 2 nút lệnh có tên instance name là next_btn, prev_btn để điều khiển và tinh chỉnh quả bóng số 1. ( Trong ví dụ này ta không quan tâm tới hành vi “ nhảy tưng tưng ” của quả bóng nữa ). Nút next_btn mỗi lần nhấn quả bóng 1 sẽ chạy qua 10 px, nút prev_btn thì ngược lại. Quả bóng 2 sẽ chuyển dời ngang qua màn hình hiển thị theo tọa độ của chuột
Mở bảng action viết lệnh như sau :
/ / điều khiển và tinh chỉnh quả bóng ball01_mc trải qua hai button next_btn và prev_btn
next_btn. onPress = function ( ) {
ball01_mc. _x + = 10 ;
}
prev_btn. onPress = function ( ) {
ball01_mc. _x – = 10 ;
}
Đoạn mã sau hướng dẫn những bạn điều khiển và tinh chỉnh tọa độ y của quả bóng 1 bằng phím Up và Down trên bàn phím : Nhập đoạn mã sau vào một button bất kể có trong bảng tiến trình :
on (keyPress “
ball01_mc. _y – = 10 ;
}
on (keyPress “
ball01_mc. _y + = 10 ;
}
Trở lại layer action trên vùng stage chính bạn nhập mã lệnh sau, điều khiển và tinh chỉnh quả bóng 2 :
onEnterFrame = function ( ) {
ball02_mc. _x = _xmouse ;
}
Chương 2
Tìm hiểu về những lệnh nâng cao
Trong chương này tất cả chúng ta sẽ lần lượt tìm hiểu và khám phá một số ít lệnh và hàm nâng cao trong ActionScript
Ø Sử dụng biến để lưu trử thông tin
Ø Tìm hiểu những khái niệm về số, chuỗi, mảng, …
Ø Câu lệnh if
Ø Tìm hiểu về những vòng lặp
Biến
Biến là nơi chứa được đặt tên và bạn hoàn toàn có thể dùng nó để chứa tài liệu và sử dụng nhiều lần
Tạo biến:
Cú pháp : var variable : type ;
variable = value ;
Trong đó : variable là tên biến
type : kiểu của biến
value : giá trị của biến
Ví dụ : tạo một biến mới có tên là myVariable có kiểu số ( Number ) và thiết lập giá trị cho biến là 1 :
Var myVariable : Number ;
myVariable = 1 ;
bạn cũng hoàn toàn có thể viết ngắn hơn : var myVariable : Number = 1 ;
hoặc : var myVariable = 1 ;
hoặc : myVariable = 1 ;
Chú ý : nếu biến là kiểu chuỗi thì giá trị chuỗi được viết giữa hai dấu nháy “ ”
Bạn hoàn toàn có thể dùng hàm trace ( myVariable ) ; để xuất giá trị biến myVariable ở hành lang cửa số output .
Kiểu của biến: trên thực tế có 3 loại giá trí:
Kiểu String ( chuỗi ) : gồm có những ký tự và ký số
Kiểu Number ( số ) : gồm có hàng loạt tập số thực
Kiểu Boolean ( luận lý ) : là những giá trị true, false
Nối chuỗi : những chuỗi được nối với nhau bằng dấu cộng ( + ) ;
Vd : var myName : String ;
myName = “ bin ” + “ ho ” ;
tác dụng cho biến myName là chuỗi “ binho ” ;
Đối với kiểu số thì linh động hơn những bạn hoàn toàn có thể cộng, trừ, nhân, chia, … hoặc thậm chí còn là bình phương hay khai căn .
Kết quả nối số với chuỗi là một chuỗi mới .
Vd : myAge = 15 + “ 5 ” ;
Kết quả cho myAge là chuỗi “ 155 ” chứ không phải là 20 .
Câu lệnh điều kiện
Cú pháp:
if ( condition ) {
Thực hiện những lệnh 1 ;
}
else { thực thi những lệnh 2 ;
} ;
Trong đó : condition là điều kiện kèm theo, nếu điều kiện kèm theo là đúng thì thực thi những lệnh 1, nếu ngược lại thì triển khai những lệnh 2 .
Ví dụ: if ( myBall_mc._y < 100){
gotoAndPlay ( “ fallingball ” ) ; }
else { gotoAndStop ( 1 ) ;
}
Ý nghĩa: nếu tọa độ y của quả bóng myBall_mc nhỏ hơn 100 px thì đi đến và chạy tại frame “fallingball”, nếu ngược lại thì đi đến và dừng tại frame số 1.
Chú ý : câu lệnh if rút gọn không có hàm else .
Các toán tử:
Ký hiệu toán tử | Ý nghĩa | Ví dụ |
= = | Kiểm tra xem 2 toán hạng có bằng nhau không? | myball_mc. _x = = 100 |
> | Toán hạng 1 có lớn hơn toán hạng 2 không? | ball01_mc. _x > ball02_mc. _x |
< | Toán hạng 1 có nhỏ hơn toán hạng 2 không? | ball01_mc. _x < ball02_mc. _x |
< = | Toán hạng 1 có nhỏ hơn hoặc bằng toán hạng 2 không? | ball01_mc. _x < = ball02_mc. _x |
> = | Toán hạng 1 có lớn hơn hoặc bằng toán hạng 2 không? | ball01_mc. _x > = ball02_mc. _x |
! = | Toán hạng 1 có khác toán hạng 2 không? | ball01_mc. _x ! = ball02_mc. _x |
Toán tử logic
- && and
- || or
- ! not
Các hàm phép toán:
- Math.abs ( number):trả về giá trị tuyệt đối của đối số number
- Math.acos(number): trả về giá trị hàm arccos của đối số number ở góc radian
- Math.asin(number): trả về giá trị hàm arcsin của đối số number ở góc radian
- Math.atan(number): trả về giá trị hàm arctan của đối số number ở góc radian
- Math.cos(number): trả về giá trị hàm cos của đối số number, number tính bằng độ.
- Math.E: trả về giá trị số e = 2.71828182845905
- Math.exp(number): trả về giá trị e mũ, trong đó number là số mũ
- Math.PI: trả về giá trị số = 3.14159265358979
- Math.pow(base, exponent): hàm mũ, trong đó base là cơ số, exponent là số mũ.
- Math.random(): trả về một số ngẫu nhiên nằm trong khoảng từ 0 đến 1.
- Math.sqrt(number): hàm căn thức, number là số thực dương.
Mảng (Array)
Mảng là một thành phần chứa nhiều biến mà được truy vấn bằng một tên .
Cú pháp:
tenmang = new Array ( ) ;
Ví dụ: tạo mảng có tên là physic_array:
physic_array = new Array ( ) ;
physic_array [ 0 ] = “ co hoc ” ;
physic_array [ 1 ] = “ nhiet hoc ” ;
physic_array [ 2 ] = “ dien tu ” ;
trong đó “ co hoc ”, “ nhiet hoc ”, “ dien tu ”, … là những thành phần của mảng. Mảng có nhiều thành phần và mở màn bằng thành phần 0 .
Chú ý:
- Bạn có thể tạo mảng bằng cách khác ngắn gọn hơn:
- physic = new Array ( “co hoc”, “nhiet hoc”, “dien tu”);
- Mảng có 3 loại biến khác nhau: Number, String, Boolean.
- Vd: my_array = new Array( );
my_array [ 0 ] = “ physic ” ;
my_array [ 1 ] = 2 ;
my_array [ 2 ] = true ;
- Xác định kiểu cho mảng: mảng có kiểu là mặc định là Array
- var my_array:Array = new Array;
Một số phương pháp và đối tượng của mảng:
- Concat: Nối thêm phần tử vào mảng và trả về mảng mới.
- Join: Nối tất cả các phần tử của mảng vào một biến chuỗi
- Pop: Loại bỏ phần tử cuối cùng của mảng và trả về giá trị của phần tử này
- Push: Thêm một số phần tử vào cuối mảng đã có, trả về mảng với độ dài mới
- Reverse: Đảo ngược thứ tự các phần tử của mảng.
- Sort: Đảo lộn thứ tự phần tử bằng phương pháp sắp xếp lại
- Length: Trả về chiều dài của mảng được đo bằng số phần tử
Ví dụ : nối những mảng :
Mang1_array = new Array ( “ cohoc ” ) ;
Mang2_array = new Array ( “ nhiethoc ” ) ;
Mang3_array = new Array ( “ dientu ” ) ;
Mang_array = Mang1_array. contac ( Mang1_array, Mang2_array ) ;
Ta được Mang_array = [ “ cohoc, nhiethoc, dientu ” ]
Các vòng lặp
Khi chạy bảng tiến trình đồng nghĩa tương quan với việc flash đã tạo một vòng lặp, vòng lặp được chạy từ frame số 1 đến frame cuối của bảng tiến trình chính. gotoAnd Play ( ) là một vòng lặp một số ít khung hình nhất định, tuy nhiên ở đây tất cả chúng ta sẽ xét cách lặp những hành vi .
Vòng lặp while
Cú pháp :
while ( condition ) {
Thực hiện những việc này ;
} ;
Trong đó : condition là điều kiện kèm theo, nếu điều kiện kèm theo là true thì triển khai những lệnh trong dấu ngoặc mốc { }
Ví dụ : Mở flash mới và nhập vào bảng action dòng lệnh sau :
- Dòng đầu bạn tạo một biến mới có tên là myNumber và gán cho nó giá trị 0.
- Vòng lặp while kiểm tra xem biến myNumber có nhỏ hơn 10 hay không, nếu đúng thì thực hiện lệnh ở dòng 3, dòng 4.
-
Kết quả của vòng lặp Dòng 3 sẽ xuất ra giá trị biến myNumber ở hành lang cửa số Output
- Dòng 4 tăng giá trị myNumber lên 1 đơn vị.
- Vòng lặp kết thúc khi myNumber = 10.
Vòng lặp for
Cú pháp :
for ( init ; condition ; next ) {
thực thi những lệnh này ;
}
Trong đó : init : biến
condition : điều kiện kèm theo
next : giá trị biến tiếp theo
Ví du : for ( i ; i < 10 ; i + + ) {
trace ( i ) ;
}
Câu lệnh trên cho hiệu quả như dòng lặp while .
Ví dụ về các vòng lặp
Bây giờ bạn hãy mở một flash mới và vẽ một quả bóng vào vùng stage, nhấn F8 để chuyển nó thành một đoạn phim, đặt tên phiên bản (instance name) là ball_mc. Bây giờ mở khung hình 1 của lớp action lên và nhập mã lệnh như sau.
var i : Number = 0 ;
while ( i < 10 ) {
duplicateMovieClip ( ball_mc, “ ball ” + i + “ _mc ”, i ) ;
i + + ;
}
Hàm duplicateMovieClip ( target, newname = “ ”, depth ) ;
Ý nghĩa : tạo ra một phiên bản mới của đoạn phim
Hàm có 3 đối số : target là tên phiên bản của đoạn phim cần nhân bản, newname là nơi xác lập tên gọi của phiên bản mới, đối số depth thông tin cho flash biết Lever nào để đặt bản sao, mỗi đoạn phim chỉ có một Lever nên ta dùng biến đếm cho mỗi phiên bản của phim .
Kết quả ở đầu cuối của đoạn mã trên là tạo ra 10 bản sao của đoạn phim ball_mc có tên lần lượt là ball0_mc, ball1_mc, … ball9_mc .
Bây giờ ta bổ trợ thêm đoan mã sau :
ball_mc. onEnterFrame = function ( ) {
/ / vận động và di chuyển theo vị tri chuột
this. _x = _xmouse ;
this. _y = _ymouse ;
} ;
Chỉ có đoạn phim ball_mc là vận động và di chuyển theo chuột, 10 đoạn phim còn lại vẫn nằm im bất động. Dĩ nhiên ta không phải viết lệnh riêng không liên quan gì đến nhau để trấn áp từng đoạn phim một mà sử dụng vòng lặp, bạn hãy bổ trợ đoạn mã triển khai xong như sau :
ball_mc. onEnterFrame = function ( ) {
j = 0 ;
while ( j < 0 ) {
/ / vận động và di chuyển theo vị tri chuột
this. _x = _xmouse ;
this. _y = _ymouse ;
j + + ;
}
} ;
var i : Number = 0 ;
var j : Number = 0 ;
while ( i < 10 ) {
duplicateMovieClip ( ball_mc, “ ball ” + i + “ _mc ”, i ) ;
i + + ;
}
Đoạn mã này được cho phép bạn update vị trí của phiên bản ball_mc 10 lần thay vì mỗi lần một phiên bản khác nhau. Chúng ta thiết kế xây dựng lại đoạn như sau :
ball_mc. onEnterFrame = function ( ) {
j = 0 ;
while ( j < 0 ) {
/ / vận động và di chuyển theo vị tri chuột
_root [ “ ball ” + j + ” _mc ” ]. _x = _xmouse ;
_root [ “ ball ” + j + ” _mc ” ]. _y = _ymouse ;
j + + ;
}
} ;
Trong đó thành phần _root sẽ thông tin cho flash biết quan sát trong bản tiến trình chính, thành phần trong dấu [ ] thông tin cho flash biết đây là một hằng chuỗi, mà là một tham chiếu. Điều này hiểu _root như thể một mảng mà những thành phần là những đoạn phim và dùng tên thay vì số chỉ mục .
Cho đến giờ đây bạn vẫn chưa nhìn thấy 10 phiên bản quả bóng, chúng sẽ hiện ra ngay thôi. Bạn đặt phần từ gốc của mình tại vị trí x : 300, y : 200, ta tính hiệu khoảng cách từ vị trí chuột đến vị vị trí gốc .
ball_mc. onEnterFrame = function ( ) {
/ / tính khoảng cách từ tâm đến vị trí chuột
hieux = _xmouse – 300 ;
hieuy = _ymouse – 200 ;
j = 0 ;
while ( j < 10 ) {
/ / chuyển dời theo vị tri chuột
_root [ “ ball ” + j + ” _mc ” ]. _x = 300 + ( hieux * j / 10 ) ;
_root [ “ ball ” + j + ” _mc ” ]. _y = 200 + ( hieuy * j / 10 ) ;
j + + ;
}
} ;
var i : Number = 0 ;
var j : Number = 0 ;
var hieux : Number = 0 ;
var hieuy : Number = 0 ;
while ( i < 10 ) {
duplicateMovieClip ( ball_mc, “ ball ” + i + “ _mc ”, i ) ;
i + + ;
}
Bạn chạy thử để thấy hiệu quả .
Chương 3 :
Các mẫu ActionScript
Trong chương này tất cả chúng ta sẽ lần lượt làm quen với một số ít hàm, đoạn mã cơ bản để ứng dụng vào việc phong cách thiết kế của bạn, dựa trên những gì bạn đã được biết ở 2 chương trước .
Mở tập tin flash mới, thiết lập những giá trị bắt đầu :
Đây là nhu yếu chuẩn của CLB VL ảo, với độ rộng là 800 px và độ cao là 600 px, background color bạn hoàn toàn có thể tùy chọn sao cho phù họp với phong cách thiết kế của mình. Frame rate là 18 khung hình trên giây vì vận tốc 12 hình trên giây đã lỗi thời, ở vận tốc 18 fpt thì flash chạy sẽ mịn hơn .
Tạo trường nhập và xuất văn bản:
Dùng công cụ Text Tool ( T ) để tạo trường nhập và xuất văn bản, trường nhập có thuộc tính là Input Text, trường xuất có thuộc tính là Dynamic Text .
Trường nhập văn bản
Trường xuất văn bản
Trong trường xuất văn bản bạn đặt tên biến là output_txt, mục Show border around text không nhất thiết bạn phải chọn vì đây là vùng thao tác của flash .
Tạo một nút nhấn đặt tên là enter_btn.
Tại khung hình 1 lớp action bạn nhập đoạn mã như sau :
Như vậy mỗi khi bạn nhập vào trường nhập thì giá trị đó sẽ được lưu vào biến input_txt, và mỗi khi bạn nhấn vào nút enter_btn thì giá trị đó được xuất ra ở khung output .
Chú ý : có một số ít tùy chọn để người dùng nhập vào, ví dụ bạn chọn vào mục Embed … để mở hộp thoại : bạn chọn Numberals [ 0 .. 9 ] ( 11 glyphs ) thì chỉ nhập được những ký số vào khung input mà thôi .
Button và key (Nút nhấn và bàn phím)
Nếu bạn là người sử dụng chương trình flash do người khác viết thì điều gì là bạn mong mõi nhất trong file phim ấy ? Nếu là tôi thì câu vấn đáp sẽ là : tôi muốn tác động ảnh hưởng vào phim flash của bạn hoàn toàn có thể là trải qua chuột và bàn phím. Thật là như mong muốn, flash cung ứng cho bạn những công cụ lập trình để làm được điều đó .
Button
Khi bạn tạo một button sẽ có 4 frame mặt định là Up, Over, Down, Hit ( điều này có lẽ rằng bạn đã biết ), yếu tố ở đây là khi bạn nhấn hoặc nhấn rồi thả ra một button thì flash sẽ thực thi lệnh cho bạn như thế nào ?
Có 2 cách để bạn lập trình cho một button hoạt động giải trí :
- Cách 1 là viết vào lớp action trong bảng tiến trình chính, khi đó cú pháp lệnh sẽ là:
- Instance name.onPress = function(){
thuc hien cac lenh nay ;
}
o Trong đó instance name là tên button bạn muốn viết lệnh
- Cách 2 là bạn viết trực tiếp vào button, bạn chọn vào button muốn viết lệnh, mở bảng action và viết lệnh với cú pháp như sau:
- on (release){
triển khai những lệnh này ;
}
o trong ví dụ trên bạn đã viết lệnh vào lớp action, bạn chọn lại lớp action và xóa đoạn mã trên, chọn vào button enter_btn và mở bảng action viết lệnh như sau :
o Bạn hãy kéo button enter ra khỏi vùng stage để dấu nó đi vì ta không cần nhấn vào nó .
o Nhấn tổng hợp phím Ctrl + Enter chạy thử, bạn nhập vào khung input và nhấn phím Enter trên bàn phím thì chuỗi bạn vừa nhập sẽ Open ở khung output như khi bạn click vào nút enter vậy .
- Chú ý: onPress: lệnh sẽ được thực hiện khi nhấp chuột
onRelease : lệnh sẽ được thực thi khi nhấp chuột rồi thả ra .
key
Ở chương trước bạn đã có dịp được biết về cách tinh chỉnh và điều khiển quả bóng chuyển dời trải qua 2 phím Up và Down trên bàn phím, ví dụ vừa qua giúp bạn biết cách sử dụng phím enter để hiển thị văn bản ở trường xuất .
Qua những ví dụ trên bạn cần chú ý quan tâm những lệnh về bàn phím chỉ được viết vào những button, điều này khá mê hoặc, bạn hoàn toàn có thể tạo một button thật đơn thuần ví dụ điển hình như một dấu chấm tròn thật nhỏ có màu trùng với màu nền để dấu chúng đi thuận tiện hoặc kéo chúng ra khỏi vùng stage để người dùng không nhìn thấy, viết những lệnh bàn phím cho chúng, bạn sẽ tạo cho người dùng cảm xúc như họ đang nhập trực tiếp từ bàn phím lệnh vào flash vậy .
Một số cú pháp lệnh về bàn phím áp dụng cho button:
- Nếu là key bình thường thì bạn viết như sau:
- on (keyPress “a”) {
triển khai lệnh này ;
}
o on ( keyPress “ A ” ) {
triển khai lệnh này ;
}
- Nếu là các key chức năng như Enter, Up, Down…
- on (keyPress “
”) {
- on (keyPress “
triển khai lệnh này ;
}
o 1 số ít phím tính năng :
Một số cú pháp lệnh về bàn phím áp dụng cho MovieClip:
onClipEvent ( enterFrame ) {
if ( Key. isDown ( Key. getCode ( “ a ” ) ) ) {
triển khai lệnh này ;
}
if ( Key. isDown ( Key. LEFT ) ) {
thực thi lệnh này ;
}
}
Di chuyển đối tượng
Người dùng cũng muốn ảnh hưởng tác động lên những đối tượng người dùng phim như nắm và kéo phim, những thanh trượt để biến hóa một thuộc tính nào đó .
Di chuyển theo chuột: thường được dùng trong các game tương tác hoặc khi bạn muốn dùng chúng để làm tăng sức hấp dẫn cho đoạn phim của bạn.
Hướng dẫn sau giúp bạn là một tâm ngắn và chúng sẽ biến hóa tọa độ theo đọa độ chuột như trong 1 số ít game bắn súng mà bạn vẫn thường thấy. Mở flash mới, chọn Insert / new Symbol hoặc Ctrl + F8 để tạo một đoạn phim mới. Dùng những công cụ vẽ hình tròn trụ, đường thẳng để vẽ đoạn phim, trang trí và làm những hiệu ứng tùy thích .
Trở về bảng tiến trình chính, kéo một phiên bản của đoạn phim bạn vừa phong cách thiết kế ra vùng stage, đặt tên phiên bản cho nó là hongtam_mc, tại layer action bạn nhập đoạn mã sau :
Chạy thử chương trình bạn sẽ thấy đoạn phim bạn vừa làm sẽ di chuyển theo tọa độ chuột. Bây giờ bạn chỉ cần dấu chuột đi là được.Bạn bổ sung câu lệnh:
Mouse. hide ( ) ; phía sau dòng thứ 3 để dấu chuột di là xong .
drag
Đoạn mã sau sẽ hướng dẫn những bạn chỉ chuyển dời đối tượng người dùng khi lick chuột vào đối tượng người tiêu dùng và kéo rê nó đi. Chọn vào phiên bản movie hoặc button, mở bảng tinh chỉnh và điều khiển nhập đoạn mã sau :
1. onClipEvent ( mouseDown ) {
2. if ( this. hitTest ( _root. _xmouse, _root. _ymouse ) ) {
3. this. startDrag ( ) ;
4. } ;
5. }
6. onClipEvent ( mouseUp ) {
7. if ( this. hitTest ( _root. _xmouse, _root. _ymouse ) ) {
8. this. stopDrag ( ) ;
9. } ;
10. }
/ / Dòng 1. là mỗi khi xãy ra sự kiện nhấn chuột, dòng 2, câu lệnh if kiểm tra xem tọa độ x và y của chuột có nằm trên đối tượng người dùng cần drag hay không. Nếu đúng thì được cho phép drag đối tượng người dùng. Tương tự như vậy ở dòng số 6 là sự kiện được tạo ra mỗi khi thả chuột, dòng số 7 không bắt buột phải có, tuy nhiên trong 1 số ít trường hợp ( có nhiều hơn 1 đối tượng người tiêu dùng được drag ) thì đoạn mã drag trên sẽ bị sai. Do đó, dòng số 7 giúp cho mã lệnh của bạn mạnh hơn, đúng trong mọi trường hợp .
Ví dụ: làm thanh trượt. Bạn tạo một button có tên instance name là thanhtruot_btn và một nút trượt có thuộc tính là Movie Clip và đặt tên Instance name là nuttruot_mc.
|
|
Nhấp chọn vào button thanh trượt và mở bảng action viết đoạn mã sau :
on ( press ) {
startDrag ( “ nuttruot_mc ”, true, 260,300,530,300 ) ;
}
on ( release ) {
stopDrag ( ) ;
}
on ( releaseOutside ) {
stopDrag ( ) ;
}
Bạn đã khá quen thuộc với những hàm trên rồi, ở đây những số 260, 300, 530, 300 là khoảng cách của nuttruot_mc so với những cạnh left, top, right, bottom. Chú ý nếu nếu đối số left = right thì không hề drag đối tượng người dùng theo chiều ngang được, cùng như ta không hề drag theo chiều dọc nếu đối số top = bottom .
Lập trình chuyển động
Có thể nói hoạt động là đặc tính cố hữu và là thuộc tính cơ bản của những sự vật, trong vật lý sự hoạt động của những vật rất phong phú, từ những hoạt động cơ học như hoạt động thẳng đều, hoạt động tròn, hoạt động cong, … đến những chuyền động phức tạp như hoạt động nhiệt của những phân tử, hoạt động của những hạt, những electron, …
Chuyển động đơn giản nhất là chuyển động thẳng, mà bạn đã có dịp làm quen với nó ở chương trước thông qua lệnh Create Motion Tween có sẵn trong flash. Bạn có thể tùy chọn nhanh dần đều hay chậm dần đều thông qua bảng Property:
Ở hộp Tween bạn chọn Motion để chỉ đây là một hoạt động, trong hộp Ease bạn chọn từ 1 đến 100 nếu muốn hoạt động chậm dần, từ – 1 đến – 100 nếu muốn đó là hoạt động nhanh dần, chọn 0 là hoạt động thẳng đều. Trong hộp tùy chọn Rotation bạn chọn CW là thuộc tính đối tượng người dùng xoay theo chiều kim đồng hồ đeo tay, CCW đối tượng người dùng xoay ngược chiều kim đồng hồ đeo tay. Ngoài ra đối tượng người dùng còn hoàn toàn có thể chuyền động theo lớp dẫn .
Đó là những hoạt động đơn thuần dựa vào những thuộc tính có sẵn của flash, còn viết lệnh, lập trình cho một đối tượng người dùng hoạt động thì sẽ như thê nào ?
Chắc hẵn bạn còn nhớ hoạt động theo phương ngang của một quả bóng ?
onEnterftame = function ( ) {
ball_mc. _x + = 10 ;
}
/ / mỗi lần qua frame mới thì tăng giá trị x của quả bóng lên 10 px .
Đây là hoạt động thẳng đều, nếu bạn muốn nhanh dần hay chậm dần thì sao ? Vấn đề ở đây chỉ là thuật toán, ví dụ bạn thay dòng lệnh số 2 thành : ball_mc. _x + = 800 – ball_mc. _x ; trong đó 800 là độ rộng của vùng thao tác. Bạn cũng hoàn toàn có thể dùng thuộc tính rotation để lập trình quả bóng xoay .
Chuyển động theo quỹ đạo : ví dụ một quả bóng khi được ném lên theo phương xiên thì quỹ đạo hoạt động của nó là một parabol, dựa vào sự nhờ vào tuyến tính giữa hai đại lượng x và y trong phương trình quỹ đạo bạn hoàn toàn có thể lập trình để một đối tượng người tiêu dùng hoạt động theo quỹ đạo ấy. Ta có mối liên hệ :
Y = f ( x ), bạn nhập đoạn mã sau :
/ / xác lập vị trí bắt đầu của quả bóng
onClipEvent (load) {
this. _x = vị trí đầu của x ;
this._y = vị trí đầu của y ;
speed = tốc độ ;
}
// x chuyển động theo phương ngang chậm dần, y chuyển động theo phương trình y = f(x).
onClipEvent (enterFrame) {
this._x += (vị trí cuối của x – this._x)/speed ;
this._y = f (ball_mc._x);
}
Chú ý : bạn viết đoạn mã trên trực tiếp vào doạn phim, còn nếu bạn viết vào layer action trên bảng tiến trình chính thì câu lệnh đầu được sửa lại là :
ball_mc. onEnterFrame = function ( ) {
Ví dụ: viết lệnh chuyển động cho một quả bóng ball_mc có phương trình quỹ đạo là y = :
onClipEvent (load) {
this. _x = 0 ;
this._y = 0 ;
}
onClipEvent (enterFrame) {
this._x += 2 ;
this._y = Math.pow(this._x, 2);
}
Chuyển động hổn độn của những phân tử :
Bạn triển khai như sau : chọn Insert / new symbol hoặc Ctrl + F8 để tạo một Movie Clip, bạn vẽ vào vùng stage một phân tử khí nho nhỏ. Bạn đừng kéo phân tử này ra vùng stage chính vội, tất cả chúng ta sẽ học cách thao tác với Library. Trong bảng điều khiển và tinh chỉnh library bạn nhấp phải lên đoạn phim vừa tạo chọn Linkage … Hộp thoại Linkage Properties Open, bạn lưu lại chọn vào mục Export for ActionScript, trong phần Identifier bạn đặt tên là ball_mc ( hay một cái tên nào mà bạn thích ). Xin chú thích thêm là khi thao tác trực tiếp với những library bạn không hề dùng tên trong library để gọi chúng ra vì tên library chỉ để cho người dùng phân biệt nó với những mục khác .
Trở lại layer action trong bảng tiến trình chính bạn viết mã lệnh như sau :
for ( i = 0 ; i < 10 ; i + + ) {
myball = _root. attachMovie ( “ ball_mc ”, ” ball_mc ” + i, i ) ;
myball. onEnterFrame = function ( ) {
this. _x = random ( 280 ) ;
this. _y = random ( 180 ) ;
} ;
}
Trong đó tính năng attachMovie giúp bạn đặt một phiên bản của đoạn phim vào vùng bộc lộ. Bạn dùng vòng lặp for để kéo ra cùng lúc nhiều phiên bản của đoạn phim. Hàm random ( number ) trả về cho bạn một số nguyên trong khoảng chừng 0 đến đối số number .
Làm đồng hồ đeo tay với Flash .
Đồng hồ số :
Dùng công cụ Text tool ( T ) để tạo một trường xuất có thuộc tính là Dynamic Text, đặt tên phiên bản Instance name là txt, tên biến là time trong bảng Property .
Mở layer action và nhập đoạn mã sau :
function getTime ( ) {
var today : Date = new Date ;
var gio : String = String ( today. getHours ( ) ) ;
var phut : String = String ( today. getMinutes ( ) ) ;
var giay : String = String ( today. getSeconds ( ) ) ;
if ( gio.length = = 1 ) { gio = “ 0 ” + gio } ;
if ( phut.length = = 1 ) { phut = “ 0 ” + phut }
if ( giay.length = = 1 ) { giay = “ 0 ” + giay } ;
time = ( gio + ” : ” + phut + ” : ” + giay ) }
setInterval ( getTime, 100 )
Công việc còn lại của bạn là trang trí cho cái đồng hồ đeo tay của mình trông thật ấn tượng và sinh động .
Đồng hồ kim :
Tạo 3 kim đồng hồ đeo tay có độ dài khác nhau có thuộc tính là movieclip ( chú ý quan tâm tâm của chúng nằm tại một đầu của kim ), đặt tên Instance name của chúng là kimgio, kimphut, kimgiay. Đặt chúng trùng nhau trong vùng stage, sau đó nhập đoạn code sau :
var today:Date = new Date();
function getTime() {
var hours = today.getHours();
var minute = today.getMinutes();
var second = today.getSeconds();
var sec = second*6;
var min = minute*6;
var hour = hours*30+minute/2;
_root.kimgio._rotation = hour;
_root.kimphut._rotation = min;
_root.kimgiay._rotation = sec;
delete today;
today = new Date();
}
setInterval(getTime, 10);
Công việc ở đầu cuối vẫn là tìm mặt đồng hồ đeo tay đặt vào chúng là xong .
Tài liệu tìm hiểu thêm
Lập trình ActionScript cho flash – Nguyễn Trường Sinh – Nhà xuất bản lao động xã hội .
Macromedia FLASHMX – Nguyễn Trường Sinh – Nhà xuất bản lao động xã hội .
Website dayvahoc.net
http://www.3c.com.vn
Advertisement
Share this:
Thích bài này:
Đang tải …
Source: https://vh2.com.vn
Category : Tin Học