Quand vous visionnez une image qui dépasse de l'espace de l'écran, il vous faut utiliser les barres de défilement pour vous déplacer sur l'image, il existe aussi la solution d'automatiser ce déplacement en fonction de la position du curseur (
evt.stageX).
Voiçi donc un exemple de cette fonction qui utilise l'évènement
MOUSE_MOVE.
Cette fonction est assez facile à mettre en oeuvre avec quelques calculs, il suffit de connaitre la taille de l'image et de l'espace de travail, le mieux étant de se mettre en plein écran.
Remarque 1:
Nous récupérons la taille de m'image avec les méthodes
contentWidth et
contentHeight, il est important de récupérer ces méthode une fois le chargement de l'image terminée (Event.COMPLETE) sinon ecla ne fonctionne pas.
Remarque 2:
Si vous travaillez en plein écran dans ce cas il faut récupérer la résolution de l'écran avec
Capabilities.screenResolutionX ,
Remarque 3:
Ce code fonctionnne bien en utilisation normale.
Le code source:
http://www.progs.fr/exemple/08101202/code/index.html
Démonstration:
http://www.progs.fr/exemple/08101202/dean.html
Le mxml:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
viewSourceURL="source/index.html"
applicationComplete="init()"
>
<mx:Script source="test.as" />
</mx:Application>
Le fichier test.as
import mx.controls.Image;
private var im:Image;
private var largeurIm:int;
private var hauteurIm:int;
private var largeurEcran:int;
private var hauteurEcran:int;
private var posMaxPleinEcranX:int;
private var posMaxPleinEcranY:int;
private function init():void{
im = new Image();
im.source="photo.JPG";
im.addEventListener(Event.COMPLETE,finChargement);
addChild(im);
}
private function finChargement(e:Event):void{
largeurIm=im.contentWidth;
hauteurIm=im.contentHeight;
largeurEcran = systemManager.stage.stageWidth;
hauteurEcran = systemManager.stage.stageHeight;
posMaxPleinEcranX = largeurIm-largeurEcran;
posMaxPleinEcranY = hauteurIm-hauteurEcran;
im.addEventListener(MouseEvent.MOUSE_MOVE,deplace);
}
private function deplace(evt:MouseEvent=null):void{
var xx:int;
var yy:int;
xx=-(evt.stageX-largeurEcran/2)
yy=-(evt.stageY-hauteurEcran/2)*2
if(xx<(largeurEcran-largeurIm)) xx=largeurEcran-largeurIm-17;
if(xx>=0)xx=0;
if(yy<(hauteurEcran-hauteurIm)) yy=hauteurEcran-hauteurIm-17;
if(yy>=0)yy=0;
im.x=xx;
im.y=yy;
}