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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 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 раза медленнее т. к. иначе очень все быстро происходит.


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

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

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
Возможно дело вот в чем:
Код:
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).

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

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Ну так и есть.
bav, респект!

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

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

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


 


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


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