Forums Développement Multimédia

Aller au contenu

FullScreen, comportement imprévu.

CODE Actionscript

4 réponses à ce sujet

#1 jun.in.mess

    Ceinture Orange

  • Members
  • PipPipPip
  • 35 messages

Posté 10 December 2007 - 18:17 PM

Bonjour, je travaille actuellement sur un player video, malheureusement celui ci ne "m'obéit pas".
Mon problème viens du mode fullscreen, au retour à la normal il ne veut pas me resizer mon objet nomé vid. Merci d'avance de votre aide.

Action Script


private var nc:NetConnection = new NetConnection();;
private var ns:NetStream;
var vid:Video = new Video(480, 360);
var dummy:Object;
var playing_url:String;

public class Showreel extends MovieClip {
dummy = new Object();
dummy.onMetaData = metadata_handler;
nc.connect(null);
ns = new NetStream(nc);
ns.client = dummy;
ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
//ns.bufferTime(3); //<= cette ligne renvoie une erreur.
vid.attachNetStream(ns);
vid.x = 0;
vid.y = 0;
player.vid_container.doubleClickEnabled = true; //<= player et vid_container sont sur la scène.
player.vid_container.addEventListener(MouseEvent.DOUBLE_CLICK, toggle_fullscreen);
player.vid_container.addChild(vid);
}

function toggle_fullscreen(event:MouseEvent):void {
switch(stage.displayState) {
case "normal":
stage.displayState = "fullScreen";
vid.width = stage.stageWidth;
vid.height = stage.stageHeight;
break;
case "fullScreen":
stage.displayState = "normal";
vid.width = 480;
vid.height = 360;
break;
}
}


#2 dada

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 8510 messages

Posté 10 December 2007 - 20:58 PM

Salut,

tu devrais écouter l'évènement Stage.fullScreen, sinon tu ne peux pas détecter lorsqu'on sort du fullScreen avec la touche "echap".

#3 jun.in.mess

    Ceinture Orange

  • Members
  • PipPipPip
  • 35 messages

Posté 11 December 2007 - 11:52 AM

Action Script


function toggle_fullscreen(event:MouseEvent):void {
switch(stage.displayState) {
case "normal":
stage.displayState = "fullScreen";
break;
case "fullScreen":
stage.displayState = "normal";
break;
}
}

function fullscreen_listener(e:FullScreenEvent):void{
if(e.fullScreen ){
vid.width = stage.stageWidth;
vid.height = stage.stageHeight;
}else{
player.x = 0; //(stage.stageWidth * 0.5) - (player.width * 0.5);
player.y = 0; //(stage.stageHeight * 0.5) - (player.height * 0.5);
vid.width = 480;
vid.height = 360;
}
}



Le addEventListener pour fullscreen_listener est ajouter bien plus tôt dans mon côte (dans le constructeur ma document class pour être précis).

Le SWF est aligé en haut à gauche, à width et height 100%, pas de redimentionnement.
player est un movieclip, disposé sur la scène comme ça (je l'écris ainsi juste pour la représentation) : stage.player.vid_container.vid

player est afficher par défaut à "(stage.stageWidth * 0.5) - (player.width * 0.5);" en x et en y, mais en sortant du fullscreen il est placé plus haut et plus à gauche que la scène, si dans le code présedant je le replace avec (stage.stageWidth * 0.5) - (player.width * 0.5); cela ne change rien. Alors que le remettre à 0 le repositionne correctement.

Conclusion : stageWidth et stageHeight ne sont pas mis à jours correctement en sortant du fullscreen. Je vais devoir stocker ces valeurs avant de les utiliser à la sortie du mode fullscreen.



#4 dada

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 8510 messages

Posté 11 December 2007 - 19:46 PM

Salut,
Citation (jun.in.mess @ Dec 11 2007, 11:52 AM) Voir le message
Conclusion : stageWidth et stageHeight ne sont pas mis à jours correctement en sortant du fullscreen. Je vais devoir stocker ces valeurs avant de les utiliser à la sortie du mode fullscreen.

hum çà m'étonnerait fortement, à moins qu'il y ait un bug sur une version du Flash Player particulière, mais je pense pas. Le problème vient sûrement d'ailleurs.

Tu devrais peut-être poster des fichiers zippés permettant de voir le problème, çà devrait ensuite se résoudre plus rapidement (des fichiers simplifiés bien sûr, en enlevant tout le code hors de cause).

#5 jun.in.mess

    Ceinture Orange

  • Members
  • PipPipPip
  • 35 messages

Posté 12 December 2007 - 16:30 PM

Problème à la con résolu. Mais vraiment le truc con.

Action Script


function fullscreen_listener(e:FullScreenEvent):void{
if(e.fullScreen ){
vid.width = stage.stageWidth;
vid.height = stage.stageHeight;
}else{
player.x = (stage.stageWidth * 0.5) - (player.width * 0.5);
player.y = (stage.stageHeight * 0.5) - (player.height * 0.5);
vid.width = 480;
vid.height = 360;
}
}

Ce code était mauvais...
Au moment ou je calcule player.x (stage.stageWidth * 0.5) est égale à (player.width * 0.5) car vid.width est égale à stage.stageWidth. Le calcule donne forcement un résultat inadéquat.

Action Script


function fullscreen_listener(e:FullScreenEvent):void{
if(e.fullScreen ){
vid.width = stage.stageWidth;
vid.height = stage.stageHeight;
}else{
vid.width = 480;
vid.height = 360;
player.x = (stage.stageWidth * 0.5) - (player.width * 0.5);
player.y = (stage.stageHeight * 0.5) - (player.height * 0.5);
}
}

Dans ce code ci, vid récupère ses bonnes dimentions avant de calculser sa position... Problème bête et idiot donc... J'ai honte.



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP