|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
FULLSCROLLBAR: AS3 SCROLLBAR CLASS
Information sur la source
Description
FullScrollbar est une classe de Scrollbar en ActionScript 3.0.
Destinée aux clips ayant un contenu verticalement étendu.
Aperçu ici:
http://www.helioflash.com/FullScrollbar
Seulement 4 paramètres :
- un clip cible
- marge supérieure par rapport aux limites de la Scène
- marge inférieure par rapport aux limites de la Scène
- position sur l'axe horizontal
La classe s'occupe du reste !
Et notamment des événements suivants:
- ROLL_OUT
- MOUSE_DOWN
- MOUSE_UP
- MOUSE_MOVE
- MOUSE_LEAVE
- MOUSE_WHEEL
- RESIZE
L'aperçu génère une erreur en local car il tente de communiquer avec la classe JavaScript "MacMouseWheel" (©Gabriel Bucknall) qui permet le scroll sous Mac OS X.
Source
- package
- {
-
-
- /*
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- ______ _________ ______
- / ____/_ __/ / / ___/______________ / / / /_ ____ ______
- / /_ / / / / / /\__ \/ ___/ ___/ __ \/ / / __ \/ __ `/ ___/
- / __/ / /_/ / / /___/ / /__/ / / /_/ / / / /_/ / /_/ / /
- /_/ \__,_/_/_//____/\___/_/ \____/_/_/_.___/\__,_/_/
-
- */
-
-
- import flash.display.Sprite;
- import flash.events.Event;
- import flash.events.MouseEvent;
- import flash.geom.Rectangle;
- import flash.geom.Matrix;
- import flash.display.GradientType;
- import flash.display.SpreadMethod;
-
-
- public class FullScrollbar extends Sprite
- {
-
-
-
- public var marginTop:int = 20;
- public var marginBottom:int = 20;
- public var targetHeight:int;
- public var target:Sprite;
-
- private var SCRB_BACKGROUND:Sprite;
- private var SCRB_HANDLER:Sprite;
- private var SCRB_status:Boolean = false;
- private var SCRB_scrollY:int = 0;
- private var SCRB_handlerY:int = 0;
- private var SCRB_maxHeight:int;
-
-
-
-
- public function KillerScrollbar()
- {
- trace("FullScrollbar: Hello!");
- };
- public function resize()
- {
- SCRB_handlerY = SCRB_HANDLER.y;
- SCRB_scrollY = 0;
- render(0);
- };
-
-
- /*
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- _ _ __
- (_)___ (_) /_
- / / __ \/ / __/
- / / / / / / /_
- /_/_/ /_/_/\__/
-
- */
-
- public function init():void
- {
-
- var matr:Matrix = new Matrix();
- matr.createGradientBox(20, 1, 0, 0, 0);
-
- SCRB_BACKGROUND = new Sprite();
- SCRB_BACKGROUND.graphics.beginGradientFill(GradientType.LINEAR, [0x999999, 0xBBBBBB], [1, 1], [0x00, 0xFF], matr, SpreadMethod.PAD);
- SCRB_BACKGROUND.graphics.drawRoundRect(0, 0, 20, 100, 20, 20);
- SCRB_BACKGROUND.graphics.endFill();
- var grid1:Rectangle = new Rectangle(1, 20, 18, 60);
- SCRB_BACKGROUND.scale9Grid = grid1;
- addChild(SCRB_BACKGROUND);
-
- SCRB_HANDLER = new Sprite();
- SCRB_HANDLER.graphics.beginGradientFill(GradientType.LINEAR, [0x444444, 0x000000], [1, 1], [0x00, 0xFF], matr, SpreadMethod.PAD);
- SCRB_HANDLER.graphics.drawRoundRect(0, 0, 20, 50, 20, 20);
- SCRB_HANDLER.graphics.endFill();
- var grid2:Rectangle = new Rectangle(1, 20, 18, 10);
- SCRB_HANDLER.scale9Grid = grid2;
- addChild(SCRB_HANDLER);
-
- SCRB_HANDLER.addEventListener( MouseEvent.MOUSE_DOWN, EVT_HANDLER_mouseDown );
- SCRB_HANDLER.addEventListener( MouseEvent.MOUSE_UP, EVT_HANDLER_mouseUp );
- this.stage.addEventListener( MouseEvent.MOUSE_WHEEL, EVT_STAGE_mouseWheel );
- this.stage.addEventListener( Event.MOUSE_LEAVE, EVT_STAGE_mouseLeave );
- this.stage.addEventListener( Event.RESIZE, EVT_STAGE_resize );
- trace("FullScrollbar: Ready");
-
- resize();
-
- };
-
-
- /*
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- __ __
- _____/ /_____ _____ ____ ___ _ _____ ____ / /______
- / ___/ __/ __ `/ __ `/ _ \ / _ \ | / / _ \/ __ \/ __/ ___/
- (__ ) /_/ /_/ / /_/ / __/ / __/ |/ / __/ / / / /_(__ )
- /____/\__/\__,_/\__, /\___/ \___/|___/\___/_/ /_/\__/____/
- /____/
- */
-
- public function EVT_STAGE_mouseWheel( e:MouseEvent ):void
- {
- SCRB_handlerY = SCRB_HANDLER.y;
- SCRB_scrollY = 0;
- var eDelta = int(e.delta);
- if( eDelta != -1 ) if( eDelta != 0 ) if( eDelta != 1 ) render( eDelta * (-6) );
- };
- public function EVT_STAGE_mouseMove( e:MouseEvent ):void
- {
- render(e.stageY);
- };
- public function EVT_STAGE_releaseOutside( e:MouseEvent ):void
- {
- SCRB_status = false;
- e.target.stage.removeEventListener( MouseEvent.MOUSE_UP, EVT_STAGE_releaseOutside );
- e.target.stage.removeEventListener( MouseEvent.MOUSE_MOVE, EVT_STAGE_mouseMove );
- };
- public function EVT_STAGE_mouseLeave( e:Event ):void
- {
- if( SCRB_status )
- {
- SCRB_status = false;
- e.target.stage.removeEventListener( MouseEvent.MOUSE_UP, EVT_STAGE_releaseOutside );
- e.target.stage.removeEventListener( MouseEvent.MOUSE_MOVE, EVT_STAGE_mouseMove );
- }
- };
- public function EVT_STAGE_resize( e:Event ):void
- {
- resize();
- };
-
-
- /*
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- __ ____ __
- / /_ ____ _____ ____/ / /__ _____ ___ _ _____ ____ / /______
- / __ \/ __ `/ __ \/ __ / / _ \/ ___/ / _ \ | / / _ \/ __ \/ __/ ___/
- / / / / /_/ / / / / /_/ / / __/ / / __/ |/ / __/ / / / /_(__ )
- /_/ /_/\__,_/_/ /_/\__,_/_/\___/_/ \___/|___/\___/_/ /_/\__/____/
-
- */
-
- public function EVT_HANDLER_mouseDown( e:MouseEvent ):void {
- SCRB_handlerY = SCRB_HANDLER.y;
- SCRB_scrollY = e.stageY;
- SCRB_HANDLER.addEventListener( MouseEvent.ROLL_OUT, EVT_HANDLER_rollOut, false, 0, true );
- e.target.stage.addEventListener( MouseEvent.MOUSE_MOVE, EVT_STAGE_mouseMove, false, 0, true );
- e.target.stage.addEventListener( MouseEvent.MOUSE_UP, EVT_HANDLER_mouseUp, false, 0, true );
- SCRB_status = true;
- };
- public function EVT_HANDLER_mouseMove( e:MouseEvent ):void
- {
- if( SCRB_status ) render( e.stageY );
- };
- public function EVT_HANDLER_rollOut( e:MouseEvent ):void
- {
- if( e.buttonDown ){
- e.target.stage.addEventListener( MouseEvent.MOUSE_UP, EVT_STAGE_releaseOutside, false, 0, true );
- }
- e.target.removeEventListener( MouseEvent.ROLL_OUT, EVT_HANDLER_rollOut );
- };
- public function EVT_HANDLER_mouseUp( e:MouseEvent ):void
- {
- SCRB_status = false;
- e.target.stage.removeEventListener( MouseEvent.MOUSE_MOVE, EVT_STAGE_mouseMove );
- e.target.stage.removeEventListener( MouseEvent.MOUSE_UP, EVT_HANDLER_mouseUp );
- };
-
-
- /*
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- __
- ________ ____ ____/ /__ _____
- / ___/ _ \/ __ \/ __ / _ \/ ___/
- / / / __/ / / / /_/ / __/ /
- /_/ \___/_/ /_/\__,_/\___/_/
-
- */
-
- public function render( Y:int ):void
- {
- targetHeight = target.height;
- SCRB_maxHeight = stage.stageHeight - marginTop - marginBottom;
- this.y = marginTop;
-
- var backgroundHeight:int = SCRB_maxHeight;
- if(backgroundHeight<40) backgroundHeight = 40;
- SCRB_BACKGROUND.height = backgroundHeight;
-
- if(target != null)
- {
- if( targetHeight > SCRB_maxHeight )
- {
-
- SCRB_HANDLER.visible = true;
- SCRB_BACKGROUND.alpha = 1;
- var yTarget:int;
- var delta:int = Y - SCRB_scrollY;
- var handlerHeight:int = Math.floor( ( backgroundHeight * SCRB_maxHeight / targetHeight) / 1 );
- if( handlerHeight < 30) handlerHeight = 30;
- SCRB_HANDLER.height = handlerHeight;
- if( delta <= -SCRB_handlerY ) delta = -SCRB_handlerY;
- if( delta > backgroundHeight - handlerHeight - SCRB_handlerY ) delta = Math.floor( backgroundHeight - handlerHeight - SCRB_handlerY );
- var SCRB_handlerNewY:int = SCRB_handlerY + delta;
- SCRB_HANDLER.y = SCRB_handlerNewY;
- yTarget = Math.floor( marginTop - ( ( SCRB_handlerNewY * ( targetHeight - SCRB_maxHeight ) / ( backgroundHeight - handlerHeight ) ) ) );
- target.y = yTarget;
-
- trace( "FullScrollbar: "+String( Math.floor(SCRB_handlerNewY * 100 / ( backgroundHeight - handlerHeight ) ) )+"%" );
- }
- else
- {
- SCRB_HANDLER.y = 0;
- SCRB_scrollY = 0;
- target.y = marginTop;
- SCRB_HANDLER.visible = false;
- SCRB_BACKGROUND.alpha = .2;
- }
-
- }
-
- };
-
-
-
-
- }
- }
package
{
/*
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
______ _________ ______
/ ____/_ __/ / / ___/______________ / / / /_ ____ ______
/ /_ / / / / / /\__ \/ ___/ ___/ __ \/ / / __ \/ __ `/ ___/
/ __/ / /_/ / / /___/ / /__/ / / /_/ / / / /_/ / /_/ / /
/_/ \__,_/_/_//____/\___/_/ \____/_/_/_.___/\__,_/_/
*/
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.geom.Rectangle;
import flash.geom.Matrix;
import flash.display.GradientType;
import flash.display.SpreadMethod;
public class FullScrollbar extends Sprite
{
public var marginTop:int = 20;
public var marginBottom:int = 20;
public var targetHeight:int;
public var target:Sprite;
private var SCRB_BACKGROUND:Sprite;
private var SCRB_HANDLER:Sprite;
private var SCRB_status:Boolean = false;
private var SCRB_scrollY:int = 0;
private var SCRB_handlerY:int = 0;
private var SCRB_maxHeight:int;
public function KillerScrollbar()
{
trace("FullScrollbar: Hello!");
};
public function resize()
{
SCRB_handlerY = SCRB_HANDLER.y;
SCRB_scrollY = 0;
render(0);
};
/*
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
_ _ __
(_)___ (_) /_
/ / __ \/ / __/
/ / / / / / /_
/_/_/ /_/_/\__/
*/
public function init():void
{
var matr:Matrix = new Matrix();
matr.createGradientBox(20, 1, 0, 0, 0);
SCRB_BACKGROUND = new Sprite();
SCRB_BACKGROUND.graphics.beginGradientFill(GradientType.LINEAR, [0x999999, 0xBBBBBB], [1, 1], [0x00, 0xFF], matr, SpreadMethod.PAD);
SCRB_BACKGROUND.graphics.drawRoundRect(0, 0, 20, 100, 20, 20);
SCRB_BACKGROUND.graphics.endFill();
var grid1:Rectangle = new Rectangle(1, 20, 18, 60);
SCRB_BACKGROUND.scale9Grid = grid1;
addChild(SCRB_BACKGROUND);
SCRB_HANDLER = new Sprite();
SCRB_HANDLER.graphics.beginGradientFill(GradientType.LINEAR, [0x444444, 0x000000], [1, 1], [0x00, 0xFF], matr, SpreadMethod.PAD);
SCRB_HANDLER.graphics.drawRoundRect(0, 0, 20, 50, 20, 20);
SCRB_HANDLER.graphics.endFill();
var grid2:Rectangle = new Rectangle(1, 20, 18, 10);
SCRB_HANDLER.scale9Grid = grid2;
addChild(SCRB_HANDLER);
SCRB_HANDLER.addEventListener( MouseEvent.MOUSE_DOWN, EVT_HANDLER_mouseDown );
SCRB_HANDLER.addEventListener( MouseEvent.MOUSE_UP, EVT_HANDLER_mouseUp );
this.stage.addEventListener( MouseEvent.MOUSE_WHEEL, EVT_STAGE_mouseWheel );
this.stage.addEventListener( Event.MOUSE_LEAVE, EVT_STAGE_mouseLeave );
this.stage.addEventListener( Event.RESIZE, EVT_STAGE_resize );
trace("FullScrollbar: Ready");
resize();
};
/*
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
__ __
_____/ /_____ _____ ____ ___ _ _____ ____ / /______
/ ___/ __/ __ `/ __ `/ _ \ / _ \ | / / _ \/ __ \/ __/ ___/
(__ ) /_/ /_/ / /_/ / __/ / __/ |/ / __/ / / / /_(__ )
/____/\__/\__,_/\__, /\___/ \___/|___/\___/_/ /_/\__/____/
/____/
*/
public function EVT_STAGE_mouseWheel( e:MouseEvent ):void
{
SCRB_handlerY = SCRB_HANDLER.y;
SCRB_scrollY = 0;
var eDelta = int(e.delta);
if( eDelta != -1 ) if( eDelta != 0 ) if( eDelta != 1 ) render( eDelta * (-6) );
};
public function EVT_STAGE_mouseMove( e:MouseEvent ):void
{
render(e.stageY);
};
public function EVT_STAGE_releaseOutside( e:MouseEvent ):void
{
SCRB_status = false;
e.target.stage.removeEventListener( MouseEvent.MOUSE_UP, EVT_STAGE_releaseOutside );
e.target.stage.removeEventListener( MouseEvent.MOUSE_MOVE, EVT_STAGE_mouseMove );
};
public function EVT_STAGE_mouseLeave( e:Event ):void
{
if( SCRB_status )
{
SCRB_status = false;
e.target.stage.removeEventListener( MouseEvent.MOUSE_UP, EVT_STAGE_releaseOutside );
e.target.stage.removeEventListener( MouseEvent.MOUSE_MOVE, EVT_STAGE_mouseMove );
}
};
public function EVT_STAGE_resize( e:Event ):void
{
resize();
};
/*
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
__ ____ __
/ /_ ____ _____ ____/ / /__ _____ ___ _ _____ ____ / /______
/ __ \/ __ `/ __ \/ __ / / _ \/ ___/ / _ \ | / / _ \/ __ \/ __/ ___/
/ / / / /_/ / / / / /_/ / / __/ / / __/ |/ / __/ / / / /_(__ )
/_/ /_/\__,_/_/ /_/\__,_/_/\___/_/ \___/|___/\___/_/ /_/\__/____/
*/
public function EVT_HANDLER_mouseDown( e:MouseEvent ):void {
SCRB_handlerY = SCRB_HANDLER.y;
SCRB_scrollY = e.stageY;
SCRB_HANDLER.addEventListener( MouseEvent.ROLL_OUT, EVT_HANDLER_rollOut, false, 0, true );
e.target.stage.addEventListener( MouseEvent.MOUSE_MOVE, EVT_STAGE_mouseMove, false, 0, true );
e.target.stage.addEventListener( MouseEvent.MOUSE_UP, EVT_HANDLER_mouseUp, false, 0, true );
SCRB_status = true;
};
public function EVT_HANDLER_mouseMove( e:MouseEvent ):void
{
if( SCRB_status ) render( e.stageY );
};
public function EVT_HANDLER_rollOut( e:MouseEvent ):void
{
if( e.buttonDown ){
e.target.stage.addEventListener( MouseEvent.MOUSE_UP, EVT_STAGE_releaseOutside, false, 0, true );
}
e.target.removeEventListener( MouseEvent.ROLL_OUT, EVT_HANDLER_rollOut );
};
public function EVT_HANDLER_mouseUp( e:MouseEvent ):void
{
SCRB_status = false;
e.target.stage.removeEventListener( MouseEvent.MOUSE_MOVE, EVT_STAGE_mouseMove );
e.target.stage.removeEventListener( MouseEvent.MOUSE_UP, EVT_HANDLER_mouseUp );
};
/*
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
__
________ ____ ____/ /__ _____
/ ___/ _ \/ __ \/ __ / _ \/ ___/
/ / / __/ / / / /_/ / __/ /
/_/ \___/_/ /_/\__,_/\___/_/
*/
public function render( Y:int ):void
{
targetHeight = target.height;
SCRB_maxHeight = stage.stageHeight - marginTop - marginBottom;
this.y = marginTop;
var backgroundHeight:int = SCRB_maxHeight;
if(backgroundHeight<40) backgroundHeight = 40;
SCRB_BACKGROUND.height = backgroundHeight;
if(target != null)
{
if( targetHeight > SCRB_maxHeight )
{
SCRB_HANDLER.visible = true;
SCRB_BACKGROUND.alpha = 1;
var yTarget:int;
var delta:int = Y - SCRB_scrollY;
var handlerHeight:int = Math.floor( ( backgroundHeight * SCRB_maxHeight / targetHeight) / 1 );
if( handlerHeight < 30) handlerHeight = 30;
SCRB_HANDLER.height = handlerHeight;
if( delta <= -SCRB_handlerY ) delta = -SCRB_handlerY;
if( delta > backgroundHeight - handlerHeight - SCRB_handlerY ) delta = Math.floor( backgroundHeight - handlerHeight - SCRB_handlerY );
var SCRB_handlerNewY:int = SCRB_handlerY + delta;
SCRB_HANDLER.y = SCRB_handlerNewY;
yTarget = Math.floor( marginTop - ( ( SCRB_handlerNewY * ( targetHeight - SCRB_maxHeight ) / ( backgroundHeight - handlerHeight ) ) ) );
target.y = yTarget;
trace( "FullScrollbar: "+String( Math.floor(SCRB_handlerNewY * 100 / ( backgroundHeight - handlerHeight ) ) )+"%" );
}
else
{
SCRB_HANDLER.y = 0;
SCRB_scrollY = 0;
target.y = marginTop;
SCRB_HANDLER.visible = false;
SCRB_BACKGROUND.alpha = .2;
}
}
};
}
}
Conclusion
Inclus avec :
- MacMouseWheel AS3 class
"Class that supports using the mouseWheel on Mac OS, requires javascript class swfmacmousewheel.js" @author Gabriel Bucknall
- swfObject
Pour afficher la preview et permettre l'utilisation de la classe AS3 MacMouseWheel.
Fichier Zip
Historique
- 01 septembre 2008 04:27:03 :
- Mise à jour de l'affichage de cette page.
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Class ActionScript [ par maitrechu ]
Bonjour, je cherche des tutoriaux sur comment se servir utilement des classes ActionScript, et de toutes les possibilités qu'elles offrent. J'ai
Liaison mouseWheel/Scrollbar navigateur perdu [ par julian696 ]
Bonjour à tous,Après quelques jours de recherche et plusieurs forums épluchés sans réponses,je tente une dernière fois de trouver une solution a mon p
AS3 importer une commande AS depuis un XML [ par ourso ]
Bonjour une petite question, qui me pose toujours un problème.J'ai besoin d'inclure quelques commandes pour le lancement d'une appli dans une balise X
AS3: couper le son d' un clip. [ par Dodjix ]
Bonjour,Voilà je m 'essai depuis peu à l'apprentissage d' AS3, mais je rencontre un problème.J'ai créer un clip avec sur un des calques une animation
scrollbar - action a repeter tant que le bouton est enfoncé [ par lapuce87 ]
Bonjour tout le monde,J'essaye de créer une scrollbar a l aide de 2 boutons (bt_down & bt_up).Actuellement, j arrive a faire en sorte de monter ou
{ et } en AS3 [ par Nainphomane ]
Salut, question bete mais pourtant ca me gonfle ^^ je n'arrive pas à entrer de { dans mon panneau Action sur Flash CS3 en actionscript 3, pourtant j'a
passage d'une variable d'un swf en AS2 à un SWF en AS3 [ par ruchercreusois ]
Bonjour J'aimerai d'un swf en AS2 passer l'adresse à afficher à GoogleMapFlashCS3 qui serait appelé par un LoadmovieNumOr _global.data n'a pas l'air d
problème actionscript 2 [ par lolosushi ]
Bonjour! j'avais déjà poser une question pour un problème de déplacement, qui est maintenant réglé mais a présent je me confronte a un autre : c'est u
Recherche composant AS3 - playlist [ par fxlamare ]
Bonsoir, Je recherche un composant AS3 (ou des idées) capable de répondre en partie à ma problématique (voire même entièrement soyons fou, je suis
élimination d'un "TextField" en as3 [ par inaden ]
Bonjour,je n'arrive pas à trouver s'il existe une fonction permettant de supprimer un champ texte crée comme cela : var monTexte:TextField = new TextF
|
Téléchargements
Logiciels à télécharger sur le même thème :
|