2008-10-29 34 views
8

Đây là tình huống - Tôi có một trình bao tải một tệp .swf bên ngoài. Bây giờ, đó là .swf là 800x600, nhưng nó là một phần hoạt hình, và có những yếu tố kéo dài ra khỏi sân khấu. Khi tôi nạp .swf vào trong shell và gọi thuộc tính width của nó, nó trả về 1200 - vì nó bao gồm các phần tử thoát ra khỏi vùng hiển thị.kích thước của giai đoạn swf nạp

Đây không phải là những gì tôi muốn - lý tưởng, sẽ có hai thuộc tính, một để trả về 'chiều rộng được tính' và một để trả về 'chiều rộng mặc định'. Các thuộc tính này có tồn tại không và nếu không, giải pháp tốt nhất là gì?

Trả lời

15

Chiều rộng và chiều cao của SWF đã tải như được xác định bởi FLA mà nó đã tạo có thể được tìm thấy trong đối tượng Loader mà bạn đã tải SWF vào.

swfLoader.contentLoaderInfo.width 
swfLoader.contentLoaderInfo.height 

Điều này sẽ luôn hiển thị cho bạn thứ nguyên như được xác định trong thuộc tính FLA. Nó làm cho không có sự khác biệt nếu bất kỳ hình ảnh, MovieClips, hoặc những gì có bạn mở rộng ra khỏi sân khấu.

Các thuộc tính stage.stageWidthstage.stageHeight sẽ luôn trả về độ rộng của vùng hiển thị, giai đoạn luôn là SWF phổ biến nhất. Nói cách khác, nó sẽ luôn đại diện cho các kích thước của giai đoạn của vỏ. Chỉ có một giai đoạn trong một ứng dụng Flash.

+0

Cảm ơn lời khuyên về thuộc tính 'giai đoạn' - đó là loại phản trực giác, phải không? –

+0

đẹp nhất! Điều này hoàn toàn hoạt động! Nó không bao giờ xảy ra với tôi để nhìn vào đối tượng thông tin loader - tôi thường chỉ sử dụng một biến throwaway để giữ nó trong khi tôi đang chờ đợi cho nội dung 'thực' để tải, nhưng tôi có thể thử và giữ nó xung quanh trong tương lai .. . cảm ơn! –

+0

shit, thậm chí tốt hơn, bạn chỉ có thể nói myMovieClip.loaderInfo.width, thay vì phải giữ swfLoader gốc xung quanh trong một biến khác - bất cứ thứ gì được nạp thông qua Loader giữ một tham chiếu trở lại đối tượng Loader của chính nó! –

0

Đánh dấu rất có thể là đối tượng content loader info sẽ chứa chiều rộng và chiều cao chính xác. Tôi đã không bao giờ kiểm tra bản thân mình vì vậy tôi không thể đảm bảo nó. Các tài liệu nói 'danh nghĩa' và tương phản nó với 'thực tế' để nó có vẻ hợp lý.

Có một vài tùy chọn khác. Bạn có thể che giấu swf bên ngoài. Tạo một mặt nạ có kích thước của sân khấu và đặt tất cả nội dung bên dưới nó. Một ý tưởng khác là tạo một movieclip dựa trên một hình chữ nhật đặt nó là alpha 0 đặt nó ở x: 0, y: 0 và phù hợp với chiều rộng và chiều cao của nó đến giai đoạn. Cung cấp cho nó một tên dụ và sau đó khi nó được tải sử dụng giá trị đó cho kích thước.

+0

Tôi phải sửa chữa nhanh và không có thời gian để kiểm tra câu trả lời của Matt, và bản sửa lỗi nhanh của tôi là đề xuất của bạn - tôi đã tạo hai MovieClips bên trong .swf được tải, một thứ phù hợp với kích thước của sân khấu và bao quanh và vượt quá ranh giới được tạo ra bởi các yếu tố phá vỡ sân khấu. –

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