Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   вопрос о траекториях-)) (http://www.flasher.ru/forum/showthread.php?t=65978)

Kukoba 24.06.2005 00:44

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

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

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

silin 24.06.2005 00:57

глянь вот

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/.../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

Цитата:

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

а ты думаешь в AS2 модель не прототипная, а какая-то иная ?..
запись, всякий там контроль при компиляции, соответсвенно и компилятор разные, но модель все та же, как и плеер в котором оно потом живет,
если компилятор позволяет, не вижу почему бы и не мешать (если это удобно)

Nirth 24.06.2005 20:24

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


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

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