Forums Développement Multimédia

Aller au contenu

Récupérer la taille d'une image?

CODE Actionscript

11 réponses à ce sujet

#1 nicolas.bonniot

    Ceinture Blanche

  • Members
  • Pip
  • 10 messages

Posté 24 October 2008 - 13:35 PM

Bonjour à tous,
Je charge dynamiquement une image externe avec le code qui suit :

Action Script

var ZoneImage:Loader = new Loader();
var TailleCoteVisionneuse:int = 600;
var Format:TextFormat = new TextFormat();
var zoneTexte:TextField = new TextField();
if (loaderInfo.parameters["photo"] == undefined)
{
var Format:TextFormat = new TextFormat();
Format.font = "Arial";
Format.color = 0xFFFFFF;
Format.size = 20;

var zoneTexte:TextField = new TextField();
zoneTexte.defaultTextFormat = Format;
zoneTexte.text = "Il y a eu un souci avec la photo que vous essayez de voir...";
zoneTexte.width = 530;
zoneTexte.height = 100;
zoneTexte.x = (TailleCoteVisionneuse - zoneTexte.width)/2;
zoneTexte.y = (TailleCoteVisionneuse - zoneTexte.height)/2;
addChild(zoneTexte);
}
else
{
ZoneImage.load(new URLRequest(loaderInfo.parameters["photo"]));
addChild(ZoneImage);
}

Ca fonctionne, mais je voudrais qu'elle s'affiche centrée. Mon aire d'affichage fait 600px*600px, et comme les photos que j'affiche sont en portrait ou en paysage, je voudrais récupérer la taille réelle de l'image que je charge. Et là ca coince. Comment faire?
J'ai essayé ca mais ca ne fonctionne pas :

Action Script

        var Image:Bitmap = new Bitmap(ZoneImage.content);
ZoneImage.x =(TailleCoteVisionneuse - Image.width)/2;
ZoneImage.y = (TailleCoteVisionneuse - Image.height)/2;

Car il récupère la taille de mon aire, soit 600*600... Alors que moi je voudrais les dimensions de l'image externe. J'ai vu sur un forum l'utilisation de la propriété "content", avec un truc comme ca : ZoneImage.content.width, mais ca ne fonctionne pas.

Que me conseillez-vous?

Merci de vos réponses !!!

Cordialement,
Nixar

#2 phil

  • Members
  • PipPipPipPipPipPipPipPip
  • 738 messages

Posté 24 October 2008 - 13:41 PM

Salut,

Essaye ZoneImage.contentLoaderInfo.width mais je ne suis pas sure de moi, car je ne me souvient pas si on peut avoir la taille d'une image qui n'est pas dans la liste d'affichage !
Arrives-tu as afficher ton image ?
Si oui il te suffit de

Action Script

addChild(ZoneImage)
zoneImage.width

A+

Modifié par ARROWPHIL, 24 October 2008 - 13:43 PM.


#3 armetiz

  • Members
  • PipPipPipPipPipPipPipPip
  • 623 messages

Posté 24 October 2008 - 15:03 PM

Hop, pour une fois que j'ai une réponse sur mon blog, icon_razz.gif

http://www.armetiz.info/programmation/lien...er-swf-charger/

Cela devrai t'aider.

#4 nicolas.bonniot

    Ceinture Blanche

  • Members
  • Pip
  • 10 messages

Posté 24 October 2008 - 16:11 PM

Bonjour et merci de vos réponses à vous 2,

@Arrowphil : ZoneImage.width me donne 0 dans ce contexte... TU vois pourquoi? Quand à ZoneImage.contentLoaderInfo.width, j'ai un message d'erreur :
Citation
Error: Error #2099: L'objet en cours de chargement n'est pas suffisamment chargé pour fournir ces informations.
at flash.display::LoaderInfo/get width()
at Test_fla::MainTimeline/Test_fla::frame1()

Qu'en penses-tu?

@armetiz : L'événement de fin de charge est ce qu'il me faut je pense à ceci près que ce qui est donné dans ton très bon lien ne fonctionne pas chez moi ! je ne passe jamais dans la méhode de fin de chargement. Je suis tout débutant en flash, y a-t-il des choses spécifiques à déclarer pour les événements?


Voici mon code :

Action Script

import flash.net.URLRequest;

var loaderB:Loader = new Loader();

loaderB.addEventListener(Event.COMPLETE, onComplete);
loaderB.load (new URLRequest ("images/AjouterPanierFr.jpg"));
addChild(loaderB);
trace(loaderB.width);

function onComplete(ev:Event):void
{
trace ("test" + ev.target.content.width + " " + ev.target.content.height);
}


Merci de vos réponses à tous les 2 !!!

Nixar

#5 dada

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 8510 messages

Posté 24 October 2008 - 16:33 PM

Salut,
Citation (armetiz @ Oct 24 2008, 04:03 PM) Voir le message
Hop, pour une fois que j'ai une réponse sur mon blog, icon_razz.gif

http://www.armetiz.info/programmation/lien...er-swf-charger/

