Khi tôi thêm một người nghe EVENT.ACTIVATE
vào dự án của mình, sau đó nhấn Alt-tab và quay lại dự án của tôi, nó sẽ kích hoạt hai lần.Tại sao kích hoạt EVENT.ACTIVE của tôi hai lần?
chỉnh sửa: shaunhusain và dường như tôi đã tìm ra nguyên nhân của sự cố, mặc dù không có giải pháp. Khi chạy phiên bản trình phát độc lập 11+, sự kiện sẽ kích hoạt 2x. Khi chạy phiên bản trình phát độc lập < 11 hoặc bất kỳ phiên bản nào trong trình duyệt, nó sẽ kích hoạt 1x. Vì vậy, có vẻ như có lỗi trong các phiên bản gần đây của trình phát flash player. Tôi sẽ đánh dấu các phiên bản chính xác và báo cáo nó để adobe và xem những gì sẽ xảy ra. Nhờ bất cứ ai đọc điều này và cố gắng giúp đỡ !!
Tôi muốn nó kích hoạt mỗi khi tôi thay đổi tiêu điểm, tôi không muốn nó bắn hai lần mỗi khi tôi thay đổi tiêu điểm.
Tại sao điều này? Tôi có làm điều gì sai? Cách tốt nhất để ngăn chặn hành vi này là gì?
Dường như nó sẽ là một câu hỏi phổ biến, nhưng Google không bật lên.
Code:
package
{
import flash.display.Sprite;
import flash.events.Event;
public class Main extends Sprite
{
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
stage.addEventListener(Event.ACTIVATE, test);
}
private function test(e:Event):void
{
trace(e.target);
}
}
}
kết quả thực tế:
[object Stage]
[object Stage]
kết quả mong muốn:
[object Stage]
Nó dường như không tạo sự khác biệt cho dù tôi thêm người nghe với giai đoạn hoặc bất cứ điều gì khác, hành vi là như nhau.
Điều tương tự cũng xảy ra với EVENT.DEACTIVATE. Những người khác như chuột lên làm việc tốt.
Mục tiêu của tôi là tạm dừng trò chơi trên EVENT.DEACTIVATE
và bỏ tạm dừng nó trên EVENT.ACTIVATE
. Vấn đề là khi sự kiện cháy hai lần, nó gọi hàm hủy bỏ hai lần có hậu quả không mong muốn.
Vui lòng thêm thông tin khác về ngữ cảnh bạn đang xây dựng/chạy ứng dụng này. Tôi vừa tạo một dự án AS3 trong FlashBuilder, yêu cầu nó chạy dưới dạng ứng dụng AIR sử dụng SDK 4.6 và không thể tái tạo, cũng đã thử một trang web ứng dụng với 4.5 SDK cũng không thể tái tạo, trong cả hai trường hợp, tôi nhận được kết quả mong đợi. – shaunhusain
http://www.shaunhusain.com/CheckActiveEventWeb/ http://www.shaunhusain.com/CheckActiveEventWeb/srcview – shaunhusain
Điều đó thật kỳ lạ! Cảm ơn bạn đã thử nó. Tôi đang sử dụng FlashDevelop 4.0.0 Beta R1978 với Flex 4.6.0. Tôi không có quyền truy cập vào FlashBuilder nhưng sẽ hỏi trên diễn đàn flashdevelop. Trong khi chờ đợi, nếu ai đó có flashdevelop nó sẽ là tuyệt vời nếu bạn có thể cố gắng để repro kết quả. – WgFunstorm