![]() |
|
||||||||||
|
|||||
|
[+1.4 06.06.08]
Регистрация: Dec 2005
Сообщений: 52
|
Здравствуйте! Есть 4 карточки на веревках, мувиклипа, принаведении они с задержкой следуют за мышкой, центры их привязаны к началам веревок (как картина на стене), при отводе мышки с любой карточки, карточка должна маятником вернуться в начальное положение, так же и призадержки мыши в мувиклипе, если мышь не двигается, он должен маятником вернуться в начальное положение, все работает, кроме эффекта маятника. Подскажите пожалуйста.
for (var i:Number = 0; i<4; i++) {
this["card"+i].onRollOver = function() {
this.x = _root._xmouse;
this.over = true;
};
this["card"+i].onRollOut = function() {
this.over = false;
};
this["card"+i].angle = 0;
this["card"+i].onEnterFrame = function() {
if (this.hit.hitTest(_root._xmouse, _root._ymouse)) {//this.over==true){
if (this.x != _root._xmouse) {
var tmpa = (this.x-_root._xmouse)/20;
if (tmpa+this.angle>this.angle+0.5) {
this.angle = this.angle+1;
} else if (tmpa+this.angle<this.angle-0.5) {
this.angle = this.angle-1;
} else {
this.angle += tmpa;
}
this._rotation = this.angle;
} else {
if (this.angle != 0) {
if (this.angle>0) {
this.angle -= Math.abs(this.angle/15);
this.over = false;
trace(this.angle);
} else if (this.angle<0) {
this.angle += Math.abs(this.angle/15);
this.over = false;
}
//this._rotation=this.angle;
}
}
//this.x=_root._xmouse;
} else {
if (this._rotation != 0) {
if (this.angle != 0) {
if (this.angle>0) {
this.angle -= Math.abs(this.angle/15);
} else if (this.angle<0) {
this.angle += Math.abs(this.angle/15);
}
}
}
}
this._rotation = this.angle;
this.x = _root._xmouse;
};
}
if (this.angle != 0) {
if (this.angle>0) {
this.angle -= Math.abs(this.angle/15);
this.over = false;
trace(this.angle);
} else if (this.angle<0) {
this.angle += Math.abs(this.angle/15);
this.over = false;
}
//this._rotation=this.angle;
}
}
//this.x=_root._xmouse;
} else {
if (this._rotation != 0) {
if (this.angle != 0) {
if (this.angle>0) {
this.angle -= Math.abs(this.angle/15);
} else if (this.angle<0) {
this.angle += Math.abs(this.angle/15);
}
}
Последний раз редактировалось Salut; 01.10.2008 в 20:13. |
|
|||||
|
[+1.4 06.06.08]
Регистрация: Dec 2005
Сообщений: 52
|
у меня на сцене 4 карточки (card), нужно чтобы при движении мышки внутри карточек они раскачивались.
|
|
|||||
|
Код не смотрел, но могу посоветовать. При наведении на маятник (onRollOver) мы допустим ставим какую-то переменную в тру. Ну или в индекс маятника, не важно. Вообщем, мы знаем, на каком маятнике находится мышка. При onRollOut ставим эту переменную в -1, допустим. Ну, значит, если этот индекс маятника неотрицательный, то в onEnterFrame смотрим на координаты курсора. Нам нужны текущие координаты и предыдущие. То есть чо-то вроде:
Если px != cx или py != cy и наш индекс маятника неотрицательный, значит мы двигаем мышью по маятнику и нужно его раскачивать. Ну я бы так сделал, не исключено что я извращенец (:
__________________
while(1) {} Последний раз редактировалось Division; 30.09.2008 в 15:19. |
|
|||||
|
Регистрация: Jul 2008
Сообщений: 31
|
Вот для одной карточки
я думаю для четырех подправите немного(я стер ваш цикл чтоб с этим не путаться) код : this["card0"].onRollOut = function() { t = 0; a = card0._rotation; b = 0; k = 10; _root.onEnterFrame = function() { this.over = false; b = a*(Math.exp(-t/3))*Math.cos(k*t); card0._rotation = b; t += 0.05; if (t>10) { card0._rotation = 0; delete this.onEnterFrame; } }; }; this["card0"].onRollOver = function() { this.x = _root._xmouse; this.over = true; }; this["card0"].angle = 0; this["card0"].onEnterFrame = function() { if (this.hit.hitTest(_root._xmouse, _root._ymouse)) {//this.over==true){ if (this.x != _root._xmouse) { var tmpa = (this.x-_root._xmouse)/20; if (tmpa+this.angle>this.angle+0.5) { this.angle = this.angle+1; } else if (tmpa+this.angle<this.angle-0.5) { this.angle = this.angle-1; } else { this.angle += tmpa; } this._rotation = this.angle; } else { if (this.angle != 0) { if (this.angle>0) { this.angle -= Math.abs(this.angle/15); } else if (this.angle<0) { this.angle += Math.abs(this.angle/15); } } } } else { if (this._rotation != 0) { if (this.angle != 0) { if (this.angle>0) { this.angle -= Math.abs(this.angle/15); } else if (this.angle<0) { this.angle += Math.abs(this.angle/15); } } } } this._rotation = this.angle; this.x = _root._xmouse; }; |
![]() |
![]() |
Часовой пояс GMT +4, время: 12:57. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| маятник |
|
|