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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 28.11.2017, 14:01
ZergMaster вне форума Посмотреть профиль Отправить личное сообщение для ZergMaster Найти все сообщения от ZergMaster
  № 21  
Ответить с цитированием
ZergMaster
 
Аватар для ZergMaster

Регистрация: May 2008
Адрес: Питер
Сообщений: 385
Отправить сообщение для ZergMaster с помощью ICQ Отправить сообщение для ZergMaster с помощью Skype™
Цитата:
Сообщение от Appleman Посмотреть сообщение
высокие fps кажутся нам "кинематографичнее" из-за того, что человеческий глаз банально не может различить больше 24 кадров в секунду
Это довольно распространенное заблуждение. Сильно устаревшие данные. 24 кадра связаны не с частотой, воспринимаемой глазом, а техническими возможностями, которыми располагало человечество на момент создания кино. На самом деле человек различает до 60-ти в среднем, а так вообще это очень индивидуально. Например, разницу между 30-ю и 60ю я вижу отлично, как и между 60-ю и 240. И, кстати, 24 кадра без блюра будут дерганные.

По поводу блюров, когда делал первые автоматы, в итоге сделал в точности, как говорит Zebestov. Долго эксперементировал и так и эдак, пришел к тому, что хочу, чтобы они вертелись быстро и красиво. Попробовал заблюрить, оказалось прям хорошо. В результате пришел к тому, что на каждый барабан сделал по три кадра в кашу заблюреных слотов (так, что просто цветное месиво) и при анимации кручения их просто поочередно менял. Получилось настолько неожиданно красиво и реалистично, что так и оставил.

Старый 28.11.2017, 16:03
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 22  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
Да,кстати,ТС, а сколько fps стоит то?На 24 плавную анимацию не получится никак.

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
тормоза появятся от пересчета их матриц при меремещении
Что, реально будет для каждой картинки пересчитывать матрицу? А что случилось, что у нее поменялось? Поворот, координаты в контейнере, масштабирование, размеры?

Насчет идеи отрисовать всю ленту в одну битмапину — не забывайте, что для этого вам придется создать НОВУЮ битмапдату высотой в несколько тысяч пикселей, 5 таких штук, и занять ими память (напомню, что битмапы отдельных картинок показывают свои битмапдаты прямо с исходника).
__________________
Reality.getBounds(this);

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

Регистрация: May 2008
Адрес: Питер
Сообщений: 385
Отправить сообщение для ZergMaster с помощью ICQ Отправить сообщение для ZergMaster с помощью Skype™
Кстати, пользуясь случаем, небольшой оффтопчик: хотел уточнить теорию BitmapData. Я правильно помню, что когда мы создаем статическую BitmapData, а потом на её основе неограниченное количество Bitmap и добавляем их на сцену, то память тратится всего на одну BitmapData? Потому что bd это массив байтов а bitmap это display object? Просто я порыскал на скорую руку по гуглу , вразумительного ответа не нашел быстро. Хочется именно понимать вкратце так ли это и почему это так.

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Что, реально будет для каждой картинки пересчитывать матрицу? А что случилось, что у нее поменялось? Поворот, координаты в контейнере, масштабирование, размеры?
Поменялась матрица контейнера, ее параметры нужно задать и вложенным объектам, чтобы они в нужной позиции отрисовались. А просто задать парметры матрицы в as3 нельзя, матрица создастся новая. Так как страктов в ас3 тоже нет, все это барахло копится в памяти до момента срабатывания сборщика. И вот именно в этот момент происходит фриз.
Это из практики. Я тоже в свое время долго над этим голову ломал
Цитата:
Насчет идеи отрисовать всю ленту в одну битмапину — не забывайте, что для этого вам придется создать НОВУЮ битмапдату высотой в несколько тысяч пикселей, 5 таких штук, и занять ими память (напомню, что битмапы отдельных картинок показывают свои битмапдаты прямо с исходника).
Не обязательно. Достаточно на несколько картинок вперед и назад. Механизм получится немного сложнее, чем просто пролистывание, потому как придется определять что именно и когда надо отрисовать. Но он рабочий. Битмапка будет крутиться намного плавнее, чем контейнер с куче объектов. 100%.
__________________
Ко мне можно и нужно обращаться на ты)


Последний раз редактировалось caseyryan; 28.11.2017 в 18:42.
Старый 28.11.2017, 19:26
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 26  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Костян, а замеры есть? А то пока просто говорим. Хочется реальный пример увидеть, прям очень красочный ))) Задача : имеем 50 картинок, хотите в битмапу, хотите как угодно - на каждом барабане, подается на вход позиция, например 20, это значит остановка на 20 картинке, 21,22 визуально, ну и сначала позиция тоже подается перед стартом.
__________________
Марк Tween

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Тебе придется этот пример сделать самому. Я тебе могу лишь сказать точно, что с битмапами работает намного плавнее и шустрее
__________________
Ко мне можно и нужно обращаться на ты)

