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

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

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

Регистрация: Jun 2002
Адрес: on the backyard
Сообщений: 285
Отправить сообщение для greep с помощью ICQ
По умолчанию про изинг

Всем привет. Решил прицепить вместо большой либы, себе в проект, маленькую изинговую функцию. Например такую

Код AS1/AS2:
	easeOutQuad = function(t, b, c, d) {
		return -c *(t/=d)*(t-2) + b;
	}
Где:

t - первая итерация
d - конечная
b - начальная точка
с - конечная точка

Например я хочу программно двигать мувиклип из точки х = 50 в точку х= 310. В течении 50 кадров. Получается у меня такой вот код:

Код AS1/AS2:
if (t<=d) {
			mc._x = easeOutQuart(t, 50, 310, d);
 
			}else{
			d=0;
			}
		t++;
 
		}else{
			mc._x = easeOutQuart(t, 50, 310, d);
			myEasingStatus = false;
		}
Все прекрасно работает пока начальная точка больше нуля, а конечная точка больше начальной. Но если мне нужно двигать мувиклип из точки х=200 в точку х=-200 тут почему-то казалось бы стандартная изинговая формула не арбайтен.

Но если не много ее доработать...

Код AS1/AS2:
	easeOutQuad = function(t, b, c, d) {
		var b2 = b;
		var c2 = c;
		if(b > c){
			b = c2;
			c = c2-b2;
		}
		return -c *(t/=d)*(t-2) + b;
	}
то по крайней мере из точки 400 можно анимировать в точку 100...

Задачка собственно состоит в том, чтобы можно было бы использовать все эти многочисленные изинговые функции и многочисленных фреймворков типа jqwery и прочих библиотек универсально. Просто добавляешь функцию к себе и вставляешь любые значения, типа из х=0 в х=500 или из х=100 в х=-200 или х=1 в х=0 и т.д.

помогите пожалуйста разобраться как этого можно достичь. большое спасибо заранее, бьюсь второй день...


Последний раз редактировалось greep; 13.01.2015 в 13:48.
Старый 13.01.2015, 01:43
dark256 вне форума Посмотреть профиль Отправить личное сообщение для dark256 Посетить домашнюю страницу dark256 Найти все сообщения от dark256
  № 2  
Ответить с цитированием
dark256
 
Аватар для dark256

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
Зачем изобретать велосипед?
https://greensock.com/tweennano-as

Привес к коду около 4 килобайт...
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2


Последний раз редактировалось dark256; 13.01.2015 в 11:40.
Старый 13.01.2015, 13:44
greep вне форума Посмотреть профиль Отправить личное сообщение для greep Найти все сообщения от greep
  № 3  
Ответить с цитированием
greep
 
Аватар для greep

Регистрация: Jun 2002
Адрес: on the backyard
Сообщений: 285
Отправить сообщение для greep с помощью ICQ
2 dark256: Спасибо большое за библиотеку. У меня тоже есть, правда чуть больше весят. Все дело в том, что если ты делаешь баннер, вес которого по техническим требованиям не должен превышать 25 кб, а клиент хочет полнометражный анимационный фильм на заданную тему, с детализированной графикой и спецэффектами, 3 кб это очень много... Даже если пропускать swf-ку через оптимайзер...

ЗЫ. Сорри, нижний кусок кода был по ошибке вставлен другой.

Суть в общем в том, чтобы дописать универсальный кусок, которым можно было бы дополнить любую изинговую функцию и получить результат.

Посмотрел вашу библиотеку, нашел там все те же формулы:

Код AS1/AS2:
return 1 - Math.pow(2, -10 * p);
Это формула из expoOut.

В классе все выглядит так:

Код AS1/AS2:
package com.greensock.easing {
	final public class ExpoOut extends Ease {
 
		/** The default ease instance which can be reused many times in various tweens in order to conserve memory and improve performance slightly compared to creating a new instance each time. **/
		public static var ease:ExpoOut = new ExpoOut();
 
		/** @inheritDoc **/
		override public function getRatio(p:Number):Number {
			return 1 - Math.pow(2, -10 * p);
		}
 
	}
 
}
Есть ощущение, что вся соль живет в

Код AS1/AS2:
getRatio(p:Number)


Последний раз редактировалось greep; 13.01.2015 в 14:13.
Старый 13.01.2015, 18:00
dark256 вне форума Посмотреть профиль Отправить личное сообщение для dark256 Посетить домашнюю страницу dark256 Найти все сообщения от dark256
  № 4  
Ответить с цитированием
dark256
 
Аватар для dark256

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
Баннеры на 25 кб тоже делаю. Поэтому и юзаю эту штуку. Пока удается впихивать.
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2

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

Регистрация: Jun 2002
Адрес: on the backyard
Сообщений: 285
Отправить сообщение для greep с помощью ICQ
Ясно, поскольку я уже не в первом месте спрашиваю, либо никто не знает, либо не хочет делиться...

Вот же... Есть куча открытых формул описанный в простых функциях, они встречаются везде и всюду. И есть тот волшебный кусок кода, который делает их универсальными, который непонятно как выделить...

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

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,112
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
greep, а типа такого не подойдет?

Код AS1/AS2:
clip.onEnterFrame = function(){
    this._x += ( _root._xmouse - this._x ) / 10;
}
Некоторая плавность будет.
__________________
hauts.ru

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

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

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


 


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


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