The ScrollPane component is a nice tool to use if you need to scroll a content or a list with more than text.
If you like to have everything a bit "tweened" in the sites you developed, you will feel the scroll movement of the scrollpane a bit straightforward.
There is an easy way to get this done.
When the user is scrolling the content with the scrollbar of the ScrollPane, the component dispatch an event:
ScrollEvent.SCROLL
The idea is to stop the movement of the content when this event is dispatched using:
e.stopImmediatePropagation()
And then handle the scrolling using a tweener.
I made an simple example with the CanvasUI class I built as it is using a ScrollPane component for the content, but you can use this code for a normal ScrollPane instance.
Here is the demo and the source, code of the main class below for a quick look.
-
package {
-
-
import flash.display.Sprite;
-
import fl.events.ScrollEvent;
-
import fl.containers.ScrollPane;
-
import fl.controls.ScrollBarDirection;
-
import gs.TweenMax;
-
-
import com.soundstep.ui.layouts.*;
-
import com.soundstep.ui.*;
-
-
/**
-
* <b>Author:</b> Romuald Quantin - <a href="http://www.soundstep.com/" target="_blank">www.soundstep.com</a><br />
-
* <b>Actionscript version:</b> 3.0<br />
-
*/
-
-
public class Main extends Sprite {
-
-
//------------------------------------
-
// private properties
-
//------------------------------------
-
-
private var _canvas:CanvasUI;
-
-
//------------------------------------
-
// public properties
-
//------------------------------------
-
-
-
-
//------------------------------------
-
// constructor
-
//------------------------------------
-
-
public function Main() {
-
_canvas = new CanvasUI();
-
addChild(_canvas);
-
_canvas.canvasAlpha = .2;
-
_canvas.horizontalCenter = 0;
-
_canvas.verticalCenter = 0;
-
_canvas.width = 300;
-
_canvas.height = 300;
-
_canvas.addChildUI(new ContentText());
-
_canvas.refresh();
-
_canvas.scrollPane.addEventListener(ScrollEvent.SCROLL, scrollHandler, true);
-
}
-
-
//
-
// PRIVATE, PROTECTED, INTERNAL
-
//________________________________________________________________________________________________
-
-
private function scrollHandler(e:ScrollEvent):void {
-
e.stopImmediatePropagation();
-
switch (e.direction) {
-
case ScrollBarDirection.HORIZONTAL:
-
TweenMax.to(_canvas.scrollPane.content, .5, {x:e.position*-1});
-
break;
-
case ScrollBarDirection.VERTICAL:
-
TweenMax.to(_canvas.scrollPane.content, .5, {y:e.position*-1});
-
break;
-
}
-
}
-
-
// PUBLIC
-
//________________________________________________________________________________________________
-
-
-
-
}
-
}


Entries (RSS)