|
|
|||||
Анимация шелеста листвы
К примеру есть изображение дерева
Как бы сделать так, чтобы и шелест был реалистичен, и процессор сильно не грузило?) На деле, изображение имеет выраженную листву, но делать анимацию каждого листа это жесть, даже при условии, что это будет клон всех остальных листьев, тормоза будут серьезные я полагаю) |
|
|||||
А если сделать просто анимацию на 8-12 кадров где нибудь в удобном редакторе, а во флеш просто запускать мувик с серией картинок? Но тогда будет много занимать места, так как каждый кадр анимации - это целое изображение листвы.
Или может разбить листву на 3-5 частей, каждую из которой двигать рандомно на небольшое расстояние. |
|
|||||
Lorem ipsum
|
Или вот такая авантюра:
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); } }
__________________
Поймай яблоко 2! |
|
|||||
Можно взять пример Zebestov, создать шикарную анимацию для дерева, отрендерить в секвенцию png картинок, и затем уже использовать полученные кадры анимации у себя.
Получится красиво и виснуть не будет.
__________________
Дети не должны знать о своих родителях |
|
|||||
Цитата:
|
|
|||||
Lorem ipsum
|
Так а чо там придумывать-то
Конечно, вот это вот "32 * s" — это чота странное, но и коммит же ведь ночной
__________________
Поймай яблоко 2! |
|
|||||
Zebestov, суперр!
|
Часовой пояс GMT +4, время: 10:48. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|