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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 28.06.2015, 17:37
KiL33 вне форума Посмотреть профиль Отправить личное сообщение для KiL33 Найти все сообщения от KiL33
  № 1  
Ответить с цитированием
KiL33
 
Аватар для KiL33

Регистрация: Jul 2007
Адрес: Гражданин Российской Федерации
Сообщений: 1,122
Отправить сообщение для KiL33 с помощью ICQ
По умолчанию Анимация шелеста листвы

К примеру есть изображение дерева
Название: website_design_welwyn_tree.png
Просмотров: 656

Размер: 92.7 Кб
Как бы сделать так, чтобы и шелест был реалистичен, и процессор сильно не грузило?)

На деле, изображение имеет выраженную листву, но делать анимацию каждого листа это жесть, даже при условии, что это будет клон всех остальных листьев, тормоза будут серьезные я полагаю)

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
А если сделать просто анимацию на 8-12 кадров где нибудь в удобном редакторе, а во флеш просто запускать мувик с серией картинок? Но тогда будет много занимать места, так как каждый кадр анимации - это целое изображение листвы.
Или может разбить листву на 3-5 частей, каждую из которой двигать рандомно на небольшое расстояние.

Старый 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 Кб, 27 просмотров)
Тип файла: swf leafsAnimation.swf (20.9 Кб, 124 просмотров)
__________________
Поймай яблоко 2!

Старый 29.06.2015, 10:07
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 4  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Можно взять пример Zebestov, создать шикарную анимацию для дерева, отрендерить в секвенцию png картинок, и затем уже использовать полученные кадры анимации у себя.
Получится красиво и виснуть не будет.
__________________
Дети не должны знать о своих родителях

Старый 29.06.2015, 10:47
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 5  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Цитата:
Сообщение от Zebestov Посмотреть сообщение
Или вот такая авантюра
Очень классно!

Старый 29.06.2015, 12:00
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 6  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Сообщение от Zebestov Посмотреть сообщение
Или вот такая авантюра:
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);
	}
}
Крутяк) Сам придумал?

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

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Так а чо там придумывать-то
Конечно, вот это вот "32 * s" — это чота странное, но и коммит же ведь ночной
__________________
Поймай яблоко 2!

Старый 29.06.2015, 14:53
KiL33 вне форума Посмотреть профиль Отправить личное сообщение для KiL33 Найти все сообщения от KiL33
  № 8  
Ответить с цитированием
KiL33
 
Аватар для KiL33

Регистрация: Jul 2007
Адрес: Гражданин Российской Федерации
Сообщений: 1,122
Отправить сообщение для KiL33 с помощью ICQ
Zebestov, суперр!

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

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

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


 


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


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