PDA

View Full Version : [TUTOR] Tạo menu show cho Pictures



Kar
06-05-2003, 07:32
* Ok, để đền bù cho cái tut Clock lần trước, hôm nay mình xin giới thiệu một cách làm một đoạn MovieClip dùng để show các tấm ảnh. Bạn cũng có thể áp dụng kỹ thuật này trong một vài đoạn phim của bạn để làm một vài demo chẳng hạn.
* Đầu tiên bạn phải có một số “vật liệu” sau:
- Khoảng 6 tấm hình size 40x60 để làm nút nhấn, bạn nên đặt tên là a.jpg, b.jpg... cho dễ nhớ.
- 6 tấm hình khổ 100x150 giống như các tấm hình size nhỏ ở trên được nối lại với nhau thành một “dây hình” (500x150) với trình tự a, b, c, d, e, f. (đặt tên là multipic.jpg)
Rồi, mở Flash lên đi Bây giờ các công việc cần làm là:
- Tạo một đối tượng Graphic tên "show" và import cái "multipic.jpg" vào. Nhớ chỉnh (X, Y) cho nó là (0,0) nha.
- Tạo một MovieClip (MC) tên "mShow" và lôi cái "show" trong thư viện ra. (X,Y) = (0,0).
- Tạo tiếp một MC nữa tên là "allShow" có 3 layer.
+ Layer 1, bạn chèn "mShow" vào với (X,Y) = (1,1). Đặt tên cái MC này trong bảng Instance là "images".
+ Layer 2, bạn vẽ một hình vuông không có đường viền sao cho hình vuông này sẽ che lấp hoàn toàn 1 tấm hình trong dãy hình của "mShow". Tôi vẽ nó với kích thước 103x153 và (X,Y) = (0,0). Như thế, nó sẽ che hoàn toàn tấm hình đầu tiên của "mShow" mà bạn chèn vào ở layer thứ nhất. Bây giờ chuyển layer 2 thành layer mask đi nào, bạn sẽ thấy nó chỉ xuất hiện tấm hình đầu tiên thôi, còn các tấm sau mất sạch, kệ nó, đừng lo.
+ Layer 3, bạn có hay không layer này cũng không quan trọng, nó chỉ là một cái khung bao quanh cho đẹp thôi. Tôi vẽ một cái khung bao quanh hình vuông ở layer 2 (khung này không có fill đâu nhé) với kích thước và tọa độ X,Y như hình vuông nhưng có đường viền 5px.
- Tiếp theo, bạn tạo lần 6 đối tượng Button a, b, c, d, e, f với từng tấm ảnh size 40x60 mà bạn chèn vào. Có thể tùy biến các hiệu ứng cho button bạn thêm đẹp.
- Và bây giờ ra ngoài scence chính đi nào, bạn tạo trong scence chính 2 layer.
+ Layer 1: chứa "allShow" với tọa độ X, Y = (150,30). Đặt tên cho "allShow" trong bảng Instance là "mask".
+ Layer 2: chứa 6 cái Button bạn đã tạo ở trên, bạn đặt ở đâu tùy ý, nhưng nhớ để theo thứ tự cho dễ làm việc.
- Bây giờ đến phần viết code cho bọn nó đây.
+ Đầu tiên bạn viết code cho "allShow" trước: đoạn code thế này:

onClipEvent (load) {
i = images._width/6;
speed = 8;
base_x = images._x;
menu = 0;
}
onClipEvent (enterFrame) {
to_x = base_x-i*menu;
images._x = (to_x-images._x)/speed+images._x;
}

- Sau đó đến các Button, bạn lần lượt bấm vào từng button để đưa đoạn code này vào: (bạn sẽ thay thế giá trị 0, 1, 2... cho từng button. Vd: button a thì mask.menu=0, button b thì mask.menu=1... đến button f thì mask.menu=5.

on (rollOver) {
mask.menu = 0;
}

Chú ý:
- Bạn có thể thay đổi các giá trị của đoạn code cho allShow như dòng i=images.width/6 thành 7,8,9 nếu số lượng hình trong dãy hình của bạn nhiều hơn (đoạn code này chia độ rộng dãy hình bạn thành nhiều đoạn nhỏ ứng với tấm hình bạn đặt trong đó.)
- Hoặc bạn cũng có thể thay đổi tốc độ lướt cho allShow tại dòng speed, giá trị càng nhỏ thì tốc độ càng cao.
- Bạn cũng có thể thay đổi cách click vào button tại dòng on (rollOver) của button. Tất cả điều đó không quan trọng, miễn sao scence của bạn xuất ra đẹp mắt là ok rồi.
- Chúc bạn thành công, nhớ cho mình cái ý kiến của bạn về bài viết. Nếu có gì thắc mắc, mail cho mình.
- Bài viết này có kèm theo file source để ví dụ...

Hynohun
06-05-2003, 18:44
hi vọng là cái này không có trong Sample ;)

Kar
06-05-2003, 18:49
trời, tui bỏ công viết tut cho các bạn, bạn lại đi nói kiểu đó, chắc lần sau tui không thèm viết nữa đâu. Bạn có giỏi thì đi mà viết cho cái newbine, đừng ở đó mà cạnh khoé... :(

ntngochien
07-05-2003, 09:48
to Kar:
it's waste of time to angry!
Ai dám chắc chắn rằng mình đã đọc hết các sách, vào hết các web..v..vv mà biết được đâu đó có cái tur... tui nghĩ là bạn thật đáng quý, đã dùng thời gian quý báu của bạn để viết tur cho mọi người đọc, những kẻ phá bĩnh thì chẳng đáng để bận tâm đâu bạn ạ. Mà tui nghĩ Darkbaron MX chỉ ghẹo bạn tí tẹo thôi mà, phải ko Darkbaron MX?;-)
Mong là sẽ tiếp tục đọc được những tur của Kar ;-)

Hynohun
07-05-2003, 12:22
Kar đừng có mà nổi điên lên như vậy, không phân biệt được câu nói đùa với câu nói nghiêm túc à

Bluenick
07-05-2003, 23:11
Đúng là flashkit có cả chục loại kiểu này nhưng cách viết khác nhau ! Không hay lắm ... vì đụng hàn wá.

To Darkbaron MX: nhận xét đúng đó, freesource here

Kar
08-05-2003, 12:47
Ok, thế thì lần sau cố gắng vậy, các tut không đụng hàng thì cũng có thể có, nhưng mà không dành cho newbie, phần lớn đụng đến code nên không thể chỉ tường tận cho người mới học Flash biết được. Nếu không biết gì thì bạn có thể post câu hỏi lên được mà...
Sorry Darkbaron MX lần sau sẽ rút kinh nghiệm...

???? Đúng là flashkit có cả chục loại kiểu này nhưng cách viết khác nhau ! Không hay lắm ... vì đụng hàn wá.
To Darkbaron MX: nhận xét đúng đó, freesource here????

Nếu có rồi, chỉ cần bạn dịch ra tiếng Việt và post lên đây là mọi người hết sức cảm ơn bạn, đâu phải ai cũng giỏi tiếng Anh như bạn mà hiểu hết cách họ làm trong FlashKit.

sontiens
29-05-2011, 23:39
cam on Kar nhiu, đôi với mình thì nó rất hữu ích,
một lần nữa cám ơn sư huynh nha!!