PDA

Просмотр полной версии : Передача картинки из AS в JS


babuia
23.07.2012, 19:09
Есть ли какой нибудь способ передать картинку из AS в JS?
Нужно перед загрузкой отобразить пользователю уменьшенную версию.
Без отправки картинки на сервер где она бы была уменьшена и получена JS-ом.

Wolsh
23.07.2012, 19:24
Флэш вроде умеет показывать картинки, даже уменьшенные. При чем тут JS?

babuia
23.07.2012, 19:37
Я знаю что флэш умеет показывать картинки. Дело в том что таких уменьшенных картинок будет много, нужно из в флэшэ уменьшить и отправить в JS, в JS было бы удобнее управлять картинками.
Мне интересно, можно ли вообще такое сделать?

Krusty
23.07.2012, 21:57
ну, возможно, идея была в том, что картинку нужно показать на произвольном месте страницы, без флеша. Хотя никто не мешает показать ее там флешем :-)

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

alatar
23.07.2012, 22:04
Можно передать картинку в base64.

Krusty
23.07.2012, 22:17
Можно передать картинку в base64.
только встроенные картинки не понимает 30% браузеров, в частности ИЕ 6-7, ИЕ8(понимает с существенными ограничениями), старый ФФ итд.

dimarik
23.07.2012, 22:36
Напомните, пожалуйста, что такое встроенные картинки. И как вы получили цифру 30%?

ничего сложнее текстовых данных по мосту отправить нельзя, насколько я в курсе.
Этот мост называется ExternalInterface и он умеет чуть больше гитек, чем текстовые данные. Но в его примитивности вы правы, потому что cо strong typed в JavaScript совсем жвах. Там (http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html#call()) и там (http://help.adobe.com/en_US/as3/dev/WS5b3ccc516d4fbf351e63e3d118a9b90204-7cb2.html) все написано.

... arguments — Аргументы, передаваемые функции в контейнере. <...> Они могут принадлежать любому типу данных ActionScript. При обращении к функции JavaScript типы данных ActionScript автоматически преобразуются в типы данных JavaScript<...>.

babuia
23.07.2012, 22:53
Можно передать картинку в base64.
Я сейчас этим и занимаюсь, но столкнулся с проблемой, когда создаю экземпляр класса Base64Encoder код перестает работать как только достигает его инициализации, хотя компиляцию проходит успешно, не знаете в чем может быть причина такого поведения?

Компилятор mxmlc.

Krusty
23.07.2012, 22:56
Напомните, пожалуйста, что такое встроенные картинки. И как вы получили цифру 30%?


Встроенными картинками называется тег img у которого src-не урл, а что-то вроде
data:image/png;base64,iVBORw0KGgoAAAAN..........
т.е. его base64(бинарик), прямо в css, например.
Есть замечательный ресурс, урл где-то в закладках валялся, который для каждой фичи показывает уровень ее поддержки в каждом браузере и в % соотношении, основываясь на текущей статистике по браузерам. Пару месяцев назад было 30%.


Этот мост называется ExternalInterface и он умеет чуть больше гитек, чем текстовые данные. Но в его примитивности вы правы, потому что cо strong typed в JavaScript совсем жвах. Там (http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html#call()) и там (http://help.adobe.com/en_US/as3/dev/WS5b3ccc516d4fbf351e63e3d118a9b90204-7cb2.html) все написано.
Да, именно так он и называется. А что касается всего остального-магия json учит, что все есть строка, а что не строка-то можно сделать строкой, благо в js вообще почти все-строка, типизации нет, итд :-)) условно говоря.

alatar
23.07.2012, 23:00
... не знаете в чем может быть причина такого поведения?
Поставьте дебаг-версию плеера, сразу узнаете.

dimarik
23.07.2012, 23:43
т.е. его base64(бинарик)

Позвольте немного не согласиться. Base64 — это 64 символа текста в чистом ASCII виде. Но по сути, все цифровое можно свести к бинарикам, аха.

Krusty
23.07.2012, 23:50
Позвольте немного не согласиться. Base64 — это 64 символа текста в чистом ASCII виде. Но по сути, все цифровое можно свести к бинарикам, аха.

base64(бинарик) тут следует читать как функцию, которая на входе получает бинарные данные, отдает текст(как вы верно заметили, 64 символа, которые в любой кодовой таблице имеют одинаковые коды, и не являются спец-символами, нуждающимися в экранировании итд).

babuia
24.07.2012, 01:18
Поставьте дебаг-версию плеера, сразу узнаете.
VerifyError: Error #1014: Не удалось найти класс mx.utils::Base64Encoder.
Кто нибудь сталкивался с этим?
Пакет mx.utils.* импортирован.

Krusty
24.07.2012, 01:21
VerifyError: Error #1014: Не удалось найти класс mx.utils::Base64Encoder.
Кто нибудь сталкивался с этим?
Пакет mx.utils.* импортирован.
воспользуйтесь вот этим
http://www.flasher.ru/forum/blog.php?b=203
Он еще и крайне быстрый, ко всем плюшкам.

alatar
24.07.2012, 01:26
Или подключите framework.swc к проекту.

babuia
24.07.2012, 04:32
воспользуйтесь вот этим
http://www.flasher.ru/forum/blog.php?b=203
Он еще и крайне быстрый, ко всем плюшкам.
Воспользовался этой библиотекой и все получилось. Спасибо.
Или подключите framework.swc к проекту.
В том то и дело, что он подключен. На этом форуме, в одной старой теме один парень написал что во Flex можно импортировать mx пакеты, но нельзя ими воспользоваться в AS 3.0.
Кто нибудь знает почему это так?

В любом случае, задачу я решил, всем спасибо.

alatar
24.07.2012, 09:39
Это касается только визуальных компонентов.