PDA

Просмотр полной версии : Нужна помощь в экшинскрипте


goword
31.08.2007, 15:39
http://www.flashmint.com/show-template-1980.html
очень нужно создать этот эффект - может поможите ссылкой на подобный урок или дадите нужное направление... Спасибо

chingachgoog
31.08.2007, 15:56
искать по слову "эластики" или "инерция движения".
В общем чистая физика движения начальной школы.

Eric Gurt
31.08.2007, 22:50
лан, отвечу, пока тему еще не закрыли =)

у каждой кнопки должны быть доп. переменные скорости: по Х и У.
скорость по Х и У всегда прибавляется (или вычитается :) ): (начальное положение-текущее)*0.1. К позиции кнопки каждую еденицу времени прибавляется скорость (Х к Х, У к У). Чтобы кнопка все время не дергалась - каждую ед. времени скорости делаешь *= 0.99.

Думаю, я ответил на твой вопрос.

goword
31.08.2007, 23:08
Спасибо. Как я понял это ускорение?
По запросам "эластики" или "инерция движения" - ничего не нашел

Eric Gurt
01.09.2007, 00:58
для тебя это просто 2 переменные, которые прибавляются каждый кадр к положению твоего мувика.

D12
01.09.2007, 20:51
2Goword вот держи точку опоры =) нитки сам примотаешь :)
createEmptyMovieClip("asteroid", 1);
with (asteroid) {
lineStyle(1, 0xFFFFFF, 50);
beginFill(0x6633CC, 70);
moveTo(-15, -15);
lineTo(15, -15);
lineTo(15, 15);
lineTo(-15, 15);
lineTo(-15, -15);
endFill();
}
asteroid._x = 275;
asteroid._y = 200;
///***///
var homeX:Number = asteroid._x;
var homeY:Number = asteroid._y;
var friction:Number = 0.8;
var ratio:Number = 0.3;
var speedX:Number = 0;
var speedY:Number = 0;
var HeightY:Number = 50;
var HeightX:Number = 100;
var Maxi_y:Number = homeY+HeightY;
var Min_y:Number = homeY-HeightY;
var Maxi_x:Number = homeX+HeightX;
var Min_x:Number = homeX-HeightX;
var Go:Number = 0;
///***///
asteroid.onEnterFrame = function() {
if (this.hitTest(_root._xmouse, _root._ymouse, true)) {
Go = 1;
}
if (Go == 1) {
startDrag(this);
}
if (this._x<Min_x || this._x>Maxi_x || this._y<Min_y || this._y>Maxi_y) {
Go = 2;
}
if (Go == 2) {
speedX = speedX*friction+(homeX-this._x)*ratio;
speedY = speedY*friction+(homeY-this._y)*ratio;
this._x += speedX;
this._y += speedY;
stopDrag();
}
};


2Eric Gurt Фазаны говоришь :) Хех =)

udaaff
01.09.2007, 22:18
D12, прикольная штука, переписал под себя, если кому-то интересно, мой вариант:
//
class Jamper extends MovieClip {
/**
*/
private var _x0:Number;
private var _y0:Number;
private var _xMax:Number;
private var _yMax:Number;
private var _xA:Number;
private var _yA:Number;
private var _i:Number;
/**
*/
public function Jamper() {
_x0 = _x;
_y0 = _y;
_xMax = 100;
_yMax = 50;
}
/**
*/
function onRollOver() {
onEnterFrame = null;
startDrag(false);
onMouseMove = __chekPosition;
}
//
private function __chekPosition() {
if (Math.abs(_x-_x0)>_xMax || Math.abs(_y-_y0)>_yMax) {
_i = 0;
_xA = _x-_x0;
_yA = _y-_y0;
stopDrag();
onEnterFrame = __moving;
onMouseMove = null;
}
}
//
private function __moving() {
if (Math.abs(_xA)<1 && Math.abs(_yA)<1) {
_x = _x0;
_y = _y0;
onEnterFrame = null;
}
_i += 30;
_x = _x0+_xA*Math.cos(_i*Math.PI/180);
_y = _y0+_yA*Math.cos(_i*Math.PI/180);
_xA *= .9;
_yA *= .9;
}
}

P.S. Твою формулу изменения скорости пришлось заменить на формулу с амплитудой, чтобы можно было отловить тот момент, когда мувик практически перестанет двигаться, для того, чтобы обнулить onEnterFrame. :victory:

goword
02.09.2007, 14:28
D12, спасибо вот где ме нужно реализовать этот эффект

Как же привязать к тексту эту ленточку... чтобы текст руководил ленточкой?

D12
02.09.2007, 20:11
тоесть я полагаю вам нужно чтобы ленточка была привязанна к активной кнопке на которой находится курсор ?
до завтра потерпишь ?

goword
02.09.2007, 20:35
Мне бы понять суть... Сам с радостью заделаю...
ДА и в коде D12 - сейчас разбираюсь...