PDA

Просмотр полной версии : вопрос о траекториях-))


Kukoba
24.06.2005, 00:44
скажите уважаемые товарисчи;-))
я флешем занимаюсь всего то пару месяцев. и хотел бы спросить.

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

заранее спасибо;-)))

silin
24.06.2005, 00:57
глянь (http://www.actionscript.org/tutorials/advanced/Tween-Easing_Classes_Documented/index.shtml) вот

Kukoba
24.06.2005, 01:03
спасибо.., хоть я в английском не силен.., попробую разобраться.;-)))

Nirth
24.06.2005, 01:03
Path - http://www.dembicki.org/Path.as
Penner Easing - http://www.robertpenner.com/easing/

Kukoba
24.06.2005, 01:20
Ой спасибо за последнее, это как раз тошо мне надо...
А абисните ламеру..., шо такойе классы.
Я так понимаю их надо как то подключать к флешу
У меня Flash MX 2004 7.2
$-)))

Nirth
24.06.2005, 01:24
http://www.novemberain.com/livedocs/Help/UsingActionScript/00001048.html
(Кодировка UTF-8) быстро объяснить не получиться лучше купи книжку, или читай документацию

Штрек
24.06.2005, 03:00
Можешь никуда не ходить, а использовать вот этот
вот прототип /очень даже/..... Естест. мой.....
MovieClip.prototype.tween = function(prop, n_funct, izm, n_kadr, cycle,fll) {
var beg = this[prop];

arr_func = [mx.transitions.easing.Strong.easeIn, mx.transitions.easing.Strong.easeOut, mx.transitions.easing.Strong.easeInOut, mx.transitions.easing.Back.easeIn, mx.transitions.easing.Back.easeOut, mx.transitions.easing.Back.easeInOut, mx.transitions.easing.Elastic.easeIn, mx.transitions.easing.Elastic.easeOut, mx.transitions.easing.Elastic.easeInOut, mx.transitions.easing.Regular.easeIn, mx.transitions.easing.Regular.easeOut, mx.transitions.easing.Regular.easeInOut, mx.transitions.easing.Bounce.easeInOut, mx.transitions.easing.Bounce.easeInOut, mx.transitions.easing.Bounce.easeInOut];
easeType = arr_func[n_funct-1];
if (this.fl == undefined) {
this.fl = true;
}
if (this.fl) {
tw = new mx.transitions.Tween(this, prop, easeType, beg, beg+izm, n_kadr);
if(fll==1){
this.fl = false;
}
this.createEmptyMovieClip("kont", this.getNextHighestDepth());
this.kont.n = 0;
this.kont.onEnterFrame = function() {


this.n++;
if (this.n == n_kadr*cycle+1) {
this._parent.fl = true;
delete this.kont.onEnterFrame;
this.removeMovieClip();
}
};
}
tw.onMotionFinished = function() {
if (this.m == undefined) {
this.m = 0;
}
this.m++;
if (this.m == cycle) {
this.m = undefined;
}
if (cycle != undefined && this.m<cycle) {
this.yoyo();
}
};
};
//Использование
mc.tween("_x",1,300,24,1)
mc.tween("_y",1,100,24,1)
// перемещает мувик mc на 300 пикс. по X и 100 по Y
//за 24 кадра, без возвратого движ/5й параметр/
// и с опущенным флвгом, который не разрешает
//вызов метода до окончания движения...

Штрек
24.06.2005, 03:04
зы. изменяя второй параметр от 1 до 15 -
меняем стиль движения.......

Nirth
24.06.2005, 12:32
интересно почему я так ненавижу мешать AS1 и AS2 вместе...
тему перенесу в ActionScript

Kukoba
24.06.2005, 13:03
2Штрек:
Я конечно прошу прощения, но мой ламерский мозг так и не вкурил в этот код, к чему его привязать к кадру или к символу или писать его прямо в первом кадре сцены. Я так в принципе догадался, что вместо mc и MovieClip в первой строчке, нада вписать имя своего мувика, а насчет всего остального, я ушел на кухню курить;-)))
Дело в том что я когда то работал на делфи и писал достаточно простые приложения.
И мне совершенно неясно, можно ли создавать, например, новые объекты на базе мувиков, а к ним новые методы или что-то типа этого.

Например простейший код

this.myBtn_btn.onRelease = function(){
prevFrame();
};

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

On (Release) {
prevFrame();
}
и привязываю его к myBtn_btn

мне и вголову ни пришло бы никогда к методу приравнять функцию;-)))
Нада еще учиццо и учиццо;-)))
Вам - мастерам все это смешно читать конечно, но вы наверно один из немногих ресурсов, которые реально монут помочь таким как я..;-))
Простите за многотекст;-)))

Nirth
24.06.2005, 13:31
Нет код прямо так копируй в первый кадр, далее штрэк забыл написать инструкцию, так что напишу ее я.
MovieClip.prototype.tween = function(prop, n_funct, izm, n_kadr, cycle,fll)
prop - строка , отвечающая за свойство которое будем изменять( "_x","_alpha" и тд)
n_func - число, от одного до пятнадцати, наверное штрэку так было удобно, вобщем просто меняй числа смотри.
izm - не знаю что он хотел сказать этим сокращением, наверное изменение, вобщем куда сдвинуться должен (50,60, -30)
n_kadr - за какое кол во кадров
и потом две необязательные переменные,нужно ли возвращаться и флаг...

Штрек
24.06.2005, 15:08
После кода прототипа я написал как его использовать...
Цитирую:
//Использование
mc.tween("_x",1,300,24,1)
mc.tween("_y",1,100,24,1)
// перемещает мувик mc на 300 пикс. по X и 100 по Y
//за 24 кадра, без возвратого движ/5й параметр/
// и с опущенным флвгом, который не разрешает
//вызов метода до окончания движения...
Смешения AS1 и AS2 здесь нету и рядом, т.к. используется встроенный /пусть и недокументированный
класс/.

Nirth
24.06.2005, 15:15
смещение ас1 и ас2 в том что ты используешь ас2 классы и прототипную модель ас1.

DEAFFF
24.06.2005, 16:20
ничего не смешно... я вот тоже парился парился с чужими исходниками... и придумал вааапще почти универсальный метод... суть его в том что просто задаешь точки через которые объект должен пролететь в заданной последовательности... точек может быть сколько угодно... движение происходит по кривой и плавно... причем каждая точка пока объект к ней "летит" она может тоже двигаться... скорость объекта может меняться... Кажется, что задача очень сложная... но решение ее очень простое! Примеры можете посмотреть тут http://www.deaff.nm.ru/myworks/index.htm
никаких интегралов и диф. уравнений я не решал... главное надо представить что одна точка движется к другой... вот и все... а уж методов можно придумать очень много...

Nirth
24.06.2005, 16:24
мы не о смехе а о смеси As1 кода и As2

DEAFFF
24.06.2005, 18:14
виноват :)))) я просто читал первую страницу... там было это...

silin
24.06.2005, 19:04
смещение ас1 и ас2 в том что ты используешь ас2 классы и прототипную модель ас1.
а ты думаешь в AS2 модель не прототипная, а какая-то иная ?..
запись, всякий там контроль при компиляции, соответсвенно и компилятор разные, но модель все та же, как и плеер в котором оно потом живет,
если компилятор позволяет, не вижу почему бы и не мешать (если это удобно)

Nirth
24.06.2005, 20:24
общее - читабильность кода и всякие мелочи, я же не говорю что это медленно или плохо я говорю, что мне это сильно не нравиться.