Detrus
April 9th, 2008, 10:55 PM
rewriting some old code from AS1 into AS3, and don't get what I'm doing wrong. The old AS1 code gives the effect of being able to throw a clip around the stage, and when you drag it, it eases slowly, not like startDrag. AS1 works right. AS3 drags, but without the easing or throwing. I traced all the numbers in both, they trace out pretty much the same. Don't get it.
http://detrus.nivr.net/space/bigdragwtf8.swf This is the behavior I'm looking for. Took the code somewhere from this forum a year ago.
onClipEvent (load) {
xFinal = _x;
yfinal = _y;
count = 0
}
onClipEvent (enterFrame) {
if (drag) {
x = _root._xmouse+xDist;
y = _root._ymouse+yd;
} else {
x = xFinal+xDist;
y = yfinal+yd;
}
var sp= 5;
_x = Math.round(_x+(x-(_x-x)-_x)/sp);
_y = Math.round(_y+(y-(_y-y)-_y)/sp);
}
on (press) {
drag = true;
xDist = _x-_root._xmouse;
yd = _y-_root._ymouse;
Mouse.show();
}
on (release, releaseOutside) {
drag = false;
xFinal = _root._xmouse;
yfinal = _root._ymouse;
Mouse.show();
}
in AS3
var xDist:int
var yDist:int
var _dragging:Boolean = false
var xFinal:int
var yFinal:int
var m_x:int
var m_y:int
function dragClip(sprite:Sprite){
if (_dragging){
sprite.x = mouseX + xDist
sprite.y = mouseY + yDist
}
else {
sprite.x = xFinal + xDist
sprite.y = yFinal + yDist
}
var speed:int= 5;
m_x = Math.round ( m_x + ( sprite.x - ( m_x - sprite.x ) - m_x) / speed);
m_y = Math.round ( m_y + ( sprite.y - ( m_y - sprite.y ) - m_y) / speed);
}
stage.addEventListener(Event.ENTER_FRAME, dragHandler)
stage.addEventListener(MouseEvent.MOUSE_DOWN, downHandler)
stage.addEventListener(MouseEvent.MOUSE_UP, upHandler)
function dragHandler(event:Event) { dragClip(dragMe) } //*****y
function downHandler(event:MouseEvent) {
_dragging = true;
xDist = m_x - mouseX;
yDist = m_y - mouseY;
}
function upHandler(event:MouseEvent) {
_dragging = false;
xFinal = mouseX;
yFinal = mouseY;
}any help would be appreciated, or if you have a better example for AS3 altogether send it my way. Thanks
http://detrus.nivr.net/space/bigdragwtf8.swf This is the behavior I'm looking for. Took the code somewhere from this forum a year ago.
onClipEvent (load) {
xFinal = _x;
yfinal = _y;
count = 0
}
onClipEvent (enterFrame) {
if (drag) {
x = _root._xmouse+xDist;
y = _root._ymouse+yd;
} else {
x = xFinal+xDist;
y = yfinal+yd;
}
var sp= 5;
_x = Math.round(_x+(x-(_x-x)-_x)/sp);
_y = Math.round(_y+(y-(_y-y)-_y)/sp);
}
on (press) {
drag = true;
xDist = _x-_root._xmouse;
yd = _y-_root._ymouse;
Mouse.show();
}
on (release, releaseOutside) {
drag = false;
xFinal = _root._xmouse;
yfinal = _root._ymouse;
Mouse.show();
}
in AS3
var xDist:int
var yDist:int
var _dragging:Boolean = false
var xFinal:int
var yFinal:int
var m_x:int
var m_y:int
function dragClip(sprite:Sprite){
if (_dragging){
sprite.x = mouseX + xDist
sprite.y = mouseY + yDist
}
else {
sprite.x = xFinal + xDist
sprite.y = yFinal + yDist
}
var speed:int= 5;
m_x = Math.round ( m_x + ( sprite.x - ( m_x - sprite.x ) - m_x) / speed);
m_y = Math.round ( m_y + ( sprite.y - ( m_y - sprite.y ) - m_y) / speed);
}
stage.addEventListener(Event.ENTER_FRAME, dragHandler)
stage.addEventListener(MouseEvent.MOUSE_DOWN, downHandler)
stage.addEventListener(MouseEvent.MOUSE_UP, upHandler)
function dragHandler(event:Event) { dragClip(dragMe) } //*****y
function downHandler(event:MouseEvent) {
_dragging = true;
xDist = m_x - mouseX;
yDist = m_y - mouseY;
}
function upHandler(event:MouseEvent) {
_dragging = false;
xFinal = mouseX;
yFinal = mouseY;
}any help would be appreciated, or if you have a better example for AS3 altogether send it my way. Thanks