2008-09-30 46 views
5

Tôi chuẩn bị tung ra một trang web sớm và vì vậy tôi đã nhận được trong các giai đoạn cuối cùng. Thời gian để tối ưu hóa em bé! Trang web hoạt động khá tốt, với tốc độ khung hình trung bình là 32 khung hình/giây. Nhưng tại một số bộ phận hoạt hình nặng nó thích thả một vài khung hình xuống khoảng 22fps. Mà không phải là khủng khiếp. Nhưng tôi đang tinh chỉnh nó càng nhiều càng tốt để giữ cho nó chạy ở tốc độ cao nhất có thể.Hiển thị flash: mẹo và thủ thuật tối ưu hóa

Tôi có thể bỏ qua một số mẹo và thủ thuật để làm cho em bé này chạy mượt mà hơn.

Vì vậy, theo đây tôi mở chủ đề này để chia sẻ mọi thủ thuật ninja đã từng giúp bạn trong quá khứ. Một cặp vợ chồng của tôi mà tôi có thể nghĩ ngay bây giờ:

giải trình tự các hình ảnh động:

Hãy là ít hơn như hiệu ứng chuyển tiếp có thể xảy ra cùng một lúc, hãy cố gắng làm cho nó hoạt động nhiều như một máy biến áp, có một điều tại một thời điểm. Tiếp theo để đạt được tốc độ trong hoạt ảnh, có thể bạn sẽ đạt được nhiều luồng hơn.

Giữ sinh động vật càng nhỏ càng tốt:

Vì vậy, flash có để tính toán điểm ảnh ít cùng một lúc.

cacheAsBitmap = true:

Những movieclips lớn, hình dạng vector được di chuyển xung quanh, có lẽ nhanh hơn di chuyển khi chúng được lưu trữ như một bitmap. Có thể mất một số không gian trong bộ nhớ của bạn, nhưng bất cứ điều gì cho tốc độ khung hình cao hơn;)

Phá hủy tất cả mọi thứ bạn không sử dụng:

Đặt ra các movieclips không sử dụng null và sau đó loại bỏ nó như một đứa trẻ. Vì vậy, người thu gom rác của bạn sẽ chăm sóc nó.

Trả lời

2

Alpha minh bạch có thể chuyên sâu để render ...

Từ những gì tôi đã nghe, bộ lọc ánh sáng sẽ tàn phá nếu bạn đang tạo hiệu ứng động nó.

Sử dụng visible = false thay vì alpha = 0 nếu có thể.

1

Flash (8 - Actionscript 2 hoặc thấp hơn) sẽ hiển thị clip ngay cả khi chế độ hiển thị được đặt thành false - để ngừng hiển thị, bạn cần di chuyển màn hình khỏi màn hình 'hiển thị' (nghĩa là x = -2000, được cung cấp chiều rộng clip nhỏ hơn 2000).

+0

Thú vị ... gosh có vẻ như một bản hack, bất kỳ cách nào khác để buộc Flash Player không hiển thị nội dung nào đó? – onekidney

+0

vâng đây là điều khó chịu – Kasper

+0

Đây không phải là trải nghiệm của tôi, tôi biết việc đặt alpha thành 0 sẽ có clip giữ hiển thị, nhưng tôi luôn làm việc dựa trên giả thiết rằng hiển thị = false sẽ tắt hiển thị cho clip đó. – grapefrukt

2

Chỉ sử dụng cacheAsBitmap = true: nếu bạn không làm động tác chuyển đổi Sprite/MovieClip (ví dụ: tỷ lệ/xoay vòng v.v.), nếu không nó sẽ thực sự làm chậm hơn.

Nơi có thể sử dụng PNG thay vì hình dạng vectơ.

4

Một xem xét khác là động cơ tween bạn đang sử dụng. Nếu bạn đang sử dụng một trong đó đi kèm với Flash bạn sẽ có thể đạt được một số hiệu suất bằng cách chuyển sang một cái gì đó như TweenLite (có nhiều người khác tốt quá).

