begin process at 2012 05 26 16:00:37
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Flash / Flash MX

 > 

Scripts

 > 

ActionScript

 > 

as3 : vérifier la postion d'un clip


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

as3 : vérifier la postion d'un clip

mercredi 17 février 2010 à 09:37:24 | as3 : vérifier la postion d'un clip

nray

Bonjour à tous,

Le but final de mon programme est de déplacer des clips (start & stop drag ok) et de les positionner au bon endroit afin de reconstituer une image. Je cherche à vérifier le position des images avec leur position finale pour appliquer un effet "collé magnétique" si la pièce en est proche.

Mon blocage se situe à ce niveau : je dois récupérer (après avoir indiqué les valeurs finale dans un tableau)les valeurs finales, faire en sorte qu'elles se situent ou qu'elles se recalculent en fonction des coordonnées maximales que j'impose à ma scène, puis que je vérifie la position actuelle de mon clip relâché avec sa position finale que j'ai défini dans un tableau et appliquer l'effet "collé magnétique" à ma pièce si elle est proche de sa version finale...

J'ai essayé beaucoup de solutions mais je ne sais plus quelle piste emprunter, je suis coincée... Pouvez-vous m'aider???

Une partie de mon code :

var nbPieceOk:Number=0;
var ecartBordGaucheX:Number=10;//écart d bord gch de chq piece
var ecartBordGaucheY:Number=140;//écrat en hauteur de chq piece

var placeX:Number;
var placeY:Number;

var posX:uint=140, posY:uint=115;

var TableaulistePiecesEnX:Array=new Array();
var TableaulistePiecesEnY:Array=new Array();
var puzzlePiecesTableau:Array=new Array();
var puzzlePiecesTrouve:Array=new Array();

for (var i:Number = 0; i < nbPiecesPuzzles; i++) {

//création d'un clip vide conteneur et création d'1 movieClip pour chaque piece et placer chacun d'eux
var conteneurPiecesPuzzle:Loader=new Loader();
var clipConteneurPiece:Sprite = new Sprite();

//coordonnées finales de chq piece de puzzle

clipConteneurPiece.x=ecartBordGaucheX+(posX*i);
clipConteneurPiece.y=ecartBordGaucheY+(posY*i); //avec posX=140 et pos Y=115
trace("position finale clipConteneurPiece.x="+clipConteneurPiece.x);
trace("position finale clipConteneurPiece.y="+clipConteneurPiece.y);
var positionFinalePieceX:Number=clipConteneurPiece.x;
var positionFinalePieceY:Number=clipConteneurPiece.y;
trace("positionFinalePieceX="+positionFinalePieceX);
trace("positionFinalePieceY="+positionFinalePieceY);



//placement piece dans tableau qui contient coordonnées de toutes les pieces
TableaulistePiecesEnX.push(clipConteneurPiece.x);
TableaulistePiecesEnY.push(clipConteneurPiece.y);
trace("TableaulistePiecesEnX="+TableaulistePiecesEnX);
trace("TableaulistePiecesEnY="+TableaulistePiecesEnY);

//placement aléatoire des pieces sur la scène
clipConteneurPiece.x=Math.floor(Math.random()*(700-10));
clipConteneurPiece.y=Math.floor(Math.random()*(460-10));
adressePiecesPuzzle.url=dossierImage+nomPuzzleChoisi.piece[i];

//chargement du loader et des pieces
conteneurPiecesPuzzle.load(adressePiecesPuzzle);
trace ("pieces"+nomPuzzleChoisi.piece[i]);
//trace ("2dernier chiffre = "+nomPuzzleChoisi.piece[i].substr(27,2));
clipConteneurPiece.name="piece n°"+i; //clipConteneurPiece.name=String(i);
trace("clipConteneurPiece.name = "+clipConteneurPiece.name);
//ajout sur la scene
addChild(clipConteneurPiece);
clipConteneurPiece.addChild(conteneurPiecesPuzzle);

var numeroPiecePuzzle:Number=i;
trace ("numeroPiecePuzzle="+numeroPiecePuzzle);
//placement de chaque piece dans un tableau puis dans un autre avec leur nom pour vérifiaction comptabilisation
puzzlePiecesTableau.push(clipConteneurPiece);
puzzlePiecesTrouve.push(numeroPiecePuzzle);

clipConteneurPiece.addEventListener(MouseEvent.MOUSE_DOWN,deplacementPiece);
clipConteneurPiece.addEventListener(MouseEvent.MOUSE_UP,stopDeplacementPiece);


}

