PDA

Просмотр полной версии : flash6 и flash8


pupo4kin
09.11.2006, 16:11
при установке flash6 в семплах есть такой файл, где двигается божья коровка с помощью джойстика, управляемого мышкой. Когда отпускаешь джойстик, то он возвращается в исходное положение. Этот возврат осуществляется с помощью такого кода:

tension=0.5;
decay=0.5;
xSpeed = -knob._x*tension+(xSpeed*decay);
knob._x += xSpeed;

получаются такие своеобразные колебания.

Почему-то этот код не работает во flash8!!!!

iNils
09.11.2006, 16:29
Надо добавить
xSpeed = 0

pupo4kin
09.11.2006, 16:35
:)) всё гениальное просто!!!

СПАСИБО!!

pupo4kin
09.11.2006, 19:42
ещё одна проблема появилась! не получается создать два такких объекта. Т.е. создать получается, но выходит какая-то белиберда с возвращением...почему-то не в те точки возвращаются мувики!!

iNils
09.11.2006, 19:47
Я не умею гадать. Как и что вы там сделали я не знаю.

pupo4kin
09.11.2006, 20:10
Вот так выглядит код для муви клипа "mc":

tension =0.5;
decay =0.5;
x=mc._x;
y=mc._y;
xSpeed=0;
ySpeed=0;

onEnterFrame = function() {
r=Math.sqrt((_root._xmouse-x)*(_root._xmouse-x)+(_root._ymouse-y)*(_root._ymouse-y));
r=Math.ceil(r);
with(mc){
if (r<=50){
_x=_parent._xmouse;
_y=_parent._ymouse;
} else {
xSpeed =-_x*tension+(xSpeed*decay);
_x += xSpeed+x;
ySpeed = -_y*tension+(ySpeed*decay);
_y += ySpeed+y;
}
}
}
если на сцену поместить другой мувик, и сделать, чтобы он так же реагировал на курсор, то ничего не получается.
tension=0.5;
decay=0.5;
x=mc._x;
y=mc._y;
x1=mc1._x;
y1=mc1._y;
xSpeed=0;
ySpeed=0;
onEnterFrame=function() {
r=Math.sqrt((_root._xmouse-x)*(_root._xmouse-x)+(_root._ymouse-y)*(_root._ymouse-y));
r=Math.ceil(r);// расстояние от курсора до центра муви клипа
with(mc){
if (r<=100){
_x=_parent._xmouse;
_y=_parent._ymouse;
} else {
xSpeed =-_x*tension+(xSpeed*decay);
_x += xSpeed+x;
ySpeed = -_y*tension+(ySpeed*decay);
_y += ySpeed+y;
}
}
r=Math.sqrt((_root._xmouse-x1)*(_root._xmouse-x1)+(_root._ymouse-y1)*(_root._ymouse-y1));
r=Math.ceil(r);
with(mc1){
if (r<=50){
_x=_parent._xmouse;
_y=_parent._ymouse;
} else {
xSpeed =-_x*tension+(xSpeed*decay);
_x += xSpeed+x1;
ySpeed = -_y*tension+(ySpeed*decay);
_y += ySpeed+y1;
}
}

}

iNils
09.11.2006, 20:22
Назвать мувиклипы mc0 и mc1, а потом вставить скрипт
tension = 0.5;
decay = 0.5;
onEnterFrame = function () {
for (var i = 0; i < 2; i++) {
var mc = this["mc" + i];
if (!mc.flag) {
mc.flag = true;
mc.x = mc._x;
mc.y = mc._y;
mc.xSpeed = 0;
mc.ySpeed = 0;
}
var r = Math.ceil (Math.sqrt ((this._xmouse - mc.x) * (this._xmouse - mc.x) + (this._ymouse - mc.y) * (this._ymouse - mc.y)));
if (r < 101) {
mc._x = this._xmouse;
mc._y = this._ymouse;
} else {
mc.xSpeed = -mc._x * tension + (mc.xSpeed * decay);
mc._x += mc.xSpeed + mc.x;
mc.ySpeed = -mc._y * tension + (mc.ySpeed * decay);
mc._y += mc.ySpeed + mc.y;
}
}
};

pupo4kin
09.11.2006, 20:37
ха! с циклом я тоже делал..тока без флага...
спасибо, очень помог....буду разбираться...

pupo4kin
09.11.2006, 20:49
зайди на http://www.gringos.ru/v3/ там ещё ничего не доделано, но меню, благодаря тебе, получилось..

iNils
09.11.2006, 21:15
Посмотрел, надо либо уменьшить зону реагирования, либо растояние мужде кружками подобрать чтобы они не пересекались, либо и то и другое. А то я умудряюсь собрать в одну кучу web, logo и print.