Показать сообщение отдельно
Старый 15.03.2012, 17:04
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 1  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
По умолчанию Белый фон на первом кадре 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 раза медленнее т. к. иначе очень все быстро происходит.


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