Hãy nhớ rằng bộ nhớ cacheAsBitmap có thể rất nguy hiểm. Nếu bạn đang mở rộng quy mô, xoay hoặc cập nhật chính clip (chẳng hạn như sửa đổi alpha của một thứ gì đó bên trong nó) flash sẽ phải tạo một ảnh chụp nhanh mới, điều này sẽ làm chậm mọi thứ.Miễn là bạn đang di chuyển các clip trên x và y chỉ là nó tốt để luôn luôn có trên (nếu bạn cần phải xoay, tắt nó đi và sau đó trở lại khi bạn đã làm xong). Cũng lưu ý rằng nếu bạn đang sử dụng bộ lọc cacheAsBitmap là luôn tự động bật trên -> có thể chậm.

3

Giữ mọi thứ đơn giản,

Flash hiển thị đồ họa làm vectơ (và rất tốt). Đối tượng càng phức tạp thì càng mất nhiều thời gian để render.

Cũng cố gắng theo dõi cây hiển thị đồ họa. Mỗi đứa trẻ của sân khấu phải được kết xuất riêng biệt, vì vậy nếu bạn có 1000 trẻ em, điều này có thể làm cho mọi thứ thực sự chậm.

Giải pháp là hiển thị một lần trong một đối tượng, như trình xử lý hiển thị. Bạn có thể mất 'sự phản đối' của mình nhưng bạn làm cho nó trở nên nhanh hơn. Hãy ghi nhớ điều này khi làm gạch hoặc nhiều "bổ sung" cho một sprite.

2

Bạn có thể muốn sử dụng thuộc tính scrollRect của movieclips/sprites vv ... Về cơ bản nó hoạt động như mặt nạ nhưng với phần thưởng mà bạn có thể cuộn clip đeo mặt nạ bằng một số bù đắp.

1

Bitmap caching chỉ cung cấp cho bạn lợi nhuận thực sự khi DisplayObject bạn đang lưu vào bộ nhớ cache có các phần bên trong phức tạp nhưng có xu hướng ngồi ở đó mà không thay đổi - chẳng hạn như trình đơn kéo xuống, trong đó có tất cả các loại phần tử skinnable, nhưng chỉ cần được trả lại khi nó được mở hoặc đóng. Hãy cẩn thận khi bật bộ nhớ đệm chỉ vì các đối tượng lớn.

2

Các đoạn văn bản lớn, nếu chúng không thay đổi, thường có thể được thay thế bằng bitmap (hoặc PNG trong suốt). Điều này làm cho nội dung trở nên đau đớn để duy trì, nhưng nó có thể có tác động đáng kể đến hiệu suất đáng kể. (Lưu ý: điều này chủ yếu áp dụng cho các phông chữ được nhúng, đặc biệt là các phông chữ cong như phông chữ Châu Á, vì phông chữ như vậy được hiển thị dưới dạng hình dạng vectơ. Phông chữ thiết bị được hệ điều hành tạo ra và chi phí thấp hơn nhiều.)

2

Tiểu sử, hồ sơ, hồ sơ.

Nếu tập lệnh chạy chậm, hãy bắt đầu theo dõi các báo cáo thời gian để tìm ra lớp nào, chức năng nào, vòng lặp nào, câu lệnh nào khiến bạn chậm. Nếu các hiệu ứng đồ họa làm chậm bạn xuống, hãy theo dõi các báo cáo FPS thời gian chi tiết và bắt đầu tinh chỉnh. Nó có tăng tốc khi bạn loại bỏ lớp này hay lớp đó không? Hoặc khi bạn thay đổi clip đó không minh bạch? Và cứ thế. Cô lập những gì chậm trước khi cố gắng sửa chữa nó.

Chỉ cần poking xung quanh và refactoring hiếm khi giúp bạn có bất kỳ cải tiến hiệu suất thực sự.