Ton code est erroné. wink.gif
Les évènements de chargement sont envoyés par le loader.contentLoaderInfo, donc ton écouteur ne va jamais se déclencher.
Puis pour récupérer les dimensions originales de l'image ou du swf chargé, c'est aussi sur le LoaderInfo (width et height).

Ce qui donne :

Action Script

var loaderB : Loader = new Loader ();
addChild ( loaderB );
loaderB.contentLoaderInfo.addEventListener (Event.COMPLETE, onComplete);
loaderB.load (new URLRequest ("http://dada.media-box.net/elements/image1.jpg"));

function onComplete (ev : Event) : void
{
trace (ev.target.width, ev.target.height);
}
smile.gif

#6 nicolas.bonniot

    Ceinture Blanche

  • Members
  • Pip
  • 10 messages

Posté 26 October 2008 - 22:29 PM

BOnjour Dada,
MERCI beaucoup pour ta réponse, c'était bien ça... gourou.gif
Une dernière petite pour la route : maintenant que c'est centré, je voudrais que l'arrière plan du loader soit noir. J'ai mis la couleur de fond du document à noir avec le panel "properties". Ca fonctionne sous Firefox, mais pas sous IE...

Donc ma question : comment faire pour donner la couleur noire au loader?

Merci beaucoup pour ta réponse.

Cordialement,

Nixar

#7 alert

  • Members
  • PipPipPipPipPipPipPipPip
  • 1693 messages

Posté 26 October 2008 - 22:59 PM

j'ai jamais essayé mais en utilisant la proprieté opaquebackground peut etre

http://livedocs.adobe.com/flash/9.0/Action...paqueBackground

sinon il faut dessiner derriere

#8 nicolas.bonniot

    Ceinture Blanche

  • Members
  • Pip
  • 10 messages

Posté 27 October 2008 - 08:43 AM

BOnjour et merci de ta réponse,
J'ai essayé le opaquebackground que j'avais trouvé lors de mes recherches avant de poster, voici mon code :

Action Script


import flash.net.URLRequest;

var ZoneImage:Loader = new Loader();
var TailleCoteVisionneuse:int = 600;

ZoneImage.opaqueBackground = 0x000000;
addChild(ZoneImage);
ZoneImage.contentLoaderInfo.addEventListener (Event.COMPLETE, onComplete);
ZoneImage.load(new URLRequest(loaderInfo.parameters["photo"]));

function onComplete (ev : Event) : void
{
ZoneImage.x =(TailleCoteVisionneuse - ev.target.width)/2;
ZoneImage.y = (TailleCoteVisionneuse - ev.target.height)/2;
}

Mais ca ne change rien... Je l'utilise mal? Ou ce n'est pas la solution?

Merci de vos réponses !!

Cordialement,
Nixar

Modifié par Nixar, 27 October 2008 - 08:45 AM.


#9 alert

  • Members
  • PipPipPipPipPipPipPipPip
  • 1693 messages

Posté 27 October 2008 - 10:09 AM

ben en ce qui me concerne ... ce code fonctionne ...


Action Script

loaderInfo.parameters["photo"]
c'est pas ça qui te genere une erreur ?

#10 armetiz

  • Members
  • PipPipPipPipPipPipPipPip
  • 623 messages

Posté 27 October 2008 - 10:12 AM

Citation (dada @ Oct 24 2008, 03:33 PM) Voir le message
Salut,

Ton code est erroné. wink.gif
Les évènements de chargement sont envoyés par le loader.contentLoaderInfo, donc ton écouteur ne va jamais se déclencher.
Puis pour récupérer les dimensions originales de l'image ou du swf chargé, c'est aussi sur le LoaderInfo (width et height).

Ce qui donne :

Action Script

var loaderB : Loader = new Loader ();
addChild ( loaderB );
loaderB.contentLoaderInfo.addEventListener (Event.COMPLETE, onComplete);
loaderB.load (new URLRequest ("http://dada.media-box.net/elements/image1.jpg"));

function onComplete (ev : Event) : void
{
trace (ev.target.width, ev.target.height);
}
smile.gif


Merci dada, à ne pas tester le code que l'on poste, on y place des bêtises en effet.

#11 nicolas.bonniot

    Ceinture Blanche

  • Members
  • Pip
  • 10 messages

Posté 27 October 2008 - 13:01 PM

Citation (bigop @ Oct 27 2008, 09:09 AM) Voir le message
ben en ce qui me concerne ... ce code fonctionne ...

Action Script

loaderInfo.parameters["photo"]
c'est pas ça qui te genere une erreur ?


Salut Bigop,
Ca me sert à afficher la photo que je passe en paramètre via l'url de mon anim flash...
Cela semble te déplaire. Comment tu l'écrirais toi?

Merci !

Nixar

#12 alert

  • Members
  • PipPipPipPipPipPipPipPip
  • 1693 messages

Posté 27 October 2008 - 13:53 PM

non non je suis pas contre du tout ..
je cherchais ce qui pouvait te poser probleme ...



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

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