2012-02-21 20 views
5

Flash xử lý các yếu tố ngoài giai đoạn như thế nào? Rõ ràng Flash không thực sự hiển thị chúng (vì chúng không xuất hiện ở bất kỳ đâu trên màn hình), nhưng là quá trình hiển thị chúng vẫn tồn tại, làm chậm tốc độ trò chơi của tôi càng nhiều càng tốt nếu các thành phần đó ở trên màn?Là DisplayObjects off-stage trong Flash vẫn làm chậm trò chơi của tôi?

Hoặc Flash có bỏ qua thông minh những yếu tố không rơi vào khu vực có thể hiển thị không?

Tôi có nên quản lý thủ công việc xóa các đối tượng khỏi số DisplayList và thêm chúng trở lại làm lối ra và vào giai đoạn hoặc điều này có liên quan không?

+1

Bạn có thể viết một bài kiểm tra đơn giản. Mặc dù chúng không được hiển thị nhưng chúng vẫn nằm trong hệ thống phân cấp và có thể làm một số việc khó chịu như hoạt hình, thực thi các kịch bản và gửi đi hàng tấn sự kiện. –

+0

Tôi nghĩ rằng bản vẽ thực tế của các đối tượng ăn phần lớn hiệu suất - vì vậy khi chúng ở ngoài sân khấu không phải là vấn đề. nhưng như valentin đã nói, khi họ vẫn "thực hiện các kịch bản và/hoặc phái tấn các sự kiện", họ chắc chắn sẽ làm chậm toàn bộ trò chơi. nếu chúng không xuất hiện trên sân khấu, hãy tiêu diệt chúng - nếu chúng muốn, hãy thử và "tạm dừng" chúng cho đến khi chúng xuất hiện trở lại ... – pkyeck

+0

Tôi đồng ý rằng bạn nên viết một số bài kiểm tra, có được toàn bộ các đối tượng và làm chúng hoạt động màn hình, bằng cách sử dụng trình biên dịch Flash Builder bạn sẽ có thể xác định vị trí bất kỳ cổ chai. Tôi sẽ kiểm tra với chỉ nhìn thấy chúng tắt màn hình, và cũng có thể kiểm tra removeChild() và hiển thị sau khi tắt màn hình, không sử dụng alpha 0 mặc dù. – Neil

Trả lời

2

Có, chúng đang làm chậm trò chơi của bạn.

Trong một trong những thử nghiệm ban đầu của tôi, tôi đã phát triển trò chơi sidescroller với nhiều NPC nằm rải rác xung quanh bản đồ, không phải tất cả có thể nhìn thấy trong cùng một màn hình. Tôi vẫn phải tính toán nhưng không có trên màn hình. Hiệu suất đã tốt hơn đáng kể khi tôi xử lý việc xóa của họ khỏi danh sách hiển thị khi không liên quan (chỉ cần kiểm tra X của họ liên quan đến 'máy ảnh'). Một lần nữa, tôi không nói về mã bổ sung và các sự kiện có thể được gắn vào chúng, chỉ là những đứa trẻ đồ họa thuần túy của một movieclip.

Thực tiễn tốt nhất, theo kinh nghiệm của tôi, là vẽ các đối tượng trong ảnh bitmap. Tất nhiên nếu bạn quá sâu vào trò chơi của bạn, điều này có thể không liên quan, nhưng nếu bạn có thời gian để đầu tư, đây là một trong những cách tốt nhất để tận dụng tối đa AS3 liên quan đến trò chơi 2D. Tôi tìm thấy một số hướng dẫn tuyệt vời nhất về bitmap và AS3 trong 8bit35ket http://www.8bitrocket.com/books/the-essential-guide-to-flash-games/ Tôi có thể giải thích về chủ đề này nếu bạn muốn, nhưng tôi nghĩ rằng tôi sẽ tắt chủ đề ở đây.

+0

Nền tảng tốt - và lời khuyên tốt về bitmap; đây là điều tôi đã làm trong một thời gian dài. – Marty

0

Ngay cả khi một số đối tượng hiển thị nằm ngoài vùng hiển thị, chúng vẫn được thực thi. Nếu họ có bất kỳ hoạt hình nào chơi trong đó, điều đó có thể làm chậm hiệu suất.

Câu hỏi đặt ra, tại sao chúng ta cần giữ các vật dụng chưa sử dụng ngoài khu vực sân khấu? nếu bạn cần phải 'cache' movieClips để tải nhanh hơn, sau đó tải chúng trong một khung hình chính, nơi điều khiển sẽ không bao giờ đi. cho ví dụ. nạp các đối tượng hiển thị mà bạn muốn hiển thị trong frame 1, sau đó đặt một stop() trong bảng action của frame, làm cho nó trở thành một khung hình chính, và trong frame 2 tải các hình động không sử dụng. vì có một stop() trong frame 1, control không bao giờ nằm ​​trong frame 2, nhưng các đối tượng hiển thị được lưu trữ.

Hoặc, nếu bạn có mã trong các khung hiển thị không sử dụng, và do đó cần phải tải chúng cùng với các thành phần trò chơi chính, hãy thử đặt stop() trong khung của các đối tượng hiển thị không sử dụng để chúng không hoạt ảnh .

Các vấn đề liên quan