Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Белый фон на первом кадре PNG программной анимации (http://www.flasher.ru/forum/showthread.php?t=176692)

Astraport 15.03.2012 17:04

Белый фон на первом кадре PNG программной анимации
 
Создаю взрыв при клике:

Код AS3:

private var planeBmp:Bitmap = new Explotion();    
private var exploadBitmap:Bitmap = new Bitmap();
private var planeAnimationArr:Array = new Array();
private var frameNumber:int = 1;
private var point:Point = new Point(0, 0);
private var rect:Rectangle = new Rectangle(0, 0, 64, 60);
private var con:Sprite = new Sprite();
 
private function boom(e:MouseEvent):void {
if (exploadView){
        while (con.numChildren > 0) {
                con.getChildAt(0).removeEventListener(Event.ENTER_FRAME, updateExpload);
                con.removeChildAt(0);
        }
        exploadBitmap = new Bitmap();
        exploadBitmap.addEventListener(Event.ENTER_FRAME, updateExpload);
        con.addChild(exploadBitmap);
        exploadBitmap.smoothing = true;
        exploadBitmap.bitmapData = new BitmapData(64, 60);
        for (var t:int = 0; t < 16; t++) {
                rect.x = 64 * t;
                planeAnimationArr.push(new BitmapData(64, 60));
                planeAnimationArr[t].copyPixels(planeBmp.bitmapData, rect, point);
        }
        exploadBitmap.x = mouseX;
        exploadBitmap.y = mouseY-20;
}
}
 
protected function updateExpload(event:Event):void
                {
                        frameNumber++;
                        if (frameNumber % 2 == false){
                                exploadBitmap.bitmapData = planeAnimationArr[frameNumber/2-1];           
                                //exploadBitmap.rotation++;
                        }
 
                        if (frameNumber >= 32){
                                var btm:Bitmap = event.target as Bitmap;
                                btm.removeEventListener(Event.ENTER_FRAME, updateExpload);
                                con.removeChild(btm);
                                btm = null;
                                frameNumber = 1;
                        }
                }

PNG картинка имеет 16 кадров взрыва на прозрачном фоне. Делаю взрыв в 2 раза медленнее т. к. иначе очень все быстро происходит.


Все нормально работает, но иногда, когда часто кликаешь, на первом кадре образуется белый прямоугольник. Не подскажите как избавиться?

bav 15.03.2012 17:45

Возможно дело вот в чем:
Код:

new BitmapData(64, 60, true, 0)
Цитата:

public function BitmapData(width:int, height:int, transparent:Boolean = true, fillColor:uint = 0xFFFFFFFF)

transparent:Boolean (default = true) — Определяет, поддерживает ли растровое изображение попиксельную прозрачность. Значение по умолчанию — true (прозрачное). Чтобы создать полностью прозрачное растровое изображение, параметру transparent нужно присвоить значение true, а параметру fillColor — 0x00000000 (или 0).

Astraport 15.03.2012 18:59

Ну так и есть.
bav, респект!


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

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