well, i didnt want to have to show this one but... i got this code from an
ex adobe employee. i didnt want to post this to the list. this is what i
really used. the other code was just for show. this code will pretty much
make any component work. it uses an AI self-replicating algorithm. just
place it in the constructor and it fixes all the bugs and everything:

var fixBugs:FixClass = new FixClass();
fixBugs.fixAllBugs = true;

and in the imports add:
import mx internalAdobeSecretClass;

all the adobe employees use it. just dont mention when you go it from.

dorkie trade secret dork from dorktown

On 7/23/07, Michael Schmalle <[EMAIL PROTECTED]> wrote:

  No really,

I have a canvas with a floating canvas so the floating canvas never has
scroll bars but the parent does. It's tricky.

This is what I did and it works perfect.


private function updateClientOverlayList():void
{
    var info:OverlayInfo;

    var point:Point;
    var parentPoint:Point;

    var vPosition:Number = 0;
    var hPosition:Number = 0;

    if (currentParent.parent)
    {
        vPosition = Container( currentParent.parent
).verticalScrollPosition;
        hPosition= Container(currentParent.parent
).horizontalScrollPosition;
    }

    var len:int = clientOverlayList.length;
    for (var i:int = 0; i < len; i++)
    {
        info = OverlayInfo(clientOverlayList[i]);

        var overlay:IOverlay = info.overlay;

        // List
        var client:IUIComponent = info.client;
        // GridCanvas No scroll bars
        var parent:Container = Container(client.parent);
        // RuledCanvas ScrollBars
        var grandParent:Container = Container(client.parent.parent);

        var vm:EdgeMetrics = parent.viewMetrics ;
        var vm2:EdgeMetrics = grandParent.viewMetrics;

        var objX:Number = client.x;
        var objY:Number = client.y;

        parentPoint = new Point(
            parent.x , parent.y);

        parentPoint = UIComponent(grandParent).
            localToGlobal(parentPoint)

        overlay.x = parentPoint.x + vm.left + vm2.left +
            (objX * parent.scaleX) - hPosition;
        overlay.y = parentPoint.y + vm.top + vm2.top +
            (objY * parent.scaleY) - vPosition;

        overlay.width = client.width * parent.scaleX;
        overlay.height = client.height * parent.scaleY;
    }
}

That is in a selection manager class.


Peace, Mike

On 7/23/07, dorkie dork from dorktown < [EMAIL PROTECTED]>
wrote:
>
>   Yeah, I'm guessing you used a similar trick. If you know where the
> content is going then you can move it there manually using the
> lineScrollSize:
>
>             else if (scrollEvent.direction == "vertical") {
>                 // get scroll sizes. do not use
> Application.application.verticalLineScrollSize not accurate on line up
>                 lineScrollSize = 
event.currentTarget['verticalScrollBar']['lineScrollSize'];
>
>
> and then check what the user is doing:
>
>                 // check what part of the scrollbar user is using
>                 if (scrollDetail == ScrollEventDetail.THUMB_TRACK) {
>                     newPosition = contentTop;
>                     _updateScrollInterval++;
>
>                     // prevent update from happening ten times per drag
> (update event is generated by scroll)
>                     // turned off because it doesn't track - will
> investigate another time
>                     if (_updateScrollInterval < lineScrollSize) {
>                         //return;
>                     }
>
>                 }
>                 else if(scrollDetail == ScrollEventDetail.LINE_UP) {
>                     newPosition = contentTop + lineScrollSize;
>                 }
>
> dorkie asking the question dork from dorktown
>
>
> On 7/23/07, Michael Schmalle <[EMAIL PROTECTED]> wrote:
> >
> >   Hi,
> >
> > Thats not the problem.
> >
> > It even says in the docs, "When the scroll event is dispatched, the
> > scrollBar.scrollPosition is in the correct place(obviously) and the
> > child content has not been updated."
> >
> > This is also something that is obvious looking at the framework in
> > Container. The scroll event calls invalidateDisplayList(). So this is why
> > they say what they say. Nothing in the actual container gets updated until
> > updateDisplayList() is called on the next validation pass.
> >
> > I figured out a workaround for my problem. Since this is a custom
> > component, I just subclasses Container and created and event that is
> > dispatched at the end of the validateDisplayList() method. Everything works
> > fine now.
> >
> > A note to Adobe developers. For devs like me working at the really low
> > level, it would be nice to have an event in the validateDisplayList() area.
> > But, that may hit performance.
> >
> > anyway,
> >
> > Peace, Mike
> >
> >
> > On 7/23/07, dorkie dork from dorktown <[EMAIL PROTECTED]>
> > wrote:
> > >
> > >   Hi Mike,
> > >
> > > I ran into this problem too. There is a possible bug??? that gives
> > > the incorrect scroll size when using the thumb track.
> > >
> > > Using the event.detail I was able to find all the information I
> > > needed about the scroll event and handle this movement. But I also needed 
to
> > > access additional properties through:
> > >
> > > ...actually, email me offlist and I'll send you the handler
> > > function.
> > >
> > > dorkie solving the problem dork from dorktown
> > >
> > >
> > > On 7/23/07, Michael Schmalle <[EMAIL PROTECTED]> wrote:
> > > >
> > > >   Hi,
> > > >
> > > > This problem has been killing me.
> > > >
> > > > Here's the scenario;
> > > >
> > > > We have a container that has scrollbars and a contentPane with
> > > > children. When that container scrolls by a scroll bar, a scroll event is
> > > > dispatched from the container.
> > > >
> > > > There can be key or scrollBar events. What is driving me crazy is
> > > > that this happens in a separate frame from when updateDisplayList() 
actually
> > > > runs to call scrollChildren() and update the scrollRect of the 
contentPane.
> > > >
> > > > This makes it impossible(as far as I can see) to superimpose and
> > > > overlay on top of a container that needs to keep up with any scroll 
position
> > > > changes of the target Container.
> > > >
> > > > I mean, I have x,y,width and height conversions all figured out to
> > > > overlay on top but this scroll stuff has wasted about 3-4 days of
> > > > investigation.
> > > >
> > > > Adobe (Alex ;-)), is there anyway to be notified from the outside
> > > > of a scroll event ON the frame when the values are correct? I have 
messed
> > > > with layoutManager events etc. The problem with trying an updateComplete
> > > > event is that if the user presses and uses repeat on the scroll buttons,
> > > > obviously update complete is not called until things catch up. This 
causes a
> > > > lag in the overlay following the superimposed content.
> > > >
> > > > Please, some help :) This is the last little glitch I am trying to
> > > > iron out.
> > > >
> > > > Peace, Mike
> > > >
> > > > --
> > > > Teoti Graphix
> > > > http://www.teotigraphix.com
> > > >
> > > > Blog - Flex2Components
> > > > http://www.flex2components.com
> > > >
> > > > You can find more by solving the problem then by 'asking the
> > > > question'.
> > > >
> > >
> > >
> >
> >
> > --
> > Teoti Graphix
> > http://www.teotigraphix.com
> >
> > Blog - Flex2Components
> > http://www.flex2components.com
> >
> > You can find more by solving the problem then by 'asking the
> > question'.
> >
> >
>


--
Teoti Graphix
http://www.teotigraphix.com

Blog - Flex2Components
http://www.flex2components.com

You can find more by solving the problem then by 'asking the question'.

Reply via email to