Bonjour,

Me voici face à un problème assez bizarre. Pendant ma formation, le formateur nous a laissé des cours sur flash et AS3, je tente d'utiliser un de ces tutoriels pour mettre en place le background de mon animation extensible et rétractable selon la taille du navigateur.

Le code fonctionne parfaitement bien, seulement, il me laisse une marge noire en haut, en bas, à droite et à gauche selon le rétrécissement ou l'élargissement.

J'aimerais donc savoir si quelqu'un peut m'aider à modifier ce code, pour que l'image utilisée en background perde ses propriétés de hauteur et de largeur pour utiliser la totalité du navigateur, même si l'image doit être déformée.

Voici le code :
fond est l'occurence de mon background
----------------------------------------------------------------------------------
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;

fond.x = 0;
fond.y = 0;
fond.width = stage.stageWidth;
fond.height = stage.stageHeight;

stage.addEventListener( Event.RESIZE, repositionner );

function repositionner(e:Event):void{

var nouveauX:Number = (stage.stageWidth - width) / 2;
var nouveauY:Number = (stage.stageHeight - height) / 2;
fond.x = 0;
fond.y = 0;
fond.width = stage.stageWidth;
fond.height = stage.stageHeight;
}

repositionner(null);
----------------------------------------------------------------------------------

Merci pour votre aide.
Modifié par Make In Design (18 Nov 2010 - 19:50)
Hello

À essayer dans un nouveau document. Ne place rien sur la scène de Flash ou dans la biblio.
Le background est scripté ( 100% prog ).

Avec redimensionnement »

var fond:Sprite = new Sprite();
fond.graphics.beginFill (0xFF0000);
fond.graphics.drawRect (0 , 0, stage.stageWidth, stage.stageHeight);
addChild (fond);
// --
stage.scaleMode = StageScaleMode.EXACT_FIT;

Sans redimensionnement »

var fond:Sprite = new Sprite();
fond.graphics.beginFill (0xFF0000);
fond.graphics.drawRect (0 , 0, stage.stageWidth, stage.stageHeight);
addChild (fond);
// --
stage.scaleMode = StageScaleMode.NO_SCALE;

Certaines variables comme nouveauX et nouveauY ne sont pas utiliser dans ton script.
Tu écrit deux fois fond.width = stage.stageWidth de même pour fond.height ce qui est inutile ici.

Tu ne peut de même écrire : (stage.stageWidth - width ) / 2; De même pour la hauteur.

En un mot tu ne peut pas utiliser une propriété sans que celle-ci ne sois rattachée à un objet graphique.
Exemple : fond.x, fond.width, fond.alpha etc.

Non pas : -width / 2 : sans objets graphiques - mais plutôt : ( stage.stageWidth - fond.width ) / 2;

++
Modifié par zardoz (21 Nov 2010 - 00:20)
Merci pour ton aide, je vais tenter de faire comme tu m'explique, et si je réussit toujours pas à avoir le rendu que je désire, je testerais par rapport au lien que j'ai posté, et si je parviens toujours pas à avoir le rendu désiré, je reviendrais vers vous...
Hello

Si tu doit obligatoirement utiliser un évènementiel » comme ceci.

var fond:Sprite = new Sprite();
fond.graphics.beginFill (0xFF0000);
fond.graphics.drawRect (0 , 0, stage.stageWidth, stage.stageHeight);
addChild (fond);
// --
stage.addEventListener (Event.RESIZE, redimension);
// --
function redimension (e:Event):void
{
	stage.scaleMode = StageScaleMode.EXACT_FIT;
}


++
Modifié par zardoz (18 Nov 2010 - 19:23)
Ou ceci pour un rendu pédagogique

var fond:Sprite = new Sprite();
fond.graphics.beginFill (0xFF0000);
fond.graphics.drawRect (0 , 0, stage.stageWidth, stage.stageHeight);
addChild (fond);
// --
function redimensionner ($onOff:Boolean):void
{
   var onOff:Boolean = $onOff;
   // --
   switch (onOff)
   {
      case true :
        stage.scaleMode = StageScaleMode.EXACT_FIT;
        break;
      case false :
        stage.scaleMode = StageScaleMode.NO_SCALE;
        break;
        default :
    }
}
// true : redimensionne
// false : ne redimensionne pas
redimensionner (true);


++
Modifié par zardoz (21 Nov 2010 - 00:21)