Просмотр полной версии : Как сделать эффект дрожания?
Хочется сделать эффект "дрожания" мувика, когда мышка над ним оказывается.
Пишу следующий код:
on (rollOver) {
init_x=Myvik._x;
init_y=Myvik._y;
for (i=0; $i<10; $i++) {
Movyk._x=random(10)-5;
Movyk._y=random(10)-5;
}
Myvik._x=init_x;
Myvik._y=init_y;
}
Работает, но не так, как я хотел - дрожания не видно. Flash просто просчитывает все перемещения и выдаёт на экран конечное положение мувика.
А я хотел, чтоб дрожание было видно.
Видимо, надо вставить в цикл for () {} еще две функции:
обновитьСодержимоеЭкрана();
задержкаМиллиСекунд(100);
Есть ли такие? Или это как-то по другому делается?
ты лучше не кнопкой сделай, а мувиклипом. А весь свой код закинь внутрь хэндлеров onClipEvent (enterFrame) {}. А кнопку запихни внутрь самого мувика.
rollover на кнопке, насколько я понимаю, отрабатывается один раз, при каждом наезде на кнопку.
и выкинь нахрен циклы - мувик с одним кадром и так в цикле вертится.
onclipevent (enterframe) {
_x=10*Math.random()+стартовая позиция по х
_y=10*Math.random()+стартовая позиция по y
}
вот и все. синтаксис кривой, но принцип должен быть ясен.
А мне и нужно, чтобы мувик дрожал только кода на него мышкой наводят. Навели мышку на него - он вздрогнул. Ещё раз навели - ещё раз вздрогнул Ж)
Сорри, если непонятно объяснил.
LostWarrior
18.12.2002, 14:57
Тогда нужен счетчик кадров дрожания
onRollOut
----
flag=5;
----
onRollOver
----
if (flag>0){
flag--;
_x=10*Math.random()+стартовая позиция по х
_y=10*Math.random()+стартовая позиция по y
}
----
если дрожание короткое - имхо проще (и разумнее с точки зрения ресурсов) сделать простейшую покадровую анимашку фреймов так на 5.
если особо красивый изврат нужен - можно приплести эластику, но это уже ресурсы будет подгрызать...
Ну да, можно нечто вроде такого сделать:
myclip.stop();
myclip.onRollOver = function() {
myclip.play();
};
myclip.onRollOut = function() {
myclip.stop();
};
Поместить это на главную timeline, а сам myclip сделать анимацией дрожания.
Кстати, можно этот код сделать как-то покороче? В смысле, чтоб не писать каждый раз myclip.что-то-там
LostWarrior
18.12.2002, 15:43
Внутри функций можеш уже не писать.
Но он будет дрожать все время пока мышка сверху...
Или нужно в последний кадр еще stop() написать
Alexey (G-fi)
19.12.2002, 18:28
...„r„Ђ„„, „Ѓ„Ђ„Ѓ„‚„Ђ„q„…„z...
„D„|„‘ „Ѓ„‚„p„r„y„|„Ћ„~„Ђ„ѓ„„„y, „Ѓ„Ђ„ѓ„„„p„r„Ћ „Ѓ„‚„Ђ„r„u„‚„{„y, „‰„„„Ђ„q„Ќ ѓФ „y y „~„u „r„Ќ„‡„Ђ„t„y„| „x„p „x„p„t„p„~„~„Ќ„u „‚„p„x„}„u„‚„Ќ... :)
Оригинал написал(а) Alexey (G-fi)
...„r„Ђ„„, „Ѓ„Ђ„Ѓ„‚„Ђ„q„…„z...
„D„|„‘ „Ѓ„‚„p„r„y„|„Ћ„~„Ђ„ѓ„„„y, „Ѓ„Ђ„ѓ„„„p„r„Ћ „Ѓ„‚„Ђ„r„u„‚„{„y, „‰„„„Ђ„q„Ќ ѓФ „y y „~„u „r„Ќ„‡„Ђ„t„y„| „x„p „x„p„t„p„~„~„Ќ„u „‚„p„x„}„u„‚„Ќ... :)
Кодировка только арабская, а так всё хорошо Ж)
И какой-то там iframe с левым сайтом вместо файлы. Это не есть гуд Ж(
LostWarrior
19.12.2002, 19:04
на самом деле там пустой файл запакован.
У тебя все правильно, за тем что надо добавить кадры.
В первом твой скриптик. Во втором, третьем и т.д. отображается положение. В n-ом кадре возвращаемся на первый и вновь просчитываем новое положение. И т.д. Число кадров и есть твоя задердка. Думаю одного, другого хватит.
Pietrovich
20.12.2002, 23:44
на МХ
[сразу скажу что криво напишу, главное - идея]
a.onRollOver = function ()
{
_xx = _x;
_yy = _y;
onEnterFrame = function ()
{
//for (i=1; i<3; i++) //это если нужно поболе чем один вздрог за кадр
//{
_x=_xx+random(10); //random - deprecated , но так удобнее
_y=_yy+random(10);
//}
}
}
a.onRollOut = function ()
{
_x=_xx;
_y=_yy;
onEnterFrame = function ()
{
return false;
}
}
Pietrovich
20.12.2002, 23:51
Оригинал написал(а) Pietrovich
на МХ
[сразу скажу что криво напишу, главное - идея]
a.onRollOver = function ()
{
_xx = _x;
_yy = _y;
_max = 20;
rdCount=0;
onEnterFrame = function ()
{
if (drCount>_max) //это если дрожжать не до тех пор пока мышак уберут
{
_x=_xx; _y=_yy;
onEnterFrame = function () { return false; }
return false
}
//for (i=1; i<3; i++) //это если нужно поболе чем один вздрог за кадр
//{
_x=_xx+random(10); //random - deprecated , но так удобнее
_y=_yy+random(10);
drCount++
//}
}
}
a.onRollOut = function ()
{
_x=_xx;
_y=_yy;
onEnterFrame = function ()
{
return false;
}
}
Pietrovich
20.12.2002, 23:52
блин, сорри, клацнул на цитату а не на изменить :(
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.