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

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

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

Регистрация: Aug 2009
Сообщений: 101
По умолчанию BitmapData не работает в браузере

Написал функцию копирования мувика через BitmapData:
Код AS1/AS2:
import flash.display.BitmapData;
function duplicateMC(mc:MovieClip,mc2:String,Level:MovieClip,mcx,mcy) {
        if (Level==undefined) Level = _root;
        mcBMP = new BitmapData(mc._width, mc._height, true, 0x0FFFFFF);
        mcBMP.draw(mc);
        Level.createEmptyMovieClip(mc2, Level.getNextHighestDepth());
        Level[mc2].attachBitmap(mcBMP,Level.getNextHighestDepth());
        Level[mc2]._x = mcx;
        Level[mc2]._y = mcy;
}
Кстати, между делом. Как задавать значение параметров по умолчанию у функции?

Так вот. С копированием обычных мутиков все как надо. А вот с копированием мувиков, которые представляют собой загруженные картинки из вне, возникают проблемы. Причем настоящая мистика. Все хорошо работает, когда просматриваю в самом редакторе Flash. Но не работает в браузере.

Между делом вот так выглядит загрузка картинки и запихивание в мувик, который в дальнейшем будем копировать.
Код AS1/AS2:
var movieClipLoader:MovieClipLoader = new MovieClipLoader();
var obj:Object = new Object();
obj.onLoadInit = function(target:MovieClip) {
	_root.nextFrame(); //Загрузка как бы завершенна и можно идти дальше.
};
movieClipLoader.addListener(obj);
_root.createEmptyMovieClip("lib", _root.getNextHighestDepth()); //создаем мувик-библиотеку, где будут храниться загруженные картинки
lib._visible = false; //делаем ее невидимой
_root.lib.createEmptyMovieClip("newImage", _root.lib.getNextHighestDepth()); //создаем контейнер для картинки
movieClipLoader.loadClip("http://i.imgur.com/VzARL.jpg", _root.lib.newImage); //стартуем загрузку
А вот так в следующем кадре вызывается функция:
Код AS1/AS2:
duplicateMC(_root.lib.newImage,"b",_root,0,0);
*Не работает во всех браузерах

Флешка в браузере добавляется вот так:
Код:
var params = {wmode:'transparent', scale:'scale', loop:'false', menu:'false',flashvars:""};
swfobject.embedSWF('/flash/wtf.swf','swf', 550, 400, '8.0.0',{},{},params,{});
__________________
Кто к нам с мечом придет, тот появиться на респауне уже без меча.

Старый 07.03.2012, 10:48
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Цитата:
Сообщение от LanSelven Посмотреть сообщение
Все хорошо работает, когда просматриваю в самом редакторе Flash. Но не работает в браузере.
Уточнить бы надо -
1. Не работает, будучи залитым на хостинг?
2. Если так, то i.imgur.com - тот же ли это домен, с которого флешка загружается?
__________________
Идите первым!


Последний раз редактировалось mooncar; 07.03.2012 в 10:55.
Старый 07.03.2012, 11:15
LanSelven вне форума Посмотреть профиль Отправить личное сообщение для LanSelven Найти все сообщения от LanSelven
  № 3  
Ответить с цитированием
LanSelven
 
Аватар для LanSelven

Регистрация: Aug 2009
Сообщений: 101
1. И на Денвере не работает и будучи залитым на хостинг. В общем везде.
2. imgur.com - просто популярный фотохостинг. Американский вроде.
Попробовал разные варианты, похоже какой-то трабл с безопасность
Нашел пару вариантов, которые все же работают в браузере:
а) локальная ссылка.
Код:
/img/picture.jpg
б) И полная ссылка, но на тот же сайт, где лежит флешка.
Код:
http://mysite.ru/img/picture.jpg
Картинки передаваемые полной ссылкой со сторонних сайтов почему-то не отображаются.
__________________
Кто к нам с мечом придет, тот появиться на респауне уже без меча.


Последний раз редактировалось LanSelven; 07.03.2012 в 11:20.
Старый 07.03.2012, 11:20
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 4  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Тогда дело в том, что на сервере, где картинки лежат, т.е. на i.imgur.com нет файла-кросдоменника, который бы разрешал использовать картинки.
Этот файл флешке не требуется, если она тестируется из IDE, в дебаг-плеере.
__________________
Идите первым!

Старый 07.03.2012, 11:47
LanSelven вне форума Посмотреть профиль Отправить личное сообщение для LanSelven Найти все сообщения от LanSelven
  № 5  
Ответить с цитированием
LanSelven
 
Аватар для LanSelven

Регистрация: Aug 2009
Сообщений: 101
Замечу, что картинки отображаются то всегда, со всех ссылок. Но копировать через BitmapData не всегда удается.

mooncar, так что-то можно сделать, чтобы все работало?
__________________
Кто к нам с мечом придет, тот появиться на респауне уже без меча.

Старый 07.03.2012, 12:01
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 6  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Цитата:
Сообщение от LanSelven Посмотреть сообщение
Замечу, что картинки отображаются то всегда, со всех ссылок. Но копировать через BitmapData не всегда удается.
Все правильно, так и должно быть. По прямым ссылкам картинки будут открываться, и в дебаг-плеере картинки будут отрисовываться в BitmapData. Но если флешку ты разместил на ресурсе, чье доменное имя отличается от домена, с которго грузишь контент, то использовтаь его так не удасться, правила доступа, которые устанавливет владелец ресурса, не позволяют этого.
Цитата:
Сообщение от LanSelven Посмотреть сообщение
так что-то можно сделать, чтобы все работало?
Нет. Разве что хозяева ресурса явно разрешат использовать размещенный у себя контент путем внесения домена с твоей флешкой в свой кроссдоменник.
__________________
Идите первым!

Старый 07.03.2012, 12:06
LanSelven вне форума Посмотреть профиль Отправить личное сообщение для LanSelven Найти все сообщения от LanSelven
  № 7  
Ответить с цитированием
LanSelven
 
Аватар для LanSelven

Регистрация: Aug 2009
Сообщений: 101
Понятно. Как вариант наверное копировать картинки на сервер и потом уже отображать.
Спасибо большое, mooncar.
__________________
Кто к нам с мечом придет, тот появиться на респауне уже без меча.

Старый 07.03.2012, 12:21
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 8  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Вообще, я проверил, файл http://i.imgur.com/crossdomain.xml существует, вот его содержание:
Код:
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*"/>
<site-control permitted-cross-domain-policies="master-only"/>
</cross-domain-policy>
Судя по тому, что здесь написано, такой кроссдоменник должен разрешать грузить сторонним флешкам контент для использования - стоит звездочка.
Запись master-only всего лишь указывает, что "файл /crossdomain.xml является единственным допустимым файлом политики на сервере".

Вывод - надо проверять, идет ли вообще запрос на файл http://i.imgur.com/crossdomain.xml. Проверить можно сниффером, например в FireFox я использую плагин HttpFox.
Если не идет, то вначале явно загружать файл политик, то есть этот кроссдоменник, если флешка автоматически его не запрашивает.
__________________
Идите первым!


Последний раз редактировалось mooncar; 07.03.2012 в 12:44.
Создать новую тему Ответ Часовой пояс GMT +4, время: 23:48.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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