PDA

Просмотр полной версии : Загрузка изображений со сторонних сайтов.


GLeBaTi
16.10.2010, 15:09
Сделал сайт, на котором применил flex (http://chfmm.ru/2) Если выбрать сидения, то отобразится список сидений. Если нажать на определенное сидение(сидение оринон 1), то отобразится информация по нету+увеличиное изображений.

Там где список сидений, превьюшки отображаются нормально.
Там где информация о конкретном седении, изображение НЕ показывается. Пишет:
"Нарушение изолированной среды: Loader.content<путь к swf> не может осуществить доступ к http://s005.***********/.../asdfsdf.jpg. Не предоставлен доступ к файлам политики."

код изображения(которое не отображается):
<mx:Image source="http://s005.***********/.../asdfsdf.jpg" id="imgItem" width="289" left="10" top="10" bottom="40"/>

Почему в превью изображение отображается, а в информации(это-же изображение, только растянутое), не отображается?

Eric Gurt
16.10.2010, 18:28
по сути не должно было работать ни в одном случае, ведь в файле http://s005.***********/crossdomain.xml не разрешено давать доступ флэшкам с других сайтов. да и самого crossdomain.xml там нет. Почему бы не хранить все изображения у себя на сайте?

GLeBaTi
17.10.2010, 11:46
http://***********/crossdomain.xml там ведь есть

mikhailk
17.10.2010, 13:28
надо грузить изображения с контекстом.
http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/system/LoaderContext.html


Security.allowDomain("*");
var context:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain);
context.securityDomain = SecurityDomain.currentDomain;
context.checkPolicyFile = true;
context.applicationDomain = ApplicationDomain.currentDomain;

var request:URLRequest = new URLRequest(fileName);
loader = new Loader();
loader.load(request, context);

f.g.programmer
17.10.2010, 13:52
Если в crossdomain.xml всё есть, для картинки (JPEG, GIF или PNG) достаточно указать только checkPolicyFile

var context:LoaderContext = new LoaderContext(true);

таким образом мы разрешаем доступ к контенту загруженной картинки,
По-видимому операция растягивания невозможна, без доступа к контенту, поэтому в предпросмотре отображается, а в информации нет.

mikhailk
17.10.2010, 15:14
ну да, в данном частном случае достаточно добавить контекст прямо в метод load:


loader.load(request, new LoaderContext(true));

f.g.programmer
17.10.2010, 15:46
У GLeBaTi это будет свойство тега mx:Image loaderContext="{new LoaderContext(true)}"

GLeBaTi
17.10.2010, 17:12
Security.allowDomain("*");
var context:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain);
context.securityDomain = SecurityDomain.currentDomain;
context.checkPolicyFile = true;
context.applicationDomain = ApplicationDomain.currentDomain;

var request:URLRequest = new URLRequest(urlImgArray[0]);
var loader:Loader = new Loader();
loader.load(request, context);

imgItem.source = urlImgArray[0];

<mx:Image trustContent="true" loaderContext="{new LoaderContext(true)}" smoothBitmapContent="true" click="imgItem_clickHandler(event)" buttonMode="true" useHandCursor="true" mouseChildren="false" id="imgItem" width="289" left="10" top="10" bottom="40"/>

Не помогло :(

Добавлено через 3 часа 7 минут
http://s46.***********/i111/1010/60/1e43ff9e2bc7.jpg
вот что происходит перед отображением ошибки. Он пытается загрузить http://s001.***********/crossdomain.xml. Он он не существует. Почему так происходит? Я же явно сказал:
Security.loadPolicyFile("http://www.***********/crossdomain.xml");

dimarik
17.10.2010, 22:27
Немного о вашей проблеме.
http://www.flasher.ru/forum/blog.php?b=208

GLeBaTi
17.10.2010, 23:12
и как мне запихнуть это в <mx:Image> ? Я не так давно начал изучение as, поэтому не знаю.

dimarik
18.10.2010, 10:45
Новичку сложно.

Отнаследовать Image, сделать mx_internal override function contentLoaderInfo_completeEventHandlerСодержимое event.target.bytes загрузить еще раз через event.target.loader.loadBytes(event.target.bytes) По загрузке вызвать super.contentLoaderInfo_completeEventHandler(event);

Добавлено через 20 минут
Попробуйте smoothBitmapContent установить в false. Иначе, сдается мне, что после загрузки изображения будет обращение к (loader.content as Bitmap).smoothing = true А это не разрешается установленной политикой безопасности.