Chương 3 ActionScript
3.3. Sự kiện và xử lý sự kiện
3.3.2. Đăng ký một phương thức đăng ký sự kiệ n Event listener
Event listener
Gồm 5 bước:
1. Quyết định tên gọi loại sự kiện.
Flash cung cấp nhiều loại sự kiện đã được định nghĩa sẵn. Tên của mỗi loại sự kiện
được truy xuất thông qua các hằng số của lớp sự kiện hoặc một trong các đại diện
của nó. Ví dụ như hằng số của loại sự kiện kết thức hàm Event.COMPLETE có giá trị là “complete”
Ví dụ:
complete event
Event object type: flash.events.Event
Event.type property = flash.events.Event.COMPLETE
Event.type property cho ta biết hằng số cho sự kiện “complete” là
flash.events.Event.COMPLETE
Mặt khác, để phản hồi loại sự kiện được gọi, đầu tiên chúng ta phải tìm được hằng số đại diện cho nó.
2. Quyết định kiểu dữ liệu của đối tượng sự kiện tượng trưng cho sự kiện đó. Ví dụ:
complete event
Event object type: flash.events.Event
Event.type property = flash.events.Event.COMPLETE
theURLLoader.addEventListener(Event.COMPLETE, someListener);
Event object type cho ta biết kiểu dữ liệu của đối tượng Event.COMPLETE là
flash.events.Event
3. Tạo một phương thức đăng ký sự kiện để phản hồi cho sự kiện. Phương thức
đăng ký sự kiện phải được định nghĩa là tham số có cùng kiểu dữ liệu với đối
tượng sự kiện ở bước 2. Ví dụ:
private function completeListener (e: flash.events.Event):void { trace("Load complete");
}
Tất cả phương thức đăng ký sự kiện đều có kiểu trả về là void.
Phương thức đăng ký sự kiện là phương thức thường được khai báo private nên
không thể truy xuất từ lớp khác.
4. Sử dụng phương thức addEventListener() của lớp EventDispatcher để đăng
ký phương thức đăng ký sự kiện với event target.
complete event
Event object type: flash.events.Event
Event.type property = flash.events.Event.COMPLETE
someListener() sẽ đăng ký phương thức đăng ký sự kiện với event target
theURLLoader cho sự kiện Event.COMPLETE
Tham số đầu tiên của addEventListener() là tên của loại sự kiện, tham số thứ hai là một tham chiếu cho phương thức đăng ký sự kiện.
Đây là dạng đầy đủ của phương thức addEventListener():
addEventListener(type, listener, useCapture, priority, useWeakReference) Hai tham số đầu tiên là bắt buộc.
5. Đợi sự kiện xảy ra
Chúng ta đã khởi tạo một phương thức đăng ký sự kiện cho Event.COMPLETE và
đăng ký nó với event target. Gọi thực thi someListener():
theURLLoader.load (new URLRequest(“someFile.txt”));
Khi đã load xong someFile.txt, ActionScript gửi đi sự kiện Event.COMPLETE đã
đăng ký, và someListener() được thực thi.
Sau là một ví dụ đầy đủ về 5 bước: package {
import flash.display.*; import flash.net.*; import flash.events.*;
public class FileLoader extends Sprite { public function FileLoader ( ) {
// Tạo đối tượng sự kiện đích
var urlLoader:URLLoader = new URLLoader( ); // Đăng ký phương thức đăng ký sự kiện
urlLoader.addEventListener(Event.COMPLETE, completeListener); // Gọi hàm để kích hoạt sự kiện xảy ra
urlLoader.load(new URLRequest("someFile.txt")); }
private function completeListener (e:Event):void { trace("Load complete");
} } }