Came up with something similar, expect that I don't use Mouse.addListener() / 
removeListener()
as movieclips have mouse events by default.
That way you get rid of seperate listener object --> var 
mouseDragListener:Object = new Object();

Guess it's personal preference.. both work fine.


import mx.utils.Delegate;
var drag_mc:MovieClip = this.mcTruckScrubber.mcDragControl;

// mousemove event handler
function mouseMoveHandler() {
 this.asdf.text = Math.floor(this.drag_mc._x);
}
//
// control press event handler
function dragControlPressHandler() {
 this.drag_mc.startDrag(false, 0, 0, 300, 0);
 this.onMouseMove = this.mouseMoveHandler;
}
//
// control release event handler
function dragControlReleaseHandler() {
 this.drag_mc.stopDrag();
 // manually call mousemove event to have one more update
 this.mouseMoveHandler();
 this.onMouseMove = undefined;
}
//
this.drag_mc.onPress = Delegate.create(this, this.dragControlPressHandler);
this.drag_mc.onRelease = this.drag_mc.onReleaseOutside=Delegate.create(this, 
this.dragControlReleaseHandler);


regards,
Muzak

----- Original Message ----- 
From: "Alain Rousseau" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Thursday, March 01, 2007 4:34 AM
Subject: Re: [Flashcoders] Dragging a clip gives erratic ._x numbers


> Hi Paul,
>
> checked your files and indeed the position was wrong if you dragged and 
> droped too fast. I made a simple fix to your code and now 
> it works nicely. In your onRelease function you should grab the final 
> position of your mc. Here is the code with a bit of cleaning 
> up and use of Delegate to be sure the scope is respected :
>
> import mx.utils.Delegate;
>
> var mouseDragListener:Object = new Object();
> var mcDrag:MovieClip = mcTruckScrubber.mcDragControl; // make a reference to 
> the draggable mc for easier typing
>
> // This will be used when the drag/scrubber control is moved
> mouseDragListener.onMouseMove = Delegate.create(this, setText);
>
> function setText() {
>    asdf.text = Math.ceil(this.mcDrag._x);
> };
>
>
>
> // Watch for mouse down on the scrubber control (the little vehicle icon)
> this.mcDrag.onPress = Delegate.create(this, dragMC);
>
> // When the user releases the mouse button outside the drag control area, 
> treat it like a normal release:
> this.mcDrag.onReleaseOutside = this.mcDrag.onRelease = Delegate.create(this, 
> stopDragMC);
>
>
> function dragMC(){
>    mcDrag.startDrag(false,0, 0, 300, 0);
>    // Start watching the mouse and do what the listener says:
>    Mouse.addListener(mouseDragListener);
> };
>
> function stopDragMC(){
>    mcDrag.stopDrag();
>    asdf.text = Math.ceil(this.mcDrag._x);// grab the final position of the mc
>    Mouse.removeListener(mouseDragListener);  // this stops listening to mouse 
> move goodies
> };
>
>
> enjoy !
>
>
> Alain
>
> Paul Hoza wrote:
>>
>> Thanks for the reply... I tried what you're suggesting and still see the 
>> problem.  I decided to make a quick example to see if 
>> anyone can see a problem in what I'm doing (and a demonstration of said 
>> funkiness.)  This is out of context, so I think it's 
>> working okay as a demo.  The code is included in case it sheds any light... 
>> the sample is pulled right out of my app, so it's the 
>> same controller I'm using (out of context, so there were tweaks to get it 
>> working standalone.)
>>
>>    
>> http://www.gamedevschool.com/samples/flashcoders/dragproblems/dragproblems.html
>>
>> Code:
>>    
>> http://www.gamedevschool.com/samples/flashcoders/dragproblems/dragproblems.zip
>>
>>
>> Thanks for any more insights!
>> Paul
>>
>>
>>
>> Mick G wrote:
>>> Perhaps it's doing some rounding because your mouse is sitting on half
>>> pixels and it's not noticeable to the eye (if that's even possible).  Have
>>> you tried putting a Math.ceil around the _x values to see if it helps always
>>> round the value up?
>>>
>>>
>>>
>>> On 2/28/07, David Cohn <[EMAIL PROTECTED]> wrote:
>>>>
>>>> Paul,
>>>>
>>>> I know it's no help, but I recently ran into this also and never
>>>> found a workaround...
>>>>
>>>> I'd love to know if you find one!
>>>>
>>>> --Dave
>>>>
>>>>
>>>>
>>>>
>>>> > Heya folks,
>>>> >
>>>> > This is baffling me (and making me very annoyed), and I haven't
>>>> > found an
>>>> > answer elsewhere, so here goes...
>>>> >
>>>> > I have a main movie with a custom drag "scrubber" control.  At the
>>>> > core
>>>> > of my app (Flash 8 Pro) is this scrubber that needs to simply
>>>> > return its
>>>> > position so I can use it to display the proper frame of a movie clip
>>>> > (with many frames).
>>>> >
>>>> > Problem is that dragging the scrubber in one direction very slowly
>>>> > will
>>>> > frequently get erratic and NOT just increase or decrease relevant
>>>> > to the
>>>> > drag direction.  Now, I originally thought it could be poor rounding
>>>> > math code on my part, but I finally put a text counter on the screen
>>>> > that simply displays the value of "mcTheMovieClip._x" which is the
>>>> > dragged clip.  Here's what I mean by erratic:
>>>> >
>>>> > Dragging from left to right, ._x reports:
>>>> > ..101, 102, 101, 102, 103, 104, ..
>>>> >
>>>> > What the friggin' poo??  What exactly causes a dragged movie clip to
>>>> > jump back/forth a pixel or two?  It's making an accurate,
>>>> consistently
>>>> > one-directional drag behavior to be roughly impossible!
>>>> >
>>>> > I'm miffed, but hopefully somebody has a clue on this and would be so
>>>> > kind as to throw down some helpful bits.
>>>> >
>>>> > Thanks!
>>>> > Paul Hoza
>>>>
>>>> _______________________________________________
>>>> [email protected]
>>>> To change your subscription options or search the archive:
>>>> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>>>>
>>>> Brought to you by Fig Leaf Software
>>>> Premier Authorized Adobe Consulting and Training
>>>> http://www.figleaf.com
>>>> http://training.figleaf.com
>>>>
>>> _______________________________________________
>>> [email protected]
>>> To change your subscription options or search the archive:
>>> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>>>
>>> Brought to you by Fig Leaf Software
>>> Premier Authorized Adobe Consulting and Training
>>> http://www.figleaf.com
>>> http://training.figleaf.com
>>>
>> _______________________________________________
>> [email protected]
>> To change your subscription options or search the archive:
>> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>>
>> Brought to you by Fig Leaf Software
>> Premier Authorized Adobe Consulting and Training
>> http://www.figleaf.com
>> http://training.figleaf.com
>>
>>
>>
> _______________________________________________
> [email protected]
> To change your subscription options or search the archive:
> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>
> Brought to you by Fig Leaf Software
> Premier Authorized Adobe Consulting and Training
> http://www.figleaf.com
> http://training.figleaf.com
> 


_______________________________________________
[email protected]
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com

Reply via email to