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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 23.06.2008, 22:07
koresh& вне форума Посмотреть профиль Отправить личное сообщение для koresh& Найти все сообщения от koresh&
  № 1  
Ответить с цитированием
koresh&

Регистрация: Jul 2007
Сообщений: 21
По умолчанию Думблирование/клонирование подгружаемых изображений

Подскажите, каким образом можно клонировать(дублировать) подгружаемые картинки, чтобы не загружать одну и ту же картинку 5 раз (она повторяется).

Как это делается? Дублируется Loader или MovieClip в который помещается картинка из Loader'a или картинка преобразуется в Bitmap?

Старый 23.06.2008, 22:15
$mival вне форума Посмотреть профиль Отправить личное сообщение для $mival Найти все сообщения от $mival
  № 2  
Ответить с цитированием
$mival
 
Аватар для $mival

Регистрация: Oct 2005
Адрес: Russia, Irkutsk
Сообщений: 742
Код:
		private function duplicateImage(original:Bitmap):Bitmap 
		{
			var image:Bitmap = new Bitmap(original.bitmapData.clone(), "auto", true);
			return image;
		}
__________________
smival.com

Старый 23.06.2008, 22:25
koresh& вне форума Посмотреть профиль Отправить личное сообщение для koresh& Найти все сообщения от koresh&
  № 3  
Ответить с цитированием
koresh&

Регистрация: Jul 2007
Сообщений: 21
во, спасибо.
если можно ещё, напишите, как с самой картинкой быть? т.е. есть Loader как его в Bitmap преобразовать?

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

Регистрация: Oct 2005
Адрес: Russia, Irkutsk
Сообщений: 742
loader.content
help читать надо иногда
__________________
smival.com

Старый 23.06.2008, 23:35
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 5  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
$mival, а зачем вы клонируете и Bitmap и BitmapData?

Старый 24.06.2008, 00:47
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 6  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
$mival, да ... с BitmapData вы погорячились. это пожалуй единственный класс во Флэше, который стоит клонировать, тольк в том случаи если его надо изменять не затронув другие вьюхи. использование одной и той же битмапдаты нехило экономит память.

Старый 24.06.2008, 09:54
koresh& вне форума Посмотреть профиль Отправить личное сообщение для koresh& Найти все сообщения от koresh&
  № 7  
Ответить с цитированием
koresh&

Регистрация: Jul 2007
Сообщений: 21
$mival, да, и правда

Код:
package {
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.Loader;
    import flash.display.Sprite;
    import flash.events.*;
    import flash.geom.Point;
    import flash.geom.Rectangle;
    import flash.net.URLRequest;

    public class BitmapDataExample extends Sprite {
        private var url:String = "Image.gif";
        private var size:uint = 80;

        public function BitmapDataExample() {
            configureAssets();
        }

        private function configureAssets():void {
            var loader:Loader = new Loader();
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
            loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);

            var request:URLRequest = new URLRequest(url);
            loader.x = size * numChildren;
            loader.load(request);
            addChild(loader);
        }

        private function duplicateImage(original:Bitmap):Bitmap {
            var image:Bitmap = new Bitmap(original.bitmapData.clone());
            image.x = size * numChildren;
            addChild(image);
            return image;
        }

        private function completeHandler(event:Event):void {
            var loader:Loader = Loader(event.target.loader);
            var image:Bitmap = Bitmap(loader.content);

            var duplicate:Bitmap = duplicateImage(image);
            var bitmapData:BitmapData = duplicate.bitmapData;
            var sourceRect:Rectangle = new Rectangle(0, 0, bitmapData.width, bitmapData.height);
            var destPoint:Point = new Point();
            var operation:String = ">=";
            var threshold:uint = 0xCCCCCCCC;
            var color:uint = 0xFFFFFF00;
            var mask:uint = 0x000000FF;
            var copySource:Boolean = true;

            bitmapData.threshold(bitmapData,
                                 sourceRect,
                                 destPoint,
                                 operation,
                                 threshold,
                                 color,
                                 mask,
                                 copySource);
        }
        
        private function ioErrorHandler(event:IOErrorEvent):void {
            trace("Unable to load image: " + url);
        }
    }
}
Цитата:
Сообщение от __etc Посмотреть сообщение
$mival, а зачем вы клонируете и Bitmap и BitmapData?
Подгруженная картинка несколько раз на странице отображается (страница - несколько экранов).

Цитата:
Сообщение от BlooDHounD Посмотреть сообщение
$mival, да ... с BitmapData вы погорячились. это пожалуй единственный класс во Флэше, который стоит клонировать, тольк в том случаи если его надо изменять не затронув другие вьюхи. использование одной и той же битмапдаты нехило экономит память.
а как использовать одну и туже питмабдату несколько раз?
(я средне понял, что спросил, т.к. ещё не очень разобрался в этой теме.)


Последний раз редактировалось etc; 24.06.2008 в 10:47.
Старый 24.06.2008, 10:48
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от koresh& Посмотреть сообщение
а как использовать одну и туже питмабдату несколько раз?
Клонировать только Bitmap, а BitmapData не трогать.

Старый 24.06.2008, 11:21
koresh& вне форума Посмотреть профиль Отправить личное сообщение для koresh& Найти все сообщения от koresh&
  № 9  
Ответить с цитированием
koresh&

Регистрация: Jul 2007
Сообщений: 21
а в примере что клонируется Bitmap или BitmapData

Код:
var image:Bitmap = new Bitmap(original.bitmapData.clone());
Если BitmapData,то как клонировать только Bitmap?
(если можно начиная с Loader'a)


Код:
var b:Bitmap = loader.content as Bitmap; 

var image:Bitmap = Bitmap(loader.content);
ок


Последний раз редактировалось koresh&; 24.06.2008 в 12:10.
Старый 24.06.2008, 19:23
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 10  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
несколько битмапов могут ссылаться на одну битмапдату
__________________
тонкий тролль, осеянный благодатью

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

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

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


 


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


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