带有滚动事件处理程序的基于 mx 或 spark 的滚动器示例

Example of mx or spark based scroller with scroll event handler

我在一个 flex 项目中工作,我需要放置一个滚动条并在滚动事件上添加一个事件处理程序。

现在的问题是我找不到任何合适的例子来完成这个。我得到的是基于 spark 的滚动条示例,但没有对应的事件处理示例,或者我得到的是基于 mx 组件的事件处理示例,但没有对应的滚动条示例!

这是我的代码,基于 SPARK -

<s:Scroller width="100%" height="100%" horizontalScrollPolicy="auto" verticalScrollPolicy="auto">
    <s:Group id="myScroller" horizontalScrollPosition="0" verticalScrollPosition="0">
        <mx:Canvas width="1800" height="970">
            <main:Main id="main" width="100%" height="100%" userActivityManager="{userActivityManager}"/>
        </mx:Canvas>
    </s:Group>
</s:Scroller>

我正在使用以下基于 SPARK 的事件处理代码 -

myScroller.addEventListener(Event.CHANGE, scrollarChange);
private function scrollarChange(evt:Event):void {
    callLater(dgScroll);
}

private function dgScroll():void {
   trace("horizontalScrollPosition value="+myScroller.horizontalScrollPosition);
}

但是代码没有进入这个 dgScroll() 方法。

基于 SPARK 的代码可以正常工作,但滚动条出现在框架的顶部而不是底部。另外 VScrollBar 实际上并没有覆盖整个屏幕,它只是位于顶部。

private function myScroll():void {
                trace("horizontalScrollPosition value="+myScroller.value);
}

<s:VGroup>
    <s:HScrollBar id="myScroller" width="100%" height="100%" change="myScroll()"/>
    <s:VScrollBar width="100%" height="100%"/>  
            <mx:Canvas width="1800" height="970">
                <main:Main id="main" width="100%" height="100%" userActivityManager="{userActivityManager}"/>
            </mx:Canvas>
</s:VGroup>

这是 MX 基于组件的滚动处理程序方法的示例 -

myList.addEventListener(ScrollEvent.SCROLL, scrollHandler);

function scrollHandler(e:ScrollEvent):void
{
//myList is scrolling
}

但是我没有得到任何适合我的代码的基于 MX 的滚动条示例。

由于 SPARK 滚动器非常适合我的目的,您是否有任何基于 SPARK 的滚动事件处理 的工作示例?将不胜感激。

处理滚动事件最好的方法是通过滚动事件或鼠标事件。如果我想在滚动条滚动时移动屏幕上的任何其他元素,那么移动将通过滚动事件或鼠标事件平滑进行。 这是代码-

import flash.events.MouseEvent;

private function onScrollarChange(event:MouseEvent):void {
    //Handle the event, for e.g. move other component accordingly
}

<s:Scroller id="myScroller" width="100%" height="100%" horizontalScrollPolicy="auto" verticalScrollPolicy="auto" mouseMove="onScrollarChange(event)">
    <s:Group id="myScrollerGroup" horizontalScrollPosition="0" verticalScrollPosition="0">
    <mx:Canvas width="1800" height="970">
        <main:Main id="main" width="100%" height="100%" userActivityManager="{userActivityManager}"/>
    </mx:Canvas>
    </s:Group>
</s:Scroller>

谢谢