3 ZOOMS DIFFERENTS D'UN SPRITE AVEC LA MOLETTE [AS3]
pegase31
Messages postés6138Date d'inscriptiondimanche 21 décembre 2003StatutModérateurDernière intervention 4 septembre 2013
-
14 mai 2009 à 21:10
xyzizback
Messages postés4Date d'inscriptionlundi 13 juillet 2009StatutMembreDernière intervention15 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.
//
// 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és4Date d'inscriptionlundi 13 juillet 2009StatutMembreDernière intervention15 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és576Date d'inscriptionmercredi 5 janvier 2005StatutMembreDernière intervention12 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és2Date d'inscriptionmercredi 8 mars 2006StatutMembreDernière intervention15 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és2Date d'inscriptionmercredi 8 mars 2006StatutMembreDernière intervention15 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.
pegase31
Messages postés6138Date d'inscriptiondimanche 21 décembre 2003StatutModérateurDernière intervention 4 septembre 201312 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és1Date d'inscriptionvendredi 14 février 2003StatutMembreDernière intervention15 mai 2009 15 mai 2009 à 09:55
Pourquoi cette source ??
Aucun intérêt....
pegase31
Messages postés6138Date d'inscriptiondimanche 21 décembre 2003StatutModérateurDernière intervention 4 septembre 201312 14 mai 2009 à 21:10
Questions : c'est quoi cette source, à quoi sert-elle et pourquoi ne pas l'avoir mise complète directement ?
14 juil. 2009 à 20:14
:-)
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
14 juil. 2009 à 19:31
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
19 mai 2009 à 22:30
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.
15 mai 2009 à 17:05
15 mai 2009 à 17:03
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.
15 mai 2009 à 16:39
Peg'
15 mai 2009 à 09:55
Aucun intérêt....
14 mai 2009 à 21:10
Peg'