Aide - Recherche - Membres - Calendrier
Version complète : Changer image
Centre de Formation Flash - Forums Adobe Flash > Rich media et intégration > Flex
loka
Bonjour,

Je cherche à changer une image au passage de la souris et de remettre l'image d'origine quand la souris n'est plus dessus.

J'ai essayé ainsi :

CODE
   <mx:Script>
        <![CDATA[
            private function changeImage():void {
                bt_text.load('assets/buttons_tools/TSOText_roll.swf');
            }
            private function defaultImage():void {
                bt_text.load('assets/buttons_tools/TSOText_on.swf');
            }
        ]]>
    </mx:Script>


CODE
<mx:Image source="assets/buttons_tools/TSOText_on.swf" width="70%" height="7.5%" x="0" id="bt_text" mouseOver="changeImage();" mouseOut="defaultImage();"/>


Mais quand je passe la souris sur mon image, celle-ci disparait et quand je quitte l'image, l'image loadé avec changeImage apparaît (au lieu de celle de defaultImage).

Je vois mal où est le problème, peut être qu'une vision extérieur pourra m'aider ^^

merci d'avance.
loka
J'ai l'impression que quand j'ai la souris sur mon image, il boucle sur le chargement de la nouvelle image, d'où le bug.

Comment faire donc ?
Fusion
CITATION(loka @ Jul 5 2007, 12:31 PM) *
J'ai l'impression que quand j'ai la souris sur mon image, il boucle sur le chargement de la nouvelle image, d'où le bug.

Comment faire donc ?


Un peu porcasse, mais tu peux avoir un booléen qui fera en sorte que la fonction changeImage() ne soit déclenchée qu'une fois jusqu'à ce que le curseur sorte. Mais je pense que d'autres solutions existent.
loka
En effet j'y avais pas pensé, ça peut au moins être une solution de secours si y a pas mieux ^^

merci pour cette reponse.

Je vais tester quelques trucs, si je trouve comment faire ça proprement je le posterais.
loka
Bon j'ai fini par trouver comment faire d'une autre façon, sans doute plus propre (et qui marche mieux en tout cas) qu'avec un boolean :

CODE
<mx:Script>
            <![CDATA[
                        import mx.controls.SWFLoader;
            import mx.controls.Image;
            import mx.core.SpriteAsset;
            import flash.net.URLRequest;
            import flash.display.Loader;
            import flash.events.Event;
            import flash.events.ProgressEvent;
            import flash.display.*;
            
            private var conteneurImage:Loader;
            private var imgDefaut : Image;
            private var swfloadDefaut : SWFLoader
            private var imgSurvol : Image;
            private var swfloadSurvol  : SWFLoader            
            private var imgClick : Image;
            private var swfloadClick : SWFLoader            
            
            public function test():void
            {
                
                imgDefaut = new Image();                
                swfloadDefaut = new SWFLoader();    
                imgSurvol = new Image();                
                swfloadSurvol = new SWFLoader();
                imgClick = new Image();                
                swfloadClick = new SWFLoader();
                imgDefaut.load("assets/buttons_tools/TSOButton_on.swf");    
                imgSurvol.load("assets/buttons_tools/TSOButton_roll.swf");    
                imgClick.load("assets/buttons_tools/TSOButton_down.swf");
        
                imgDefaut.addEventListener(MouseEvent.MOUSE_OVER, mouse_over);
                imgSurvol.addEventListener(MouseEvent.MOUSE_OUT, apresSurvol);
                imgSurvol.addEventListener(MouseEvent.MOUSE_DOWN, mouse_click);
                imgClick.addEventListener(MouseEvent.MOUSE_UP, mouse_over1);
                
                bt_text.addChild(imgDefaut);                
            }
            
            public function apresSurvol(evt:Event):void
            {
                bt_text.removeChild(imgSurvol);
                bt_text.addChild(imgDefaut);
            }
            
            private function mouse_over(evt:Event):void
            {        
                bt_text.removeChild(imgDefaut);
                bt_text.addChild(imgSurvol);
            }
            
            private function mouse_over1(evt:Event):void
            {        
                bt_text.removeChild(imgClick);
                bt_text.addChild(imgSurvol);
            }
            
            private function mouse_click(evt:Event):void
            {
                bt_text.removeChild(imgSurvol);
                bt_text.addChild(imgClick);
            }                
        ]]>
    </mx:Script>


Puis :
CODE
<mx:Canvas id="bt_text" width="38" height="36" creationComplete="test()">
</mx:Canvas>


merci à ceux qui se sont penché sur mon problème icon_razz.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2008 Invision Power Services, Inc.