Bạn đã biết cách tạo ra thể hiện của nhân vật: trỏ vào tên nhân vật trong thư viện, kéo vào sân khấu.
Ngoài cách thức thủ công như vậy, ta còn có thể tạo ra thể hiện của nhân vật bằng câu lệnh ActionScript, nghĩa là tạo ra thể hiện vào lúc chạy chương trình. Đó là việc thường làm khi lập trình Flash vì ta không luôn luôn biết trước cần có bao nhiêu thể hiện trên sân khấu. Số lượng thể hiện trên sân khấu có thể thay đổi. Mỗi thể hiện có thể xuất hiện và biến mất tùy lúc. Thử hình dung diễn biến của trò chơi Space Invaders quen thuộc, bạn thấy ngay: việc tạo thể hiện một cách linh hoạt vào lúc chạy là nhu cầu bức thiết.
Để thử tạo thể hiện bằng câu lệnh, bạn hãy mở tập tin Flash mới, vẽ một hình ô-van (có màu tô tùy ý nhưng đừng quá đậm), căng khung chọn bao quanh hình vừa vẽ, gõ phím F8, gõ tên Oval và gõ Enter. Bạn biết quá rõ: thao tác vừa thực hiện tạo ra một nhân vật mang tên Oval. Hình ô-van trên sân khấu trở thành một thể hiện của nhân vật Oval. Gõ phím F11 để mở bảng Library, bạn thấy rõ nhân vật Oval được lưu trữ ở đó.
Bạn xóa thể hiện của nhân vật Oval trên sân khấu (bấm vào hình ô-van, gõ phím Delete). Ta sẽ tạo ra thể hiện của nhân vật Oval trên sân khấu trống trơn bằng câu lệnh thích hợp.
Trước khi làm điều đó, bạn bấm-phải vào tên Oval trong thư viện, chọn
Linkage trong trình đơn vừa hiện ra. Trong hộp thoại Linkage Properties, bạn chọn mục Export for ActionScript (hình 1) và bấm OK. Thao tác như vậy nhằm khai báo với Flash rằng: ―Khi tạo ra tập tin SWF, nhớ ghi vào đó nhân vật
mang tên Oval‖. Nếu bạn không khai báo như vậy, Flash sẽ không ghi nhân vật Oval vào tập tin SWF với lý do đơn giản: nhân vật Oval không hiện diện trên sân khấu. Một khi trong tập tin SWF không có nhân vật Oval, chương trình được ghi trong SWF không thể tạo ra thể hiện của nhân vật Oval vào lúc chạy.
Có lẽ bạn hơi ngạc nhiên vì chuyện khai báo nêu trên: ―Tại sao Flash không tự động ghi mọi nhân vật trong thư viện vào tập tin SWF, dù có hiện diện trên sân khấu hoặc không?‖. Nghĩ kỹ một chút, bạn thấy ngay sự ―khó chịu‖ của Flash mang đến lợi ích cho bạn. Bạn có thể lưu trữ rất nhiều thứ trong thư viện nhưng tập tin sản phẩm SWF luôn nhỏ gọn, chỉ chứa đựng những thứ thực sự được dùng. Trong trường hợp đang xét, tuy nhân vật Oval không có trong sân khấu nhưng ta cần nó vào lúc chạy, do vậy phải ―nói trước‖ để Flash hiểu rõ ý định của ta.
Bạn gõ phím F9 để mở bảng Actions – Frame, nơi dùng để viết chương trình cho khung đầu tiên của thời tuyến chính. Ta dùng thuật ngữ thời tuyến chính
(main timeline) để phân biệt với thời tuyến bên trong mỗi thể hiện. Bạn gõ đoạn mã như sau trong bảng Actions – Frame:
? 1 2 3 4 5 attachMovie("Oval", "oval1", 1); attachMovie("Oval", "oval2", 2); attachMovie("Oval", "oval3", 3); ;
Ta dùng ba câu lệnh như trên để tạo ra ba thể hiện của nhân vật Oval có tên là oval1, oval2 và oval3. Đối mục đầu tiên của hàm attachMovie() là tên nhân vật. Đối mục thứ hai là tên của thể hiện. Đối mục thứ ba cho biết thể hiện nằm ở ―độ sâu‖ nào trên sân khấu. Với cách viết như trên, thể hiện oval1 nằm sâu nhất trên sân khấu. Thể hiện oval2 nằm trên oval1 và thể hiện oval3 nằm trên oval2.
Ấn Ctrl+Enter để chạy chương trình, bạn thấy trên sân khấu chỉ có một hình ô- van. Đó chính là thể hiện oval3 nằm trên cùng, chồng khít lên hai thể hiện oval2 và oval1. Theo mặc định, hàm attachMovie() tạo ra thể hiện tại điểm gốc (0, 0) trên sân khấu. Muốn thấy rõ cả ba thể hiện, bạn cần xê dịch chúng đôi chút. Trở lại với chương trình đang viết, bạn gõ thêm đoạn mã như sau:
?
2 3 4 5 oval2._x += 160; oval2._y += 100; oval3._x += 220; oval3._y += 100; ;
Đoạn mã vừa thêm quy định vị trí cho các thể hiện bằng cách thay đổi trị của biến _x và _y bên trong từng thể hiện. Câu lệnh oval1._x += 100; làm cho hoành độ _x của thể hiện oval1 tăng thêm 100 (xê dịch qua phải 100 điểm ảnh). Câu lệnh oval1._y += 100; làm cho tung độ _y của thể hiện oval1 tăng thêm 100 (xê dịch xuống dưới 100 điểm ảnh). Các câu lệnh tiếp theo làm cho hoành độ _x của thể hiện oval2 và oval3 tăng nhiều hơn oval1. Thử chạy chương trình, bạn có kết quả như hình 2.
Với các thể hiện được tạo ra vào lúc chạy, bạn có thể thay đổi các thuộc tính của chúng một cách bình thường. Chẳng hạn, bạn có thể thay đổi biến _alpha trong từng thể hiện:
?
2 3 4 5 oval2._alpha = 50; oval3._alpha = 50; ;
Đoạn mã viết thêm như trên làm cho các thể hiện trở nên nửa trong suốt (hình 3).