Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 22.04.2011, 18:56
Universe вне форума Посмотреть профиль Отправить личное сообщение для Universe Найти все сообщения от Universe
  № 1  
Ответить с цитированием
Universe
 
Аватар для Universe

Регистрация: Feb 2010
Сообщений: 811
Отправить сообщение для Universe с помощью ICQ Отправить сообщение для Universe с помощью Skype™
Arrow Как убрать SecurityError: Error #2122:

Пытаюсь загрузить картинку которая находится на другом сайте (на 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()
мне посоветовали закинуть на свой сервер в папку www/имя сайта/ файл crossdomain.xml, со следующим содержанием:
Код:
<?xml version="1.0"?>
    <cross-domain-policy>
    <allow-access-from domain="*" to-ports="80"/>
</cross-domain-policy>
Но это не помогло.
Затем я попробовал создать экземпляр класса LoaderContext и изменил стрку загрузки следующим образом
Код AS3:
imgLoader.load(new URLRequest(userPath), context);
Но это также не помогло. Сам путь приходит в флеш, но затем выпадает ошибка!
Вот весь код класса который я использую на данный момент:
Код AS3:
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!");
		}
 
	}
}

Старый 22.04.2011, 18:59
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 2  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Передавайте сам лоадер в changeImage().

Старый 23.04.2011, 09:07
cleptoman вне форума Посмотреть профиль Отправить личное сообщение для cleptoman Найти все сообщения от cleptoman
  № 3  
Ответить с цитированием
cleptoman
 
Аватар для cleptoman

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
юзайте байты загруженного изображения
http://www.flasher.ru/forum/blog.php?b=323
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью

Старый 23.04.2011, 12:26
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 4  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Цитата:
Затем я попробовал создать экземпляр класса LoaderContext и изменил стрку загрузки следующим образом
Просто сделали new LoaderContext () или с флагом new LoaderContext (true) ?
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 23.04.2011, 12:41
fish_r вне форума Посмотреть профиль Отправить личное сообщение для fish_r Посетить домашнюю страницу fish_r Найти все сообщения от fish_r
  № 5  
Ответить с цитированием
fish_r
 
Аватар для fish_r

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
Это не на вашем сайте должен быть crossdomain, а там откуда вы получаете картинку (с facebook-а?).
Там есть API, только я незнаю его возможностей. Если не получится загружать "по правилам" исправьте:

Код AS3:
...
 
context = new LoaderContext(true);
 
...
imgLoader.load(new URLRequest(userPath), context);
и дальше сделайте либо как советует @cleptoman, либо как @udaaff

Старый 24.04.2011, 14:12
DZHETIGAPA вне форума Посмотреть профиль Отправить личное сообщение для DZHETIGAPA Найти все сообщения от DZHETIGAPA
  № 6  
Ответить с цитированием
DZHETIGAPA
[+3 18.04.11]

Регистрация: Dec 2010
Сообщений: 342
Мне помогло вот это

http://www.flasher.ru/forum/showthread.php?p=800092

Старый 07.01.2013, 19:51
breket вне форума Посмотреть профиль Отправить личное сообщение для breket Найти все сообщения от breket
  № 7  
Ответить с цитированием
breket

Регистрация: Jan 2013
Сообщений: 3
Есть решение намного проще
В любом месте программы (желательно в начале работы) пишем
Код AS3:
Security.loadPolicyFile("https://fbcdn-profile-a.akamaihd.net/crossdomain.xml");
далее в загрузчике делаем вот такие изменения
Код AS3:
loader.load(new URLRequest("http://some.site/some_image.jpg"),new LoaderContext(true,ApplicationDomain.currentDomain,SecurityDomain.currentDomain));
и всё замечательно работает! Как вариант этот удалённый crossdomain.xml можно скопировать на свой хостинг в корень и загружать его.
Проверено на практике для приложения Вконтакте

Создать новую тему Ответ Часовой пояс GMT +4, время: 00:17.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 00:17.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.