[DEBUTANT] positionnement sprite sans effet

xyzizback Messages postés 4 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 15 juillet 2009 - 15 juil. 2009 à 09:26
nickydaquick Messages postés 416 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 19 décembre 2013 - 15 juil. 2009 à 21:10
Salut tout l'monde
:-)

J'ai récupéré un script as3 à l'adresse suivante:

Je le modifie au fur et à mesure, et j'en suis là:

"
import flash.display.Sprite;
import flash.filters.BitmapFilterQuality;
import flash.filters.BlurFilter;
import flash.events.MouseEvent;

stop();

//
// Création d'un Sprite conteneur
//
var conteneur:Sprite = new Sprite();
conteneur.name = "conteneur";
this.addChild(conteneur);
conteneur.buttonMode = true; // afin d'avoir la main et nom la flèche

//
// Chargement du logo
//
var request_FK:URLRequest = new URLRequest("logoflash.png");
var logoFK:Loader = new Loader();
logoFK.load(request_FK);

//
// Ajout de l'éléments au Sprite conteneur
//
conteneur.addChildAt(logoFK,0);

//
// Positionnement du logos
//logoFK.x (this.stage.stageWidth-logoFK.width)/2; logoFK.y (this.stage.stageHeight-logoFK.height)/2;
trace("   taille de mon image= "+logoFK.width+" * "+logoFK.height);
trace("   taille du conteneur= "+conteneur.width+" * "+conteneur.height);
trace("   taille du document flash= "+this.stage.stageWidth+" * "+this.stage.stageHeight);

//
// Définition des variables, temporaires ou non
//
var tempX = logoFK.x; // position du point de transformation avant redimensionnement
var tempY = logoFK.y; // position du point de transformation avant redimensionnement
var tempW = logoFK.width; // largeur du sprite avant redimensionnement
var tempH = logoFK.height; // hauteur du sprite avant redimensionnement
var resultW = logoFK.width; // largeur obtenue par le redimensionnement
var resultH = logoFK.height; // hauteur obtenue par le redimensionnement
var ratio = 1.1; // définition du ratio fixe pour le zoom
// Attention : il est valable sur les dimensions d'origine du sprite conteneur

//
// Gestion des événements souris afin de déplacer/zoomer le conteneur
//
logoFK.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
function mouseDown(event:MouseEvent):void {
// application du filtre au rectangle.
var blur:BlurFilter = new BlurFilter();
blur.blurX = 10;
blur.blurY = 10;
blur.quality = BitmapFilterQuality.MEDIUM;
logoFK.filters = [blur];

}

logoFK.addEventListener(MouseEvent.MOUSE_UP, mouseReleased);
function mouseReleased(event:MouseEvent):void {
var cartoonSmartURL:URLRequest = new URLRequest("http://www.cartoonsmart.com");
navigateToURL( cartoonSmartURL , "_blank");
}

logoFK.addEventListener(MouseEvent.MOUSE_WHEEL, zoomCentre);
function zoomCentre(e:MouseEvent):void // Zoom sur le centre du conteneur, quelque soit sa position
{
if (e.delta > 0) //delta > 0 lorsque la molette va vers l'avant : réduction
{
logoFK.width /= ratio;
logoFK.height /= ratio;
}
else //delta < 0 lorsque la molette va vers l'arrière : agrandissement
{
logoFK.width *= ratio;
logoFK.height *= ratio;
}
logoFK.x += (tempW-logoFK.width)/2;
logoFK.y += (tempH-logoFK.height)/2;
tempX = logoFK.x;
tempY = logoFK.y;
tempW = logoFK.width;
tempH = logoFK.height;
}
"

ça fonctionne bien, cad le sprite apparaît centré puis est zoomable/dézoomable, a condition que
1) l'utilisateur clique sur une partie vide du document flash
2) l'utilisateur actionne la molette de la souris au dessus du sprite
??????
Qui plus est, les traces me renvoient des valeurs de 0 pour logoFK.width, logoFK.height, conteneur.width, conteneur.height. Comme si ces valeurs n'étaient pas encore définies...
??????

J'veux bien un peu d'aide là svp, je sèche

2 réponses

xyzizback Messages postés 4 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 15 juillet 2009
15 juil. 2009 à 09:29
Grumbleu, je trouve pas la fonction d'édition de mon post
Le script de base se trouve à
http://www.flashkod.com/codes/ZOOMS-DIFFERENTS-SPRITE-AVEC-MOLETTE-AS3_50015.aspx
0
nickydaquick Messages postés 416 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 19 décembre 2013 3
15 juil. 2009 à 21:10
Salut,

cest parce que tu accedes a ces valeurs sans que l'image ne soit chargee.

Considere le rajout d'ecouteurs d'evenements Event.INIT. Par exemple:

var request_FK:URLRequest = new URLRequest("logoflash.png");
var logoFK:Loader = new Loader();
logoFK.load(request_FK);
logoFK.contentLoaderInfo.addEventListener(Event.INIT,__imageChargee,false,0,true);

puis:

function __imageChargee(event:Event):void
{
var loaderInfo:LoaderInfo = event.target as LoaderInfo;
loaderInfo.removeEventListener(Event.INIT,__imageChargee,false);
//redimensionne ton logoFK comme tu veux ou set un flag qui te diras que tout est ok avant d'interagir avec ce logo. dans le cas ou tu as plusieurs Loader
var loader:Loader = loaderInfo.loader;

}



Salut, et bonne continuation.

http://liveplayaz.com
je suis heureux de faire partie d'une grande famille ...!
/B&
0
Rejoignez-nous