Hejsan!
Jag håller på med ett litet projekt i flash, där man ska kunna dra runt lite olika objekt i filmen. Det fungerar bra som det är nu, men jag skulle vilja att om jag drar och släpper ett objekt så vill jag inte att det ska bli "tvärstopp" utan jag vill att den ska avstanna mjukt, typ easeOut och detta ska ju då vara beroende av hastighet och riktning.
Jag har ingen som helst aning om vad jag ska söka på eller läsa om.
du behöver nog använda dig av musens riktning skulle jag tro...
jag har tyvärr inte koll själv på hur man gör det, men det finns nog tutorials på nätet...
om du har en funktion som känner av musens riktning och sparar den i en variabel, så kan du förhoppningsvis använda det lagrade värdet som är där för att bestämma vilken riktning som det släppta objektet skall förflytta sig.
Hej,
På http://www.kammaren.com har jag en funktion som troligen liknar det du är ute efter.
Klicka på VAD ÄR KAMMAREN.
Om man för musen utanför bildytan så bromsas bildens rörelse upp.
På huvudtidslinjen:
function getmouse() {
themouse = 0-(_ymouse-508);//508=sajtens höjd
}
Hejsan då var jag tillbaka igen.
jag har läst lite och pulat fram och tillbaka, jag har faktiskt kommit en bit på vägen men jag skulle behöva en puff igen.
one.onPress = function() {
oX = this._x;
oY = this._y;
this.startDrag();
this.pr = true;
}
one.onRelease = one.onReleaseOutside = function() {
this.pr = false;
this.stopDrag();
}
one.onEnterFrame = function() {
// ox is x location of clip in previous frame (=oldx)
this.ox = this.x;
this.oy = this.y;
this.x = this._x;
this.y = this._y;
// if user is pressing this clip, set delta x based on where clip was in
// previous frame (so can tell how fast user is dragging it)
if (this.pr) {
this.dx = (this.x-this.ox)*7;
this.dy = (this.y-this.oy)*7;
// otherwise, user has let go, so add to dy for gravity, use dx and dy calculated
// while user was dragging, and then add a smaller delta to x and y each frame
} else {
this.x += this.dx/10;
this.y += this.dy/10;
this._x = this.x;
this._y = this.y;
}
}
Det här delvis en kod jag kom över på något forum (tror det var flashkit).
den gör nästan som jag vill, man kan börja dra i rutan och när man släpper så fortsätter den, men den fortsätter i all evighet och det är jag mindre intresserad av :)
Jag vill att den ska sakta stanna in efter man har släppt.
om någon har några tips så tar jag emot dem med öppna armar.
Sedan ändrar du one.EnterFrame funktionen till nåt i stil med:
one.onEnterFrame = function() {
// ox is x location of clip in previous frame (=oldx)
if( this.stopSteps > 0 ){
this.ox = this.x;
this.oy = this.y;
this.x = this._x;
this.y = this._y;
// if user is pressing this clip, set delta x based on where clip was in
// previous frame (so can tell how fast user is dragging it)
if (this.pr) {
this.dx = (this.x-this.ox)*7;
this.dy = (this.y-this.oy)*7;
// otherwise, user has let go, so add to dy for gravity, use dx and dy calculated
// while user was dragging, and then add a smaller delta to x and y each frame
} else {
this.x += this.dx/this.stopSpeed;
this.y += this.dy/this.stopSpeed;
this._x = this.x;
this._y = this.y;
}
this.stopSteps --;
this.stopSpeed += 10;
}
}
Det kanske inte fungerar precis som du vill, men det får klippet att stanna iaf.