cs_cbil
Messages postés140Date d'inscriptionmercredi 30 avril 2003StatutMembreDernière intervention15 mai 2008
-
3 mai 2005 à 17:07
cs_cbil
Messages postés140Date d'inscriptionmercredi 30 avril 2003StatutMembreDernière intervention15 mai 2008
-
12 mai 2005 à 09:14
débutant en c/c++, flash et asm- [mailto:cedbillard@voila.fr Me contacter]
Je veux centrer une image externe aux dimensions aleatoire sur mon animation, pour cela j'ai créé plusieurs fonctions. Lors du clique sur le bouton demandant a afficher l'image, l'image ne se centre pas la premiere fois, il faut cliquer une deuxieme fois pour le centrage de l'image..
Comment faire ?
Voila le code de mes fonctions a la premiere frame de l'anim.
_root.createEmptyMovieClip("pic", 1); //creation d'un clip vide nommé pic
function position()
{
posx=(500-(_root.pic._width))/2; //calcul pour centre sur x
posy=((500-(_root.pic._height))/2)+250; //calcul pour centrer sur y
//positionnement de l'image
_root.pic._x=posx;
_root.pic._y=posy;
}
function affichage(lien) {//lien : lien de l'image a chargé
loadMovie(lien,_root.pic);
}
Code sur le bouton :
on(release)
{
_root.lien=lelien; //lelien vient d'un fichier xml, je ne presente pas le code pour ca, il est correct, je fais appel a une fonction qui renvoie le lien voulu.......
affichage(lien);
position();
cs_djagger
Messages postés536Date d'inscriptionlundi 5 mai 2003StatutMembreDernière intervention29 janvier 20091 4 mai 2005 à 15:20
Salut !
En fait ca vient du temps de chargement ! Tu essay de placer l'image en fonction de sa taille alors que le flash n'a toujours pas récup lefichier (du coup sa taille non plus)
Faut faire un truc du genre :
on(release)
{
_root.lien=lelien;
affichage(lien);
_root.pic.onEnterFrame=function()
{
if(this.getBytesTotal()==this.getBytesLoaded()) // test si le fichier est chargé
{
position(); // attention au chemin de la fonction par rapport à _root.pic !
delete this.onEnterFrame;
}
}
}
cs_cbil
Messages postés140Date d'inscriptionmercredi 30 avril 2003StatutMembreDernière intervention15 mai 20081 4 mai 2005 à 17:01
Merci, je suis sur que c t ca le probleme.
Mais le code que tu m'a passé, ne centre plus du tout, il positionne l'image toujours a 0,0 (avant c t un peu aleatoire la position), meme quand on clique sur le bouton suivant qui n'a pas ce code :
_root.pic.onEnterFrame=function()
{
if(this.getBytesTotal()==this.getBytesLoaded()) // test si le fichier est chargé
{
position(); // attention au chemin de la fonction par rapport à _root.pic !
delete this.onEnterFrame;
}
}
Peux-tu m'expliquer le code _root.pic.onEnterFrame=function() et delete this.onEnterFrame;
(ca creer une fonction temporaire ?)
cs_cbil
Messages postés140Date d'inscriptionmercredi 30 avril 2003StatutMembreDernière intervention15 mai 20081 4 mai 2005 à 17:47
débutant en c/c++, flash et asm- [mailto:cedbillard@voila.fr Me contacter]
Desole pour le gros texte, ce n'etait pas aussi gros dans l'editeur.
J'ai compris le code, le probleme, tout ce que tu m'as dit mais ca veut tj pas marché, voila le code
on (release) {
_root.lien=lelien;
loadMovie(_root.lien,_root.pic); //au lieu de affichage() qui fais juste ca
_root.pic.onEnterFrame = function() {
if (this.getBytesTotal() == this.getBytesLoaded()) {
// test si le fichier est chargé
_root.positionpic();
delete this.onEnterFrame;
}
};
}
et la fonction :
function positionpic() //ca doit etre ca qui va pas alors ?
{
posx=(500-(_root.pic._width))/2;
posy=((500-(_root.pic._height))/2)+250; //le + 250 c'est parce que je centre sur une partir de l'animation, c bon
_root.pic._x=posx;
_root.pic._y=posy;
}
cs_cbil
Messages postés140Date d'inscriptionmercredi 30 avril 2003StatutMembreDernière intervention15 mai 20081 4 mai 2005 à 18:05
débutant en c/c++, flash et asm- [mailto:cedbillard@voila.fr Me contacter]
Hum, en effet elle n'est pas appelé.
Pourtant, la fonction positionpic() , je l'ai ecrite dans la premiere frame de l'animation principal, c donc bon, non ? (elle n'est pas sur un clip ou a l'interieur d'un clip)
cs_cbil
Messages postés140Date d'inscriptionmercredi 30 avril 2003StatutMembreDernière intervention15 mai 20081 12 mai 2005 à 09:14
débutant en c/c++, flash et asm- [mailto:cedbillard@voila.fr Me contacter]
C bon, c'etait bien cette erreur (il ne fallait pas mettre _root.pic).
L'image se charge, l'ecouteur fonctionne mais il n'est apparemment pas possible de recuperer la taille du clip (image chargé) :
pour _root.pic._height et _root.pic._width, il renvoie 0.....alors que pour un movieClip il renvoie bien la taille correspondant....
Le repositionnement fonctionne mais pas le calcul de la position en fonction de la taille, ce qui m'est inutile ici !
J'ai donc detourne le probleme, en utilisant les fonctions des moviesClips....
Mais au lieu de mettre les actions sur mon bouton je l'ai mis sur un clip vide en enterFrame avec variables...
Quand il faut charge une image, je met une variable a true et je charge par le code sur le clip vide, ensuite je verifie constamment si cette image a fini d'etre chargé jusqu'a la fin de son chargement et la je repositionne l'image...