2012-05-03 17 views
5

CÁC MỤC TIÊU:as3 AIR for android - Ứng dụng sandbox nội dung LỖI

Tôi cố gắng để cho phép nạp bên ngoài file swf giao tiếp với nhau được tải cục bộ từ thiết bị. Tôi cần có khả năng truy cập vào các vars và các chức năng và đối tượng. Tôi đã accheived trong khi điều này tải nội dung swf từ web ở đây: as3 externally loaded swf from network to control externally loaded swf from network

NHƯNG KHI TÔI người dùng tùy chọn để tải từ thiết bị hoặc TỪ TRỰC TUYẾN ... Các tập tin thiết bị swf không thể giao tiếp với nhau. Cụ thể, swf đã tải không thể lấy thông tin từ cha mẹ của nó.

Dưới đây là đoạn code mà làm việc khi tải từ trên mạng:

var InsideConent:Object = this.parent.parent as Object; //// GIVES ACCESS TO "Content.swf" 
var ItWorksNow:Sprite = MovieClip(InsideConent.TWO.content).ChildInTWO; /// 

Thiết bị này không thích mã này:

Security.allowDomain("*"); 

Nhưng khi chạy trên mạng nó hoạt động tốt. Dưới đây là lỗi tôi nhận được khi tôi chạy nó cục bộ nạp từ gói APP.

THE ERROR:

SecurityError: Error # 3207: Nội dung ứng dụng sandbox không thể truy cập tính năng này. tại flash.system :: Bảo mật $/allowDomain() tại Products_fla :: MainTimeline/frame1() Không thể hiển thị mã nguồn tại vị trí này.

CÂU HỎI: Tôi có thể làm gì để cho phép miền bảo mật hoạt động cục bộ trên thiết bị AIR FOR ANDROID vì vậy tôi không phải thay đổi mã của mình? - thanks

+0

Điều này phải là một trong những khó khăn.Không ai muốn chạm vào nó có lẽ –

+0

Tôi đang đối mặt với một vấn đề tương tự: không thể tìm cách để lấy mã đơn giản bằng cách sử dụng 'Loader' để làm việc khi nó được biên dịch trong IDEAS Bảng điều khiển cài đặt bảo mật FlashPlayer toàn cầu chuyển hướng tôi đến cài đặt plugin flash trên thiết bị di động cho phép chỉ đặt bộ nhớ và p2p – www0z0k

+0

bạn đã cố gắng chuyển 'LoaderContext' sang http: //help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/Loader.html # load()? – www0z0k

Trả lời

5

Nếu bạn đặt một thử bắt xung quanh dòng đó nó sẽ không ném một lỗi nếu nó không thành công. Và theo cách này, khi mã của bạn sẽ hoạt động trên web và dưới dạng ứng dụng. (Ứng dụng không cần phải allowDomain b/c họ có thể tải tất cả mọi thứ theo mặc định và đó là lý do tại sao nó không thành công.)

try {Security.allowDomain("*");}catch (e) { };

+0

Tuyệt vời! :) Ý tưởng tuyệt vời và hoạt động quá! –

+0

Không phải lo lắng, tôi đã suy nghĩ cùng một điều nhưng tôi không bao giờ có thể làm cho nó được giải quyết bởi vì tôi không thể sửa đổi các nguồn swf .... heh. Đây là giải pháp tôi đã áp dụng. – bnns

0

Theo như tôi biết bạn không thể thực thi mã từ swfs đã tải trong AIR, bạn vẫn có thể sử dụng nhiều swfs để phát nội dung nhưng mọi mã sẽ đưa ra lỗi đó.

+0

Thực ra bạn có thể. Swf đầu tiên của tôi là một AIR FOR ANDROID và tất cả những người khác là các tập tin swf thường xuyên và mỗi người có thể giao tiếp với nhau .. tức là có được kích thước và kiểm soát các đối tượng trong các bộ phim khác. Nó hoạt động trên DROID của tôi nhưng tôi có cảm giác nó sẽ không hoạt động trên quả táo. Tôi chưa thử nghiệm nó. Tôi biết bạn không thể tải swfs bên ngoài và có họ chạy mã với táo. Vì vậy, tôi đã nghe. –

+1

có, nhưng những tệp SWF đó được đi kèm với APP của bạn và Baris đang giới thiệu tải SWF ra khỏi hộp cát của bạn. –

1

Từ kinh nghiệm của tôi bạn có thể tải file SWF từ xa từ một tên miền mà được cấu hình đúng với xml crossdomain. một cái gì đó như: https://developers.arcgis.com/flex/guide/using-crossdomain-xml.htm

Bạn có thể tải swf bằng mã, nhưng nếu bạn cố gắng truy cập vào giai đoạn ví dụ như nó sẽ thất bại.

Ngoài ra, nếu trong dự án ban đầu của bạn (được lưu trữ trên máy chủ web, bạn đã sử dụng biến tĩnh hoặc singelton thông thường, nó sẽ không thành công.