2013-03-06 1 views
0

Я получаю ошибку с загрузкой изображения в swf-файл. Вот мой код:Невозможно загрузить изображение в swf

private var loader:Loader = new Loader(); 
    public function Battle() 
    { 
     loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); 
     loader.load(new URLRequest("http://www.google.com.vn/images/srpr/logo4w.png")); 
    } 
    private function onComplete(event:Event):void 
    { 

     addChild(loader); 
    } 

e очень хорошо, логотип Google появился. Но мне нужно манипулировать пикселем, который загрузил изображение. Я добавляю изображение Растровое изображение:

private var loader:Loader = new Loader(); 
    private var image:Bitmap; 

    public function Battle() 
    { 
     loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); 
     loader.load(new URLRequest("http://www.google.com.vn/images/srpr/logo4w.png")); 
    } 
    private function onComplete(event:Event):void 
    { 

     image = Bitmap(loader.content); 
     this.addChild(image); 

    } 

Ничего не видно. Я не могу найти какое-либо решение в Интернете. Я пытаюсь обнаружить:

private function onComplete(event:Event):void 
    { 

     image = Bitmap(loader.content); 
     //after above line, rest of function never run 
     addChild(image); // <-- no run @@ 
     trace("this no run"); // <-- no run @@ 
    } 

Я использую Flash Builder 4 и не имею никакой ошибки или предупреждения. Может ли кто-нибудь показать мне решение, пожалуйста? Спасибо за чтение.

+0

Вы пытались добавить другие обработчики, такие как IOErrorEvent или SecurityErrorEvent? –

+0

Убедитесь, что имя класса и конструктор с тем же именем (битва). ваш код определенно не проблема. –

+0

Предположим, вы используете обычную (не отладочную) версию Flash-плеера. В отладочном проигрывателе вы получите сообщение об ошибке «SecurityError: Error # 2122» – Smolniy

ответ

0

Вы не можете получить доступ к данным пикселя изображения, если изображение находится в другом домене, чем приложения (и там нет файла crossdomain политики)

0

1 Вы должны crossdomain.xml на сайте Google :)

2 Вы должны использовать checkpolicy:

var context:LoaderContext = new LoaderContext(); 
context.checkPolicyFile = true; 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); 
loader.load(new URLRequest("http://www.google.com.vn/images/srpr/logo4w.png"), context); 

, но это работает только, если Google добавить crossdomain.

3 Вы можете использовать небольшой прокси-сервер в своем домене. Прокси-сервер Flash-вызова, чтобы получить файл с вашим URL-адресом, прокси загрузить его и вернуться к флэш-памяти ...