2009-04-30 5 views
0

Je souhaite utiliser de petites images et les répéter comme arrière-plans pour les composants de Flex. Les composants Flex ont actuellement une propriété backgroundImage qui vous permet de transmettre une URL ou une classe à utiliser en arrière-plan. Il existe également une propriété appelée backgroundSize que vous pouvez définir comme "auto", ce qui en fait la taille de l'image, ou 100%, ce qui la fait s'étendre à la taille du composant. Aucune option de répétition. J'ai donc téléchargé une classe qui étend la classe SWFLoader appelée RepeatingImage d'ici: http://renaun.com/flex2/posts/repeatingimage/index.html Cette classe vous permet de définir une source et la répète. J'ai étendu cette classe pour avoir une source par défaut de l'image que je veux utiliser comme image d'arrière-plan, j'ai défini la nouvelle classe comme backgroundImage. et définissez backgroundSize à 100%. Je pensais que c'était une solution très intelligente pendant que je le faisais, seulement pour découvrir que cela ne fonctionne pas, Il n'y a pas d'image de fond ensemble quand je fais cela?FLEX: Répétition d'un arrière-plan sur un composant?

Alors peut-être qu'il y a quelque chose que je dois changer pour que ma méthode fonctionne ou peut-être que quelqu'un a une méthode différente, de toute façon j'aimerais pouvoir définir une image de fond répétitive sur un composant?

Merci!

+0

Je pense que peut-être la classe que vous utilisez doit étendre BitmapData (que les docs pour ne pas dire). Si oui, je me demande si quelqu'un connaît un moyen d'étendre la classe BitmapData de sorte que quand il est étiré, il répète les pixels au lieu de les étirer? –

Répondre

0

Ce site recommande l'utilisation de Degrafa. Background Image Repeat

Il semble que la plupart des solutions qui font cela impliquent manuellement une surcharge du updateDisplayList() avec le code suivant: Taken de Source

override protected function updateDisplayList(w:Number,h:Number):void 
{ 
    super.updateDisplayList(w, h); 

    graphics.clear();    
    graphics.beginBitmapFill(backgroundBitmapData);   
    graphics.drawRect(0, 0, w, h); 

    ... 
} 
Questions connexes