Bonjour
Je bosse sur un projet en flex et j'ai un problème lorsque je passe en plein écran, il y a un canvas qui prend plus de place que je le lui ai indiqué
Le plus simple c'est de vous montrer une partie du code ^^
Dans le premier canvas je rajoute une VBox dans laquelle je mettrai des images et dans le second canvas, de hauteur fixe, le numéro de la page courante et un bouton pour passer en plein écran.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <mx:Canvas id="canvas" bottom="24" top="0" left="3" right="3"> </mx:Canvas> <mx:Canvas id="footer" height="24" backgroundColor="#C1E98D" bottom="0" left="0" right="0"> <mx:Label id="page_nb" left="5" fontFamily="Verdana" fontSize="10" textAlign="center" verticalCenter="true"/> <mx:Button label="FS" click="toggleFullScreen()" fillAlphas="[1.0, 1.0]" fillColors="[#C1EF5F, #C1EF5F]" textAlign="center" right="0" bottom="0" top="0" cornerRadius="0"/> </mx:Canvas>
Je rajoute mon composant AlbumComponent, qui n'est rien d'autre qu'une VBox avec le paramètre "horizontalCenter" à 0. Au préalable, j'ai passé une référence vers mon premier canvas dans d'autres classes:
Le paramètre clipContent à false me permet de ne pas avoir d'horrible scrollBar à l'écran. Pour naviguer d'une image à l'autre, je ne joue pas avec la scrollBar mais je déplace ma VBox vers le haut avec la méthode move(x, y), du genre canvas.move(0, -300) et on à l'impression d'aller vers le bas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 //Je nettoie mon canvas Manager.getInstance().canvas.removeAllChildren(); Manager.getInstance().canvas.clipContent = false; //Je crée ma vbox var albumComponent:AlbumComponent = new AlbumComponent(); //Pour chaque page de mon album for (var i:int=0; i<this.album.getPagesNb(); i++) { //Je charge l'image var img:Image = new Image(); img.load(this.album.getPageByID(i).sourceHQ); img.doubleClickEnabled = true; img.name = String(i); //Je rajoute des événements var doubleCLickManager:SFDoubleClickManager = null; doubleCLickManager = new SFDoubleClickManager(img); doubleCLickManager.addEventListener(MouseEvent.CLICK, imgClicked); doubleCLickManager.addEventListener(MouseEvent.DOUBLE_CLICK, imgDClicked); //Je rajoute l'image dans ma vbox albumComponent.addChild(img); } this.box = albumComponent; //Je rajoute ma vbox au premier canvas Manager.getInstance().canvas.addChild(albumComponent); //J'appelle la méthode update() qui retaille mes images suivant le mode (fullscreen, zoom, etc..) update();
En mode normal, tout se passe bien: les images se retaillent bien et on peut naviguer d'une page à l'autre avec le clavier, la souris, etc.. ET il y a toujours le canvas "footer" en bas.
Mais lorsqu'on passe en plein écran, le footer disparaît.. Les images de la vbox et le canvas sont bien retaillées pourtant, comme si le footer était toujours là :/
Je suis sûr que le problème vient du clipContent mais je comprend pas .. les 2 canvas n'ont aucun lien, c'est bizarre :O En remettant clipContent à true, la scrollBar revient, tout comme le footer.
Merci de votre aide :p
Partager