Si la taille d’un objet d’affichage est trop élevée pour la zone où vous souhaitez l’afficher, vous disposez de la propriété
scrollRect
pour définir la zone visible de l’objet d’affichage. Par ailleurs, en modifiant la propriété
scrollRect
en réponse à une action de l’utilisateur, vous pouvez entraîner un défilement vers la gauche ou la droite ou vers le haut ou le bas.
La propriété
scrollRect
est une occurrence de la classe Rectangle, qui combine les valeurs requises pour définir une zone rectangulaire en tant qu’objet unique. Pour définir initialement la zone visible de l’objet d’affichage, créez une occurrence de Rectangle et affectez-la à la propriété
scrollRect
de l’objet. Par la suite, pour obtenir un défilement horizontal ou vertical, il suffit de lire la propriété
scrollRect
dans une variable Rectangle séparée et de changer la propriété voulue (par exemple, modifier la propriété
x
de l’occurrence de Rectangle pour un défilement horizontal, ou sa propriété
y
pour un défilement vertical). Vous réaffectez ensuite cette occurrence de Rectangle à la propriété
scrollRect
pour avertir l’objet d’affichage du changement de valeur.
Par exemple, le code suivant définit la zone visible d’un objet TextField nommé
bigText
dont la hauteur est trop importante pour les dimensions du fichier SWF. Lorsque l’utilisateur clique sur les deux boutons nommés
up
et
down
, les fonctions appelées entraînent le défilement vertical du contenu de l’objet TextField en modifiant la propriété
y
de l’occurrence de Rectangle
scrollRect
.
import flash.events.MouseEvent;
import flash.geom.Rectangle;
// Define the initial viewable area of the TextField instance:
// left: 0, top: 0, width: TextField's width, height: 350 pixels.
bigText.scrollRect = new Rectangle(0, 0, bigText.width, 350);
// Cache the TextField as a bitmap to improve performance.
bigText.cacheAsBitmap = true;
// called when the "up" button is clicked
function scrollUp(event:MouseEvent):void
{
// Get access to the current scroll rectangle.
var rect:Rectangle = bigText.scrollRect;
// Decrease the y value of the rectangle by 20, effectively
// shifting the rectangle down by 20 pixels.
rect.y -= 20;
// Reassign the rectangle to the TextField to "apply" the change.
bigText.scrollRect = rect;
}
// called when the "down" button is clicked
function scrollDown(event:MouseEvent):void
{
// Get access to the current scroll rectangle.
var rect:Rectangle = bigText.scrollRect;
// Increase the y value of the rectangle by 20, effectively
// shifting the rectangle up by 20 pixels.
rect.y += 20;
// Reassign the rectangle to the TextField to "apply" the change.
bigText.scrollRect = rect;
}
up.addEventListener(MouseEvent.CLICK, scrollUp);
down.addEventListener(MouseEvent.CLICK, scrollDown);
Comme le montre cet exemple, lorsque vous utilisez la propriété
scrollRect
d’un objet d’affichage, il est préférable de spécifier que Flash ou AIR doit mettre en cache le contenu de l’objet sous forme de bitmap, à l’aide de la propriété
cacheAsBitmap
. Ainsi, Flash Player et AIR n’ont pas à redessiner le contenu complet de l’objet d’affichage à chaque défilement de celui-ci, et peuvent utiliser le bitmap mis en cache pour afficher la portion concernée directement à l’écran. Pour plus d’informations, voir
Mise en cache des objets d’affichage
.