Archive for June, 2008
I was not satisfied with the previous release of the scrollbar. It was too difficult to adapt and use, and it left very little space for upgrading.
So i made a new scrollbar class, with advanced features, with the precious help of Jack Kalish. Please stop by his site at www.kalicious.com, he was very helpful for this new version of the Scrollbar Class. Thanks Kali!
By the way. These are some of the new features.
- It is now possible to use every movieclip on the stage as the components of the scrollbar. You are not forced anymore to give your object defined instance names. They can be whatever you want.
- The class is now instantiated using the New Scrollbar constructor, that takes several parameters, leaves you more freedom and gives you the possibility to choose if you want the dragged movieclip to be blurred on dragging and the velocity of the movement.
- The class now releases errors on init() if you did not declare the right components and tells you what components are missing.
- The ruler (handler) length is now proportional to the length of the object dragged, as well as mousewheel velocity.
You do not need to instantiate the class by rightclick -> linkage, anymore.
The right way to use the class is now:
import Scrollbar;
var sc:Scrollbar = new Scrollbar(text, maskmc, scrollbar.ruler, scrollbar.background, area, true, 6);
sc.addEventListener(Event.ADDED, scInit);
addChild(sc);
function scInit(e:Event):void {
sc.init();
}
This is the example i made. As suggested by Kalish, i used a Input text to change runtime the length of the text box (to check for the change in the length of the scrollbar ruler)
And here you can download the class zip package, with an example inside.
Enjoy! And as usual, any comment is welcome!
Hi all,
i release today a simple class that will make it easy to generate parallax systems. You won’t have to bother about managing the various levels, anymore.
The thing is just easy as saying “wow”.
Just declare a movieclip on your stage as an instance of ParallaxContainer (you will find the ParallaxContainer.as file in the zip), and then add to the render list the object you want to be moved as you move your mouse. It is a good practise to clean the render list every time you create it :)
Then you have to choose if you want the parallax to move horizontally, vertically or both.
However, as long as you have added every movieclip you need, use the start method and go!
This is the code used in the example. Very easy indeed as you can see.
this.clean();
this.addItem(l3, 10);
this.addItem(l2, 30);
this.addItem(l1, 100);
this.set_mode("H");
this.start();
Just a quick reference to the method addItem. The first paramter is the object to move, the second one is the “wing”. The wing is the quantity of pixels the object will move at the maximum limit of the stage (i.e. extreme left / extreme right)
This is the example.
And this, of course, is the zip package to download. Click here.
Have fun!
I was in need of a subclass of MovieClip that could rewind and forward with a simple method call. That is the result. You can specify a callback function to call after the timeline playhead cease moving. It is very raw at the moment, i am still learning. Any suggestion or modification to the code is greatly appreciated.
package
{
import flash.display.MovieClip;
import flash.events.Event;
public class AdvancedMovieClip extends MovieClip {
var dir:String = null;
var _targetframe:Number;
var _callback:Function = new Function();
var _params:Object = null;
var _numberOfFrames:Number;
public function AdvancedMovieClip():void {
super();
_numberOfFrames = this.totalFrames;
}
public function block() {
removeEventListener(Event.ENTER_FRAME, enterframeHandler);
}
public function forward(targetframe:Number = 25, callback:Function = null, params:Object = null):void {
dir = "forward";
_callback = callback;
_params = params;
_targetframe = (targetframe == 25) ? this.totalFrames : targetframe;
addEventListener(Event.ENTER_FRAME, enterframeHandler);
}
public function backward(targetframe:Number = 1, callback:Function = null, params:Object = null):void {
dir = "backward";
_callback = callback;
_params = params;
_targetframe = (targetframe == 1) ? 1 : targetframe;
addEventListener(Event.ENTER_FRAME, enterframeHandler);
}
private function enterframeHandler(e:Event):void {
switch(dir) {
case "forward":
((this.currentFrame == this.totalFrames) || (this.currentFrame == _targetframe)) ? (stopMovement()) : this.nextFrame();
break;
case "backward":
((this.currentFrame == 1) || (this.currentFrame == _targetframe)) ? (stopMovement()) : this.prevFrame();
break;
}
}
private function stopMovement() {
removeEventListener(Event.ENTER_FRAME, enterframeHandler);
if (_callback != null) {
_callback(_params);
}
}
}
}