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

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

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

блогер
Регистрация: Jul 2010
Сообщений: 117
Записей в блоге: 4
Question Как с помощью loader многократно использовать картинку?

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

Код AS3:
public var imgfon = new Loader();
 
var r=new URLRequest("img/fon/water.jpg");
imgfon.load(r);
Чтобы она отобразилась, нужно добавить её к спрайту с помощью addChild
Но при этом нельзя добавить её к множеству спрайтов (у неё возможен всего один родитель).

Как, загрузив один раз, добавить её более чем к одному спрайту, чтобы все они одновременно её отображали?

Старый 10.07.2010, 21:16
aliim вне форума Посмотреть профиль Отправить личное сообщение для aliim Найти все сообщения от aliim
  № 2  
Ответить с цитированием
aliim

Регистрация: Jun 2006
Сообщений: 28
можно клонировать битмар данные загрузчика, например

Код AS3:
var image2:Bitmap = new Bitmap(Bitmap(imgfon.content).bitmapData.clone(),"auto",true);

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
Чтобы она отобразилась, нужно добавить её к спрайту с помощью addChild
Нет. Ее нужно добавить в список отображения, а будет это спрайт, клип или сам стейдж - без разницы, лишь бы спрайт или клип тоже был "на сцене". Иначе хоть задобавляйтесь.
Цитата:
можно клонировать битмар данные загрузчика, например
Совсем необязательно клонировать. БитмапДата - не дисплейный объект, это фактически массив данных, ИЗ которых строится изображение. Его совершенно не нужно клонировать - можно настряпать сколько угодно дисплейных Битмапов из одной и той же БитмапДаты.
__________________
Reality.getBounds(this);

Старый 10.07.2010, 22:18
aliim вне форума Посмотреть профиль Отправить личное сообщение для aliim Найти все сообщения от aliim
  № 4  
Ответить с цитированием
aliim

Регистрация: Jun 2006
Сообщений: 28
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Нет. Ее нужно добавить в список отображения, а будет это спрайт, клип или сам стейдж - без разницы, лишь бы спрайт или клип тоже был "на сцене". Иначе хоть задобавляйтесь.
насколько я понял, вопрос был в том как добавить данные одного лоадера к двум клипам на сцене. поскольку у лоадера (и его контента) может быть только один родитель, то, если на сцену добавлены два клипа (как addChild), к ним обоим нельзя добавить один лоадер (как addChild). при добавлении лоадера ко второму клипу он пропадет из первого

Цитата:
Сообщение от Wolsh Посмотреть сообщение
Совсем необязательно клонировать. БитмапДата - не дисплейный объект, это фактически массив данных, ИЗ которых строится изображение. Его совершенно не нужно клонировать - можно настряпать сколько угодно дисплейных Битмапов из одной и той же БитмапДаты.
можно и не клонировать, зависит от задачи, можно сделать так (при этом будет использоваться оригинальная битмапДата):

Код AS3:
import flash.display.MovieClip;
import flash.events.Event;
import flash.display.BitmapData;
 
var imgfon = new Loader();
var mc1:MovieClip = new MovieClip  ;
var mc2:MovieClip = new MovieClip  ;
 
var r = new URLRequest("image.jpg");
imgfon.load(r);
imgfon.contentLoaderInfo.addEventListener(Event.COMPLETE, go);
 
function go(e:Event) {
	var bd:BitmapData = Bitmap(imgfon.content).bitmapData;
	mc1.addChild(new Bitmap(bd,"auto",true));
        mc2.addChild(new Bitmap(bd,"auto",true));
}
 
addChild(mc1);
addChild(mc2);

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
1. У Вас класс Битмап не импортирован))
2. Он, в общем-то, и не обязателен. Можно просто залить, если другого содержимого не предполагается.
3. А его и не предполагается - тогда зачем какие-то мувиклипы, если достаточно спрайта или даже шейпа? Зачем грузить память ненужным функционалом?
__________________
Reality.getBounds(this);


Последний раз редактировалось iNils; 12.07.2010 в 13:38.
Старый 11.07.2010, 10:57
kackbip вне форума Посмотреть профиль Отправить личное сообщение для kackbip Найти все сообщения от kackbip
  № 6  
Ответить с цитированием
kackbip
 
Аватар для kackbip

Регистрация: Sep 2007
Адрес: Tomsk
Сообщений: 943
Отправить сообщение для kackbip с помощью ICQ Отправить сообщение для kackbip с помощью Skype™
Можно так:
1) Загружать массив байт с помощью URLLoader
2) Массив байт по мере необходимости скармливать новому Loader-у

Пример на ошибки не проверен, но подход точно рабочий:

Код AS3:
var urlldr:URLLoader = new URLLoader();
urlldr.dataFormat = URLLoaderDataFormat.BINARY;
urlldr.addEventListener(Event.COMPLETE, onLoadHandler);
urlldr.load(req);
var data:ByteArray;
 
function onLoadHandler(evt:Event):void{
  data = evt.target.data;
  var ldr:Loader = new Loader();
  ldr.loadBytes(data);
}


Последний раз редактировалось kackbip; 11.07.2010 в 11:02.
Старый 11.07.2010, 12:53
Jarproger вне форума Посмотреть профиль Отправить личное сообщение для Jarproger Найти все сообщения от Jarproger
  № 7  
Ответить с цитированием
Jarproger
 
Аватар для Jarproger

блогер
Регистрация: Jul 2010
Сообщений: 117
Записей в блоге: 4
kackbip, а как теперь добавлять этот массив байт к отображению?

Старый 11.07.2010, 14:25
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 8  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Не массив байт, а лоадеры. Просто создаете нужное количество лоадеров (в примере ldr) и загружаете в них ByteArray (urlldr.data)
Ну и добавляете их addChild'ом

Добавлено через 2 минуты
(такое ощущение что народ соревнуется, как бы сделать все потяжелее да помассивней))))
__________________
Reality.getBounds(this);

Старый 11.07.2010, 15:28
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 9  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Вот пример с шейпами. Шейпы можно заменить на Спрайты, если нужна интерактивность или добавление элементов "к картинке".
Вложения
Тип файла: rar MultiView.rar (32.6 Кб, 44 просмотров)
__________________
Reality.getBounds(this);

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

Регистрация: Sep 2007
Адрес: Tomsk
Сообщений: 943
Отправить сообщение для kackbip с помощью ICQ Отправить сообщение для kackbip с помощью Skype™
Walsh, вариант хороший и проканает почти всегда.
Мой вариант имеет смысл использовать только при желании отобразить анимированные swf.

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

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

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


 


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


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