Показать сообщение отдельно
Старый 29.06.2015, 05:04
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 3  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Или вот такая авантюра:
leafsAnimation.swf   (20.9 Кб)

Код AS3:
import flash.display.Bitmap;
import flash.geom.Matrix;
import flash.display.BitmapData;
 
// Оригиналы листьев.
var origs:Array = [];
origs[0] = new Leaf1();
origs[1] = new Leaf2();
origs[2] = new Leaf3();
 
// Текущий вид каждого из трех вариантов листьев.
var leafs:Array = [];
leafs[0] = new Leaf1();
leafs[1] = new Leaf2();
leafs[2] = new Leaf3();
 
// Чтобы матрицы каждый раз не создавать заново.
var mtx:Matrix = new Matrix();
 
// Наша импровизированная крона дерева о тысяче листов.
var leafsNum:int = 1000;
var tree:Array = [];
 
// Создаем дерево.
var leaf:Bitmap;
for (var i:int = 0; i < leafsNum; i++) {
	leaf = new Bitmap(leafs[int(Math.random() * 3)]);
	leaf.x = Math.random() * 400 + 50;
	leaf.y = Math.random() * 250 + 50;
	addChild(leaf);
	tree[i] = leaf;
}
 
// Это у нас разные фазы для каждой группы листьев.
var phases:Array = [0.0, 1.1, 1.6];
 
// А это общее "время".
var time:Number = 0.0;
 
// Поехали!
addEventListener(Event.ENTER_FRAME, onEnterFrame);
 
// Ну вот, собственно, и вся магия. Здесь мы меняем
// всего лишь три битмапдаты, которые размножены на экране
// посредством тысячи битмап. Ну, т.е. мы не каждый лист
// перерисовываем, а лишь три его варианта отображения.
// Остальное происходит типо блиттингом.
function onEnterFrame(event:Event):void {
	time += 0.2;
 
	var r:Number;
	var s:Number;
	var b:BitmapData;
	for (var i:int = 0; i < 3; i++) {
		r = (Math.sin((time + phases[i]) * 0.2) + Math.sin((time + phases[i]) * 0.5) + i - 1.5) / 10;
		s = i * 0.2 + 0.6;
		mtx;
		mtx.identity();
		mtx.translate(-32, 0);
		mtx.scale(s, s);
		mtx.rotate(r);
		mtx.translate(32 * s, 0);
 
		b = leafs[i] as BitmapData;
		b.fillRect(b.rect, 0);
		b.draw(origs[i] as BitmapData, mtx, null, null, null, true);
	}
}
Вложения
Тип файла: zip leafsAnimation.zip (45.0 Кб, 28 просмотров)
Тип файла: swf leafsAnimation.swf (20.9 Кб, 126 просмотров)
__________________
Поймай яблоко 2!