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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 16.05.2012, 17:23
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 11  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Похоже на то, что tween работает на таймере, а в обработчике используется updateAfterEvent().

Добавлено через 6 минут
Код AS3:
import flash.display.Shape;
import flash.utils.Timer;
import flash.events.TimerEvent;
 
var shape:Shape = new Shape();
shape.graphics.lineStyle(1.2);
shape.graphics.drawCircle(0, 0, 50);
shape.x = 100;
shape.y = 200;
stage.addChild(shape);
 
var timer:Timer = new Timer(16);
	timer.addEventListener(TimerEvent.TIMER, onTimer);
	timer.start();
 
var step:Number = 3;
var right:Number = 480;
var left:Number = 70;
 
function onTimer(event:TimerEvent):void
{
	shape.x += step;
 
	if (shape.x >= right)
	{
		shape.x = right;
		step = -step;
	}
	else if (shape.x <= left)
	{
		shape.x = left;
		step = -step;
	}
 
	// эта заветная строчка делает все плавным
	event.updateAfterEvent();
}
Открываем Flash IDE, в первый кадр вставляем этот код, и для пущей убедительности до неприличия уменьшаем fps в настройках (например до 12).
__________________
Поймай яблоко 2!

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

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
Т.е. получается что они умудряются произвести несколько рендеров графики за один фрейм?
__________________
:)

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

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Для того и существует этот метод
__________________
Поймай яблоко 2!

Старый 16.05.2012, 18:52
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 14  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
не стоит им злоупотреблять вообще-то.
__________________
Отряд Котовскага

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

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
не стоит. но он есть ) и применили в данном примере именно его.
__________________
Поймай яблоко 2!

Старый 16.05.2012, 19:03
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 16  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
вообще интересная штука, можно получается практически иметь разный fps в разных частях флешки. Надо будет попробовать поизвращаться, что будет если сделать очень низкий fps, близкий к нулю, как себя плеер поведёт.
__________________
:)

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

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Мы отвлекаемся. Данная возможность была упомянута исключительно в контексте вопроса автора.
__________________
Поймай яблоко 2!

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

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
ну ответ то найден, они просто обновляют графику чаще чем тикают фреймы. Движение на 4 пикселя за фрейм конечно дёргается, а если за фрейм перерисовать графику 4 раза то нормально будет. Другой вопрос в том что будет когда таких твинеров станет не 3, а 300 на экране.
__________________
:)


Последний раз редактировалось iNils; 17.05.2012 в 06:53.
Старый 16.05.2012, 19:54
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 19  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Цитата:
Сообщение от Aquahawk Посмотреть сообщение
вопрос в том что будет когда таких твинеров станет не 3 а 300 на экране.
Код AS3:
import flash.display.Shape;
import flash.utils.Timer;
import flash.events.TimerEvent;
 
var shapeArray:Array = [];
var phaseArray:Array = [];
var ratioArray:Array = [];
 
var shape:Shape;
for (var i:int = 0; i < 300; i++)
{
	shape = new Shape();
	shape.graphics.lineStyle(2, uint(Math.random() * 0xffffff));
	shape.graphics.drawCircle(0, 0, Math.random() * 20 + 10);
	stage.addChild(shape);
 
	shapeArray.push(shape);
	phaseArray.push(Math.random() * Math.PI);
	ratioArray.push(Math.random() * 4 - 2);
}
 
var phase:Number = 0;
 
var timer:Timer = new Timer(16);
	timer.addEventListener(TimerEvent.TIMER, onTimer);
	timer.start();
 
function onTimer(event:TimerEvent):void
{
	var i:int = shapeArray.length;
	while (i--)
	{
		shape = shapeArray[i];
		shape.x = Math.sin((phase + phaseArray[i]) * ratioArray[i]) * 200 + 275;
		shape.y = Math.cos( phase + phaseArray[i])                  * 150 + 200;
	}
 
	phase += 0.025;
 
	// эта заветная строчка делает все плавным
	event.updateAfterEvent();
}
__________________
Поймай яблоко 2!

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

Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
Огромное спасибо за ответ. Оказалось, вопрос был задан не напрасно)
Aquahawk, если что интересного "наизвращаешь" - сообщи обязательно.

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

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

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


 


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


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