Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Ошибка 2176 и как её обойти (http://www.flasher.ru/forum/showthread.php?t=174842)

Ivanovi4 03.02.2012 22:43

Ошибка 2176 и как её обойти
 
В общих словах: необходимо загрузить картинку с url-адреса и затем сохранить на компьютер пользователя. Есть кнопка, у которой обрабатывается событие клика. Вот код:

Код AS3:

                click="takeSnapshot(event);"
                        .......
                        private var loader:Loader = new Loader();
                        ............
                        private function takeSnapshot(event:MouseEvent):void
                        {
                                var urlString:String = "http://xxx.ru/1.jpeg";
                                var urlRequest:URLRequest = new URLRequest(urlString);
                                loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaderHandler);
                                loader.load(urlRequest);
                        }
 
                        private function onLoaderComplete(event:Event):void
                        {
                                loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onLoaderComplete);
                                var fileName:String = "something.jpeg";                               
                                var img:Bitmap = Bitmap(loader.content);
                                var jpg:mx.graphics.codec.JPEGEncoder = new mx.graphics.codec.JPEGEncoder(50);
                                var ba:ByteArray = jpg.encode(img.bitmapData);
                                var fileRef:FileReference = new FileReference();
                                fileRef.save(ba, fileName);
                        }
........

Естественно код не работает из-за политики безопасности (ошибка 2176). Вот хотелось бы узнать как обойти эту проблему. Что посоветуете, друзья?

silin 03.02.2012 23:59

в плеере никак, fileRef.save работает только в обработчике клика или клавиатуры, onLoaderComplete не годится
т.е. на сохранение нужна еще одна кнопка, в обработчике которой fileRef.save нормально пройдет

udaaff 04.02.2012 00:43

Ivanovi4, мы, по-вашему, все номера ошибок наизусть должны знать?

Ivanovi4 05.02.2012 01:25

udaaff, конечно не должны. Вот описание - SecurityError: Error #2176: Определённые действия, например, те, после которых появляется всплывающее окно, могут быть только результатом взаимодействия с пользователем, к таким действиям относятся щелчок мышью или нажатие кнопки.

silin, но может сталкивался кто нибудь и реализовал такую операцию как то по другому. просто уже мозг сломал придумывать, как сделать иначе..

NikolyA 05.02.2012 01:42

нужна кнопка загрузить картинку по указаному урлу, и кнопку сохранить затем

Ivanovi4 05.02.2012 01:54

NikolyA, неудобно, но видимо так и придется сделать

GBee 05.02.2012 02:25

А нельзя картинку втихую загрузить? А сохранять по кнопке :о)

Ivanovi4 05.02.2012 02:54

вобще, тема такая, что я должен делать скриншот в видеоплеере.. в конкретный момент по нажатию кнопки загружаю картинку с серва, потом ее сохраняю у пользователя. у меня есть еще одна реализация скриншота, но эта задумка нравится больше. вот и хотел узнать, можно ли как нибудь раскрутить такую ситуацию.

GBee 05.02.2012 02:57

А скриншот средствами флэша решит вашу проблему на кол-во кликов.

Ivanovi4 05.02.2012 03:29

вы имеете ввиду сделать снимок без обращения к серверу с помощью BitmapData? или что то другое?


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

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