Khi chơi đùa với những quả banh (các thể hiện của nhân vật Ball), bạn đã biết đến các biến có sẵn bên trong từng quả banh, cho biết trạng thái của quả banh: _x, _y, _xscale, _yscale, _visible. Các biến như vậy gọi là các thuộc tính (property) của thể hiện. Không giống như biến do bạn tự tạo ra (như biến step cho quả banh màu đỏ), khi bạn thay đổi một thuộc tính của thể hiện nào, trạng thái của thể hiện đó tự động thay đổi. Chẳng hạn, khi gán trị false cho biến _visible của quả banh, quả banh lập tức biến mất.
Để tìm hiểu thêm các thuộc tính khác của thể hiện, bạn nên tạo nhân vật mới. Lần này ta vẽ hình vuông để ―thay đổi không khí‖. Trước hết, bạn bấm kép vào tên lớp Layer 2 trong bảng Timeline, gõ Balls, rồi gõ Enter. Làm như vậy để đổi tên lớp thành Balls, ngụ ý rằng lớp đang xét là lớp dành cho các quả banh.
Bạn hãy tạo lớp mới dành cho các hình vuông. Bạn bấm nút ―tạo lớp
mới‖ (góc dưới, bên trái bảng Timeline), bấm kép vào tên lớp mới Layer 3 và gõ Squares. Để tập trung chú ý vào các hình vuông sắp tạo ra, bạn cho các quả banh biến mất bằng cách bấm vào dấu chấm của hàng biểu thị lớp Balls trong bảng Timeline, ở cột có hình con mắt . Các quả banh chỉ được giấu đi để đỡ vướng víu cho bạn khi làm việc, chúng vẫn ―góp mặt‖ bình thường khi bạn chạy chương trình.
Bạn vẽ hình vuông bằng cách chọn công cụ Rectangle ở hộp công cụ, trỏ vào đâu đó trên sân khấu, giữ phím Shift và giữ phím trái của chuột, kéo chuột qua
phải, xuống dưới. Nhờ bạn giữ phím Shift, hình khung được vẽ ra là hình vuông. Bạn nên tô màu cho hình vuông khác với các quả banh, màu xanh lá chẳng hạn (hình 1).
Bạn bấm vào công cụ chọn , bấm vào hình vuông xanh lá để chọn và gõ phím F8 để chuyển hình được chọn thành nhân vật. Hộp thoại Convert to Symbol hiện ra. Bạn gõ Square để đặt tên cho nhân vật mới (hình 2). Ở phần
Registration trong hộp thoại, bạn thấy điểm mốc nằm ở tâm nhân vật theo mặc định. Không cần thay đổi điểm mốc, bạn gõ Enter. Hình vuông vừa vẽ tạo nên nhân vật Square. Hình vuông trên sân khấu trở thành thể hiện của nhân vật Square.
Hình vuông xanh lá đang ở tình trạng ―được chọn‖. Bạn gõ phím F9 để mở bảng Actions, viết hai hàm xử lý tình huống cho hình vuông được chọn như sau: ? 1 2 3 4 5 6 7 8 9 10 11 onClipEvent(load) { step = 10; } onClipEvent(enterFrame) { _rotation += step; }
Trong đó, hàm xử lý tình huống khởi động tạo ra biến step chứa trị số 10, hàm xử lý tình huống chuyển khung cộng biến step vào thuộc tính _rotation của hình vuông. Nhờ vậy, mỗi lần chuyển khung, góc quay của hình vuông lại tăng thêm 10. Bạn chú ý, biến step ta dùng ở đây không phải là biến step đã được dùng cho quả banh màu đỏ. Hai biến step tuy cùng tên nhưng có phạm vi (scope) khác nhau, không có ―dây mơ rễ má‖ gì hết.
Ấn Ctrl+Enter để chạy chương trình, bạn thấy hình vuông quay đều do góc quay của nó ―tà tà‖ tăng lên mỗi lần chuyển khung. ―Nếu cứ để hình vuông quay hoài hoài, lẽ nào góc quay sẽ tăng đến… vô cùng?‖. Bạn yên tâm, thực ra góc quay của hình vuông chỉ có thể nhận các trị số từ -180 đến 180 (tính bằng độ). Flash tự động điều chỉnh trị được gán cho biến _rotation để có trị
thích hợp trong khoảng đó.
Để kiểm tra, bạn có thể ghi câu lệnh theo dõi trace(―Góc quay: ‖ + _rotation); sau câu lệnh _rotation += step; trong hàm OnClipEvent(enterFrame). Bằng cách dùng hàm trace như vậy, khi chạy chương trình, bạn sẽ thấy dòng thông báo đại loại như thế này: Góc quay: 120. Đó là nhờ chuỗi ―Góc quay: ‖ được ghép với trị số của biến _rotation bằng dấu cộng.
Nếu không muốn có quá nhiều thông báo ở bảng Output khi chạy chương trình, bạn thêm dấu // trước câu lệnh gọi hàm trace:
//trace(―Góc quay: ‖ + _rotation);
Flash hiểu rằng những gì được ghi sau dấu // trên một dòng là phần chú thích, không cần xét đến khi biên dịch. Do vậy, đặt dấu // trước một câu lệnh giúp bạn tạm thời vô hiệu hóa câu lệnh đó. Khi muốn khôi phục hiệu lực của câu lệnh, bạn chỉ cần xóa dấu // trước câu lệnh.
Bạn hãy nhuộm màu tím cho hình vuông hiện có, gõ phím F11 để mở bảng Library và kéo hình vuông xanh lá từ thư viện vào sân khấu, tạo thêm một thể hiện nữa của nhân vật Square (hình 3). Trong bảng Actions, bạn viết hàm xử lý tình huống như sau cho hình vuông xanh lá:
? 1 2 3 4 5 6 7 8 onClipEvent(mouseMove) { trace("_xmouse: "+ _xmouse); trace("_ymouse: "+ _ymouse); trace("_alpha: " + _alpha);
9 10 11 _alpha -= 1; }
Bạn chạy chương trình để thử đoán nhận ý nghĩa của những thuộc tính mà bạn chưa biết. Bạn sẽ có ―đáp án‖ vào kỳ sau.