|
|
|||||
Tween.yoyo
нужно сделать достаточно простой эффект - выезжание меню. работать он должен примерно так - навели мышку - меню начало выезжать, убрали - уехало обратно, причем путь назад меню должно начать именно с того места, где оно было. Решил сделать на Tween'ах, как самый логичный вариант. Но столкнулся со следующей проблемой - если yoyo вызывать до того, как мувик пройдёт весь свой путь, то почему-то изменяется значение finish. Как от этого избавиться? Т.е. чтобы при повторном наведении меню должно доезжать до изначальной точки, а не до той, в которой оно остановилось в последний раз.
|
|
|||||
Непонял при чем тут yoyo если честно...
Я делал так. В меню подложи мувик с именем bt var openTime = 1; //это типа за одну секунду он открывается bt.onRollOver = bt.onDragOver = function () { var time = (200 - this._parent._x)/200; new Tween (this._parent, "_x", Strong.easeOut, this._parent._x, 200, time, true); } bt.onRollOut = bt.onDragOut = function () { var time = this._parent._x/200; new Tween (this._parent, "_x", Strong.easeOut, this._parent._x, 0, time, true); }
__________________
O God! The Aftermath. |
|
|||||
Большое спасибо за комментарий, но я решил проблему немного по другому. Этот вариант немного неудобен, т.к. приходится создавать бесконечное количество экземпляров класса Tween, которые остаются висеть в памяти. Я решил все сделать на одном экземпляре. Получилось примерно так (my_mc - это клип, который нужно двигать):
import mx.transitions.Tween; import mx.transitions.easing.*; tween_start = this['my_mc']._x; tween_finish = 350; tween_time = 2; tween_obj = this['my_mc']; sub_menu_tween = new Tween(tween_obj, "_x", none, tween_start, tween_finish, tween_time, true); // не совсем понимаю, для чего нужна следующая строка, // но без этого не работает sub_menu_tween.start(); sub_menu_tween.stop(); stop(); function showSubMenu(pos) { sub_menu_tween.continueTo(tween_finish,tween_time/(tween_finish-tween_start)*(tween_finish-sub_menu_tween.position)); } function hideSubMenu() { sub_menu_tween.continueTo(tween_start, tween_time/(tween_finish-tween_start)*(sub_menu_tween.position-tween_start)); } |
Часовой пояс GMT +4, время: 01:33. |
|
« Предыдущая тема | Следующая тема » |
|
|