Défilement horizontal ou vertical des objets d’affichage

Flash Player 9 et les versions ultérieures, Adobe AIR 1.0 et les versions ultérieures

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.