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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.11.2012, 17:42
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 1  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
По умолчанию либы с эффектами переходов

Если пройти по ссылке, можно увидеть один из часто используемых эффектов в фото галлереях http://osc4.template-help.com/joomla_28615/
Данный эффект на сколько я знаю делался ручками , а не кодом. Кто нибудь видел в нете опенсоурс либы с такими вот разными переходами ?
Я пробовал делать что-то похожее кодом, но выходит дикая нагрузка и все тормозит.
Подход использовал такой : брал битмап дату картинки, разрезал ее на N кол-во квадратов , далее
- либо создавал мини-битмапку каждого квадрата и твинмаксом в цикле анимировал ( либо рандомно , либо по итератору ) например по альфе.
- либо каждую мини-битмапку пихал в спрайт и методом выше анимировал уже спрайты ( в случае если нужно сделать привязку по центру каждой битмапки например )

И в первом ( быстрее на порядок ) и во втором случае, при разрезке скажем 20*20 и картинке > 800 уже начинаются приличные тормоза, даже при простом анимировании, никто даже и не говорит про фильтры например, - ну не руками же все это делать?
__________________
Марк Tween

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

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Либ не видел. Но не поверю, что нельзя это нормально сделать и без тормозов.
__________________
hauts.ru

Старый 13.11.2012, 19:39
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 3  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Цитата:
Но не поверю, что нельзя это нормально сделать и без тормозов.
Так вот , я написал свой алгоритм, если считаешь что можно сделать - попробуй или опиши как бы делал. Вот выложу даже пример как я делал ( с тормозами )

Код AS3:
package com.in4core.text.effects 
{
	import com.greensock.TweenMax;
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.DisplayObject;
	import flash.display.DisplayObjectContainer;
	import flash.display.Sprite;
	import flash.events.TimerEvent;
	import flash.geom.Point;
	import flash.geom.Rectangle;
	import flash.utils.Timer;
	/**
	 * ...
	 * @author in4core lab
	 */
	public final class GLCubicBlurTransition 
	{
		private var _tempSource:DisplayObject;
		private var _tempHolder:DisplayObjectContainer;
		private var _tempArray:Array = [];
		private var _sprite:Sprite = new Sprite();
		private var _timer:Timer;
		private var _oneTime:int;
 
		public function GLCubicBlurTransition( ) {
 
			_timer = new Timer(0);
			_sprite.mouseChildren = false;
			_sprite.mouseEnabled = false;
		}
 
		public function slice(source:DisplayObject , holder:DisplayObjectContainer, numW:int , numH:int ):void
		{
			_tempSource = source;
			_tempHolder = holder;
			_sprite.x = source.x;
			_sprite.y = source.y;
 
			const w:int = _tempSource.width / numW;
			const h:int = _tempSource.height / numH;
			const b:BitmapData = new BitmapData(_tempSource.width , _tempSource.height, true, 0);
			b.draw(_tempSource);
 
			for (var i:int = 0; i < numW + 1; i++) {
 
				for (var j:int = 0; j < numH + 1; j++) {
 
					const bd:BitmapData = new BitmapData(w + 1, h + 1, true, 0);
					bd.copyPixels(b , new Rectangle(i * w , j * h , w , h ) , new Point() );
					const bt:Bitmap = new Bitmap(bd , 'never' , true);
 
					const sp:Sprite = new Sprite();
					sp.addChild(bt);
 
					bt.x = -bt.width / 2;
					bt.y = -bt.height / 2;
					sp.alpha = 0;
					sp.addChild(bt);
 
					_sprite.addChild(sp);
 
					_tempArray.push(sp);
 
 
					sp.x = i * w + sp.width / 2;
					sp.y = j * h + sp.height / 2;
				}
			}
 
			_tempHolder.addChild(_sprite);
			_tempSource.visible = false;
		}
 
 
 
		public function fadeTrans(time:int):void 
		{
			for (var i:int = 0; i < _tempArray.length; i++)
			{
				TweenMax.fromTo( _tempArray[i] , time / 1000 , 
				{ scaleX:0 , scaleY:0 , alpha:0  } , 
				{ scaleX:1 , scaleY:1 , alpha:1   , 
				onComplete:i == _tempArray.length - 1 ? onComplete_cubicBlurTransition : null } );
			}
		}
 
 
		public function blurTrans(time:int):void
		{
			_timer.delay = time;
			_timer.addEventListener(TimerEvent.TIMER , update_cubicBlurTransition);
			_timer.start();
		}
 
		private function update_cubicBlurTransition(e:TimerEvent):void {
 
			var tar:Timer = e.target as Timer;
			var num:int = Math.floor( Math.random() * _tempArray.length );
 
			if (!_tempArray.length) {
 
				tar.stop();
 
				return;
			}
 
 
			var c:Sprite = _tempArray[num];
 
 
			TweenMax.fromTo ( c , 1 , { blurFilter: { blurX:80 } , scaleX:0 , scaleY:0 }, 
			{ blurFilter: { blurX:0 } , alpha:1 , rotation:360 , scaleX:1 , scaleY:1,
			onComplete: _tempArray.length > 1 ? null : onComplete_cubicBlurTransition } );
 
			_tempArray.splice(num,1);
 
		}
 
		private function onComplete_cubicBlurTransition():void {
 
			_tempSource.visible = true;
			_tempHolder.removeChild(_sprite);
			_tempArray = [];
			_tempSource = null;
			_tempHolder = null;
 
			while (_sprite.numChildren) _sprite.removeChildAt(0);
		}
 
	}
 
}
Запуск приблиз вроде такой

Код AS3:
var gl:GLCubicBlurTransition = new GLCubicBlurTransition();
gl.slice(source , sourceParent , 20 , 20);
gl.blurTrans(1000);  or  gl.fadeTrans(1000)
Попробйте
__________________
Марк Tween

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
Кто нибудь видел в нете опенсоурс либы с такими вот разными переходами ?
Достаточно погуглить "as3 bitmap transitions".

В разрезании смысла нет, если картинки остаются в своих границах. Такой эффект можно реализовать с помощью BitmapData#copyPixels, BitmapData#draw или шейдерами.

Добавлено через 6 минут
Вот, например, и более навороченный переход. http://blog.soulwire.co.uk/laborator...itch-generator
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 13.11.2012, 19:54
zuxul вне форума Посмотреть профиль Отправить личное сообщение для zuxul Найти все сообщения от zuxul
  № 5  
Ответить с цитированием
zuxul

Регистрация: Dec 2009
Адрес: 59°13′N, 39°54′E
Сообщений: 445
Записей в блоге: 1
Нужно рисовать все в одну битмапдату из кусочков битмапдаты, перед этим ее лочить, тогда должно быть в разы быстрее.
А еще лучше, использовать Pixel Blender. Вот у Zebestov-а, крутой фильтр есть: http://www.flasher.ru/forum/showthread.php?t=147772
UPD: и еще http://blog.bellinsky.com/ru/2012/06...B%D1%8F-flash/

Старый 13.11.2012, 20:05
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 6  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Цитата:
А еще лучше, использовать Pixel Blender
Это ясно, что лучше, но сначала надо в ней поковырятся приличное время. Я не считаю, что стоит тратить время на ПБ , разбирая + изучая мат операции, ради фильтров. Просто нет на это времени

Цитата:
Вот, например, и более навороченный переход. http://blog.soulwire.co.uk/laborator...itch-generator
Thx. Заценим
__________________
Марк Tween

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
Thx. Заценим
Конкретно этот эффект "заценивать" не стоит, там напрямую меняются байты картинки.
__________________
משיח לא בא
משיח גם לא מטלפן


Последний раз редактировалось alatar; 13.11.2012 в 21:04.
Старый 13.11.2012, 20:39
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 8  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
А у силина с помощью чего битмапы меняются? Тоже ПБ?
http://silin.su/#AS3/gadgets/bitmapTweener/bin
__________________
Дети не должны знать о своих родителях

Старый 13.11.2012, 21:03
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 9  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Нет, через фильтры.
__________________
משיח לא בא
משיח גם לא מטלפן

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Я вообще не понял, причем тут битмапдаты и прочие копипиксели, а тем более блендеры. Обычные анимированные маски, одна копия картинки с режимом наложения (может, оверлей, или другим), другая с обычным; у первой маска открывается чуть раньше, маска второй догоняет. Картинки при этом масштабируются из чуть бОльшего размера в нормальный, но видно же, что "куски" не смещены относительно друг друга.
__________________
Reality.getBounds(this);

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

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

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


 


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


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