Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Думблирование/клонирование подгружаемых изображений (http://www.flasher.ru/forum/showthread.php?t=113278)

koresh& 23.06.2008 22:07

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

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

$mival 23.06.2008 22:15

Код:

                private function duplicateImage(original:Bitmap):Bitmap
                {
                        var image:Bitmap = new Bitmap(original.bitmapData.clone(), "auto", true);
                        return image;
                }


koresh& 23.06.2008 22:25

во, спасибо.
если можно ещё, напишите, как с самой картинкой быть? т.е. есть Loader как его в Bitmap преобразовать?

$mival 23.06.2008 22:43

loader.content
help читать надо иногда

etc 23.06.2008 23:35

$mival, а зачем вы клонируете и Bitmap и BitmapData?

BlooDHounD 24.06.2008 00:47

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

koresh& 24.06.2008 09:54

$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 (Сообщение 747434)
$mival, а зачем вы клонируете и Bitmap и BitmapData?

Подгруженная картинка несколько раз на странице отображается (страница - несколько экранов).

Цитата:

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

а как использовать одну и туже питмабдату несколько раз?
(я средне понял, что спросил, т.к. ещё не очень разобрался в этой теме.)

etc 24.06.2008 10:48

Цитата:

Сообщение от koresh& (Сообщение 747464)
а как использовать одну и туже питмабдату несколько раз?

Клонировать только Bitmap, а BitmapData не трогать.

koresh& 24.06.2008 11: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);

ок

Gaen 24.06.2008 19:23

несколько битмапов могут ссылаться на одну битмапдату


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

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