Старый 29.11.2017, 12:11
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 28  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
Main.as:
Код AS3:
package
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.text.*;
 
	/**
	 * ...
	 * @author 
	 */
	public class Main extends Sprite 
	{
 
		public function Main() 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
		private var reels:Array;
		private var tf:TextField;
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			tf = new TextField();
			tf.type = "input";
			tf.width = 50;
			tf.height = 30;
			tf.background = true;
			tf.border = true;
			//tf.backgroundColor = 0xFF0000;
			tf.x = tf.y = 20;
			tf.text = "0.1";
			var format:TextFormat = new TextFormat();
			format.size = 25;
			tf.setTextFormat(format);
			addChild(tf);
			tf.addEventListener(Event.CHANGE, function (e:Event):void{
				var duration:Number = Number(tf.text);
				if(!isNaN(duration)) {
					for (var i:uint = 0; i < reels.length; i++) {
						reels[i].animDuration = duration;
					}
				}
			});
			reels = [];
			for (var i:uint = 0; i < 5;i++) {
				var reel:Reel = new Reel(150,150);
				addChild(reel);
				reels.push(reel);
				reel.x = i * 155;
				reel.y =-150;
				reel.addItem(0, 0xFF0000);
				reel.addItem(1, 0x00FF00);
				reel.addItem(2, 0x000FF);
				reel.addItem(3, 0xFF00FF);
				reel.addItem(4, 0x00FFFF);
				reel.spin();
			}
		}
 
	}
 
}
Reel.as:
Код AS3:
package 
{
	import aze.motion.easing.Linear;
	import flash.display.Sprite;
	import flash.geom.Point;
	import flash.text.TextField;
	import flash.text.TextFormat;
	import aze.motion.eaze;
 
	/**
	 * ...
	 * @author 
	 */
	public class Reel extends Sprite 
	{
		private var items:Array = [];
		private var cont:Sprite;
		private var curItem:int = 0;
		private var itemWidth:Number;
		private var itemHeight:Number;
		private var _animDuration:Number = 0.1;
		public function Reel(itemWidth:Number, itemHeight:Number) 
		{
			super();
			this.itemWidth = itemWidth;
			this.itemHeight = itemHeight;
		}
		public function addItem(n:uint, color:uint):void {
			var item:Sprite = new Sprite();
			item.graphics.beginFill(color, 1);
			item.graphics.lineStyle(1, 0, 1);
			item.graphics.drawRect(0, 0, itemWidth, itemHeight);
			var tf:TextField = new TextField();
			tf.text = String(n);
			tf.textColor = 0;
			tf.autoSize = "left";
			var format:TextFormat = new TextFormat();
			format.size = 80;
			tf.setTextFormat(format);
			tf.x = item.width * 0.5 - tf.width * 0.5;
			tf.y = item.height * 0.5 - tf.height * 0.5;
			item.addChild(tf);
			items.push(item);
		}
		public function spin():void {
			doSpinAnim();
		}
 
		private function doSpinAnim():void 
		{
			if (cont)
				removeChild(cont);
			cont = new Sprite();
			var _y:Number = 0;
			for (var i:int = -2; i <= 1; i++) {
				var n:int = curItem + i;
				if (n < 0) n+=items.length;
				if (n > items.length - 1) n = 0;
				//trace(n);
				items[n].y = _y;
				_y += items[n].height;
				cont.addChild(items[n]);
			}
			addChild(cont);
			var _mask:Sprite = new Sprite();
			_mask.graphics.beginFill(0, 0.5);
			_mask.graphics.drawRect(0, 0, itemWidth, itemHeight*2);
			var p:Point = new Point();
			p = items[curItem].localToGlobal(p);
			_mask.x = p.x;
			_mask.y =p.y-itemHeight/2;
			//stage.addChild(_mask);
			cont.mask = _mask;
			eaze(cont).easing(Linear.easeNone).apply({y:0}).to(_animDuration, {y:itemHeight}).onComplete(function():void {
				curItem--;
				if (curItem < 0) curItem = items.length - 1;
				doSpinAnim();
			});
		}
 
		public function set animDuration(value:Number):void 
		{
			_animDuration = value;
		}
	}
 
}
В инпутфилде скорость анимации.
Красиво сам сделаешь
slottest.swf   (23.0 Кб)
Вложения
Тип файла: swf slottest.swf (23.0 Кб, 61 просмотров)


Последний раз редактировалось undefined; 29.11.2017 в 12:30.
Старый 29.11.2017, 12:52
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 29  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
И в чем прикол данного дергунчика? Причем такие дичайшие операции? какие то циклы там.
Код AS3:
.tween(_clip, 0.2, { y:_clip.y + dy }).onComplete(.tween);
__________________
Марк Tween

Старый 29.11.2017, 14:14
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 30  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
что это?

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

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

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


 


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


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