function deplacementPiece(evt:MouseEvent){
evt.currentTarget.startDrag(false, new Rectangle(0,0, stage.stageWidth, stage.stageHeight));//zoneLimite

trace ("piece cliquée "+evt.currentTarget.name);
}


function stopDeplacementPiece (evt:MouseEvent){
//arret deplacement piece
stopDrag();
var coordXDepose:Number = evt.currentTarget.x; //evt.currentTarget
var coordYDepose:Number = evt.currentTarget.y; //evt.currentTarget
trace("coordXDepose="+coordXDepose);
trace("coordYDepose="+coordYDepose);
ecartBordGaucheX+=140;
if (ecartBordGaucheX>700){
ecartBordGaucheX=10;
ecartBordGaucheY+=115;
}
var decalHoriz:Number = Math.abs(ecartBordGaucheX-coordXDepose); //lorsque les pièces s'approchent de leur emplacement prévus
var decalVertic:Number = Math.abs(ecartBordGaucheY-coordYDepose);//décalage et mise place "magnétique"
if (decalHoriz<25 && decalVertic<55) {
stage.removeEventListener(MouseEvent.MOUSE_UP,stopDeplacementPiece);
evt.currentTarget.x = ecartBordGaucheX;
evt.currentTarget.y = ecartBordGaucheY;
nbPieceOk--;
trace("nbPieceOk ="+nbPieceOk);

}
}


Cette discussion est classée dans : var, position, number, array, finale


Répondre à ce message

Sujets en rapport avec ce message

Chifres aléatoires non répétés [ par n_lefebvre ] Salut,Je débute un peu dans Flash et ActionS. Je dévelope un clip qui doit attribuer 22 chiffres de maniere aléatoire a dans un liste en Array, mais i If "valeur" est dans array() .... [ par mattdelavega ] BonjourJ'ai des tableaux avec tous les départements françaisCeux ci sont répartis en 4 Zones : var Zone_1 = new Array chemin d'un clip [ par atchoumdu51 ] Bonjour Je crée une class , il faut que celle-ci connaisse son chemin sur le swf. j'ai cherché dans l'aide et j'ai trouvé _target qui semblait corresp slideshow..... [ par walloudtn ] Bonjour! J'espère que vous allez m'aider! j'ai fait un petit album,il fonctionne mais le problème est qu'il ne se lit pas en boucle,je croix qu'il ya menu style mac [ par robertours ] Salut, je tente actuellement d'uitiliser un menu au design mac.Pour les icones de gauche, tout se passe a peu près bien, mais si on approche du menu p images superposées [ par SpicyJR ] Voici mon code qui me permet de charger en rafalle des images.Pour le moment, les images se chargent et se superposent, aussi, pour pouvoir les décale Je suis vraiment débutant [ par faldo1 ] Coucou à tous,J'essaye d'utiliser ma première classe en Flash.J'ai donc une classe qui a le code suivant (je n'ai gardé que ce qui était nécessaire)== attachMovie, classes et evenements [ par o00zeus00o ] Salut à tous, merci de me lire.Voilà mon but est de créer au démarrage un certains nombres d'objets, chaque objet etant représenté par un clip, et cré array de classes??? [ par Jamesbound ] Bonjour,J'ai créé une classe disons:  PersonneJ'essais maintenant de l'inclure dans une collection de personne (ou autrement dit un Array de Personnes affiche_photos aléatoirement [ par kartoon ] Bonjour,Voilà j'ai un code qui va chercher des photos dans un fichier nommé "images" dans lequel se trouve 11 photos au format jpg, et qui pioche les


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,123 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales