2011-02-23 31 views
6

Tôi bắt đầu chuyển đổi ứng dụng flex này để chạy trên Android bằng cách sử dụng thẻ sd anh hùng flex mới. Tôi đã thay thế tất cả các thành phần không tương thích với thiết bị di động và đã chạy nó một vài lần thành công.BitmapData ngẫu nhiên không hợp lệ

Khi tôi sử dụng cùng một thư viện chạy ứng dụng web gốc, nó hoạt động hoàn hảo.

Tuy nhiên, vấn đề lớn là các lỗi Bitmapdata không hợp lệ ngẫu nhiên trong khi khởi động ứng dụng di động. Đây là toàn bộ đầu ra.

ArgumentError: Error #2015: Invalid BitmapData. 
at flash.display::BitmapData/ctor() 
at flash.display::BitmapData() 
at spark.primitives::BitmapImage/http://www.adobe.com/2006/flex/mx/internal::applySource()[E:\dev\hero_private_beta\frameworks\projects\spark\src\spark\primitives\BitmapImage.as:1337] 
at spark.primitives::BitmapImage/http://www.adobe.com/2006/flex/mx/internal::validateSource()[E:\dev\hero_private_beta\frameworks\projects\spark\src\spark\primitives\BitmapImage.as:1652] 
at spark.primitives::BitmapImage/commitProperties()[E:\dev\hero_private_beta\frameworks\projects\spark\src\spark\primitives\BitmapImage.as:902] 
at spark.primitives.supportClasses::GraphicElement/validateProperties()[E:\dev\hero_private_beta\frameworks\projects\spark\src\spark\primitives\supportClasses\GraphicElement.as:3487] 
at spark.components::Group/commitProperties()[E:\dev\hero_private_beta\frameworks\projects\spark\src\spark\components\Group.as:931] 
at mx.core::UIComponent/validateProperties()[E:\dev\hero_private_beta\frameworks\projects\framework\src\mx\core\UIComponent.as:8095] 
at mx.managers::LayoutManager/validateProperties()[E:\dev\hero_private_beta\frameworks\projects\framework\src\mx\managers\LayoutManager.as:597] 
at mx.managers::LayoutManager/doPhasedInstantiation()[E:\dev\hero_private_beta\frameworks\projects\framework\src\mx\managers\LayoutManager.as:760] 
at mx.managers::LayoutManager/doPhasedInstantiationCallback()[E:\dev\hero_private_beta\frameworks\projects\framework\src\mx\managers\LayoutManager.as:1157] 

tôi sửa lỗi nhiều lần và tôi thấy rằng khi nó đạt đến phương pháp này

mx_internal function applySource():void 
{ 

trong BitmapImage.as, tại tuyên bố này

if (!bitmapData && tmpSprite) 

các BitmapData == null. Tuy nhiên, khi tôi chạy ứng dụng web ban đầu, bitmapData không phải là rỗng. Giá trị BitmapData nên được xác định trong dòng mã này

<s:BitmapImage id="smallTriangle" smooth="true" source="@Embed('/com/xploreplus/components/containers/panel/assets/images/smallTriangle.png')" /> 

Bây giờ có vẻ như với tôi rằng, mưu chước chạy ứng dụng di động, nó là không thể tìm thấy hình ảnh, như khi tôi chạy webapplication, sử dụng cùng một thư viện nơi dòng mã trên là, nó có thể tìm thấy hình ảnh.

Vấn đề này đã ám ảnh tôi trong nhiều ngày và tôi thực sự bắt đầu nghĩ đây là một lỗi, đặc biệt là vì đôi khi DOES chạy. Hay có cái gì đó tôi đang thiếu ở đây.

+0

Đã có một số bản sửa lỗi do bản phát hành Bản xem trước dành cho anh hùng từ MAX có thể đã khắc phục vấn đề này. Bạn đã thử xây dựng Hero mới nhất chưa? Bạn có thể tải xuống bản dựng mới nhất bằng cách đăng ký chương trình phát hành trước: http://iamdeepa.com/blog/?p=85 –

+0

Hi steven. Tôi hiện đang sử dụng bản xem trước MAX Preview (4.5.0.17689) có thể tìm thấy tại trang tải xuống của adobe cho SDK anh hùng vì các bản dựng sau không hỗ trợ các tính năng dành cho thiết bị di động. Tôi đã đăng ký chương trình phát hành trước một vài ngày trước. Sẽ tham gia vào chương trình này có nghĩa là tôi sẽ nhận được các bản dựng mới nhất bao gồm các tính năng di động? Ngoài ra, tôi đã tạm thời 'sửa' lỗi bitmapdata không hợp lệ bằng cách loại bỏ các kính lúp của tôi ở khắp mọi nơi, có vẻ như lỗi đó đã được đưa ra bởi một vấn đề khác. Tôi đã không có thời gian để đào sâu hơn vào đó. Vì vậy, chương trình chạy ngay bây giờ, nhưng vẫn không hiển thị bất kỳ img – vegasaurus

+1

Không có khả năng là vấn đề của bạn, nhưng tôi đã nhìn thấy lỗi BitmapData không hợp lệ không thường xuyên khi: 1) Một bitmap quá lớn. 2) Khi ứng dụng của tôi hết bộ nhớ (cấp phát một BitmapData có xu hướng đẩy nó qua cạnh) 3) Và khi cố gắng tạo một dữ liệu bitmap mới với kích thước không hợp lệ. Tôi không sử dụng Flex nhiều nhưng bạn có thể vui lòng bao gồm mã nơi bạn gán biến bitmapData từ BitmapImage với id "smallTriangle?" – DoomGoober

Trả lời

2

Tôi gần như chắc chắn đây là vấn đề về bộ nhớ. Thực tế là lỗi trong hàm tạo BitmapData cho biết ứng dụng đang cố gắng tạo BitmapData có kích thước không hợp lệ (không có khả năng vì nó hoạt động trong bản dựng khác của bạn và hình ảnh được tải về trong thời gian biên dịch) hoặc trường hợp có khả năng nhất là Flash đã hết bộ nhớ và không thể tạo BitmapData (thiết bị di động thường có bộ nhớ ít hơn nhiều so với PC).

+0

Đây có thể là một công việc cho một khối try/catch - bạn có thể có được một nắm giữ tốt hơn về những gì đang xảy ra nếu bạn có thể bắt lỗi trong thời gian chạy. –

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