3 ZOOMS DIFFERENTS D'UN SPRITE AVEC LA MOLETTE [AS3]

pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 - 14 mai 2009 à 21:10
xyzizback Messages postés 4 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 15 juillet 2009 - 14 juil. 2009 à 20:14
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/50015-3-zooms-differents-d-un-sprite-avec-la-molette-as3

xyzizback Messages postés 4 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 15 juillet 2009
14 juil. 2009 à 20:14
Encore moi
:-)

Je suis toujours sur ton code, j'ai modifié comme suit:

"
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 logos
//
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
??????

J'veux bien un peu d'aide là svp, je sèche
xyzizback Messages postés 4 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 15 juillet 2009
14 juil. 2009 à 19:31
Salut nextdrOp
Je suis complètement novice en action script.
Ton script va (peut-être) me permettre de zoomer/dézoomer un sprite au passage de la souris, en as3.
Par contre j'ai remarqué que ton script ne démarre QUE si l'utilisateur effectue un CLIQUE sur la fenêtre/le document flash. Le changement de taille au départ pas accessible, est-ce que tu sais pourquoi?

nCha
stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009
19 mai 2009 à 22:30
Salut,

l'évenement MOUSE_WHEEL ne marche pas sous MAC.
Il faut donc lui fournir une alternative, par exemple en utilisant les touches up & down.

Stef.
nextdrOp Messages postés 2 Date d'inscription mercredi 8 mars 2006 Statut Membre Dernière intervention 15 mai 2009
15 mai 2009 à 17:05
Sachant que le seul intérêt de ce bout de code réside dans la formule de math afin de faire un zoom par rapport à la position du curseur. Est-ce que sa place est ici ou sur le forum ? Je ne sais répondre à cette question.
nextdrOp Messages postés 2 Date d'inscription mercredi 8 mars 2006 Statut Membre Dernière intervention 15 mai 2009
15 mai 2009 à 17:03
Pas de soucis Peg.

Fais comme bon te semble. Comme j'ai utilisé d'autres sources qui répondait à la recherche "zoom molette", et que cela m'avait permis de m'aiguiller, je pensais que cela était sympa de partager en retour.

Maintenant, je n'ai pas fait ce bout de code pour le plaisir, mais pour mon travail, qui ne consiste absolument à toucher au flash d'habitude. J'ai commencé la rédaction des fichiers épurée des noms en rapport avec notre client, mais le temps me manque. Je travaille dans l'événementiel. Notre rythme est... rapide. Voir trop.

Pour vous faire patientez jusqu'à ce week end : http://www.dparchi.com/salons/64eCOEC/64eCOEC.swf

Merci pour ta compréhension.
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
15 mai 2009 à 16:39
Il serait bon d'étoffer un peu cette "source" avec au moins un fla et qui fonctionne, car sinon je vais devoir la supprimer en attendant d'avoir une version complète ..

Peg'
cs_civodul70 Messages postés 1 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 15 mai 2009
15 mai 2009 à 09:55
Pourquoi cette source ??
Aucun intérêt....
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
14 mai 2009 à 21:10
Questions : c'est quoi cette source, à quoi sert-elle et pourquoi ne pas l'avoir mise complète directement ?

Peg'
Rejoignez-nous