Tôi đang tạo một trò chơi nhỏ trong as3.Làm thế nào để xóa tất cả người nghe sự kiện cùng một lúc trong AS3
Trò chơi có 10 cấp độ.
Khi tôi nhập 1 cấp, mọi thứ đều ổn. Nhưng khi tôi vào cấp độ thứ hai (frame), người nghe sự kiện từ frame đầu tiên vẫn đang làm việc và nhận được một cảnh báo nói rằng 'Không thể truy cập một đối tượng tham chiếu null objct'. Điều này là do tôi xóa mọi đối tượng ở cấp độ đầu tiên và thêm đối tượng từ giai đoạn 2.
Tôi đã thử sử dụng removeEventListeners, nhưng nó không hoạt động, khiến ENTER_FRAME Người nghe làm việc thêm một lần nữa sau khi tôi xóa sự kiện Người nghe.
Tôi đã thử sử dụng các khung khác nhau cho các cấp khác nhau, bit không hoạt động. Ngoài ra tôi đã thử sử dụng 1 frmae cho tất cả 10 khung hình, nhưng tôi nhận được nhiều cảnh báo và Flash Loader bị quá tải.
Làm cách nào tôi có thể chuyển qua các cấp (quay lại và chuyển tiếp)? Cảm ơn trước.
addEventListener(Event.ENTER_FRAME, subtracting2);
arrListeners.pop(); // poping it out of the array because it will be deleted after the count reaches 0
function subtracting2 (e:Event):void
{
count--;
var FAcoef:Number = count/30; //
FadeAway.alpha = FAcoef; // Some effect like FadeAway
setChildIndex(FadeAway, numChildren - 1); //
if(count == 0)
{
setChildIndex(FadeAway, 0);
removeEventListener(Event.ENTER_FRAME, subtracting2);
}
}
Bạn không thể. Nếu bạn không muốn làm phiền bạn với các sự kiện (** không đồng bộ **), hãy thử [Tín hiệu AS3] (https://github.com/robertpenner/as3-signals) (** đồng bộ **). – Florent
Có thể bạn không nên thêm người nghe sự kiện vào vòng lặp enterframe ... – Kodiak
Tôi phải thêm ENTER_FRAME để kiểm tra xem cấp độ có được thông qua hay không và để chắc chắn rằng luật trò chơi không bị hỏng. Nó không phải là ý tưởng của tôi whick là đúng (với loại bỏ EventListeners). Miễn là nó hoạt động tốt, tôi sẽ chấp nhận bất kỳ ý tưởng – Stefan4024