![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Пытаюсь загрузить картинку которая находится на другом сайте (на facebook'e) в своё приложение и получаю ошибку
SecurityError: Error #2122: Нарушение изолированной среды: getChildAt: http://ffly.com.ua/rosco/wishlist/ma...time())%20?%3E не может осуществить доступ к http://profile.ak.fbcdn.net/hprofile...jpg?type=large. Необходим файл политики, но, когда были загружены эти мультимедийные данные, флаг checkPolicyFile не был установлен. at flash.display::DisplayObjectContainer/getChildAt() at com.main::UserPhoto/imageLoaded() <?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*" to-ports="80"/>
</cross-domain-policy>
Затем я попробовал создать экземпляр класса LoaderContext и изменил стрку загрузки следующим образом Но это также не помогло. Сам путь приходит в флеш, но затем выпадает ошибка! Вот весь код класса который я использую на данный момент: package com.main { import flash.display.*; import flash.events.*; import flash.utils.*; import flash.net.*; import flash.text.*; import flash.system.LoaderContext; public class UserPhoto extends MovieClip { private var userPath:String; private var imgLoader:Loader; private var context:LoaderContext; public function UserPhoto(userPath:String) { this.userPath = userPath; if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event=null):void { trace("UserPhoto Created"); result_txt.text = userPath; loadImage(); } private function loadImage():void { imgLoader = new Loader(); context = new LoaderContext(true); context.checkPolicyFile = true; imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded); imgLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, imageLoading); imgLoader.load(new URLRequest(userPath), context); } private function imageLoading(e:ProgressEvent):void { preloader.scaleX = e.bytesLoaded/e.bytesTotal; } private function imageLoaded(e:Event):void { //trace(imgLoader.getChildAt(0)); changeImage(imgLoader.getChildAt(0)); preloader.visible = false; } private function changeImage(img):void { //trace("IMG " + img.width); //img.smoothing = true; img.x = mask_mc.x; img.y = mask_mc.y; addChild(img); //img.mask = mask_mc; //setChildIndex(img, numChildren-1); //getChildAt(0).visible = false; result_txt.text = userPath + "LOADED"; trace("Some actions with the image!"); } } } |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Передавайте сам лоадер в changeImage().
|
|
|||||
|
юзайте байты загруженного изображения
http://www.flasher.ru/forum/blog.php?b=323
__________________
http://cleptoman.free-lance.ru achivements: дважды благословлен на воровство. осеяный благодатью |
|
|||||
|
Это не на вашем сайте должен быть crossdomain, а там откуда вы получаете картинку (с facebook-а?).
Там есть API, только я незнаю его возможностей. Если не получится загружать "по правилам" исправьте: и дальше сделайте либо как советует @cleptoman, либо как @udaaff |
|
|||||
|
[+3 18.04.11]
Регистрация: Dec 2010
Сообщений: 342
|
|
|
|||||
|
Регистрация: Jan 2013
Сообщений: 3
|
Есть решение намного проще
В любом месте программы (желательно в начале работы) пишем далее в загрузчике делаем вот такие изменения loader.load(new URLRequest("http://some.site/some_image.jpg"),new LoaderContext(true,ApplicationDomain.currentDomain,SecurityDomain.currentDomain)); Проверено на практике для приложения Вконтакте |
![]() |
![]() |
Часовой пояс GMT +4, время: 02:10. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|