1

ola, j'espère qu'il y à des connaisseur en as3 sous flex,

mon problème est que je fait une rotation d'un canevas, hors, ce canevas se déplace vers le haut gauche au moment de la rotation, c'est léger, mais ca me fait chier :- /

bref, si qq aurais une solution ...

pour la rotation, j'utilise la méthode de la matrice de transformation, pour déplacer le centre de rotation au centre du canevas

une vidéo du problème :
[media]http://invitation-anniversaire.fr/rotate.ogv[/media]

le code de la rotation :
       public function rotateCanvas(can:Canvas, angle:Number):void
        {	var m:Matrix = can.transform.matrix;
        	var x:Number = (can.width/(2*can.scaleX));
        	var y:Number = (can.height/(2*can.scaleY));
	var p:Point = m.transformPoint(new Point(x, y));
	m.tx -= p.x;	m.ty -= p.y;
	m.rotate(angle*(Math.PI/180));
	m.tx += p.x;	m.ty += p.y;
        	can.transform.matrix = m;
        }


#help#
et la le mec il le pécho par le bras et il lui dit '

2

!call Orion_
--- Call : Orion_ appelé(e) sur ce topic ...

avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

3

Edited_952

4

C'est de l'Ogg Theora je crois, ce qui est plutôt rigolo dans un post qui parle de Flash cheeky
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

5

et oui, je développe sous virtualbox cheeky

merci quant même ^^
et la le mec il le pécho par le bras et il lui dit '

6

J'ai pu voir la vidéo en la téléchargeant. Je pense que c'est un problème d'arrondi : les petites erreurs se cumulent. Si tu veux éviter ce genre de phénomène, il ne faut pas appliquer ta matrice de rotation au résultat précédent, mais garder l'angle de rotation dans une variable à part, et repartir des coordonnées initiales à chaque fois. Pense également à ramener ton angle dans la plage [0, 2*pi] quand il dépasse, sinon tu risques des soucis si ton truc tourne longtemps et que l'angle devient trop grand.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

7

Lien cliquable pour sa vidéo: http://invitation-anniversaire.fr/rotate.ogv
Mais c'est très bizarre effectivement de voir une vidéo en Theora (top) dans un topic qui parle d'AS3 qui n'est même pas géré par Gnash à l'heure actuelle. sad
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

8

Bon, en fait, je peux même expliquer le problème, il n'a rien à voir avec le Flash, c'est un problème purement mathématique: tu calcules avec des flottants, donc il y a des erreurs d'arrondi. Donc plus tu itères tes calculs, plus tu multiplies tes erreurs. Il faut toujours repartir des coordonnées d'origine pour faire ta rotation, donc non pas (pseudocode parce que je ne sais pas coder en ActionScript):
x=coord;
x=rotation(x,1°);
x=rotation(x,1°);
x=rotation(x,1°);
…

mais:
x=coord;
x=rotation(coord,1°);
x=rotation(coord,2°);
x=rotation(coord,3°);
…

avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

9

bon, ok donc je l'ai encodé en avi pour rien tongue
[media]http://invitation-anniversaire.fr/rotate.avi[/media]

donc, ca vient des approximation :/

ca fait un moment que j'essaie de faire cette *ù$*ù*=$) de rotation j'ai vraiment essayé toute les méthodes, et seule celle ci marche, je ne peut que appliquer la rotation par palier, sans rien sauver car les zones peuvent se déplacer , grandir, être clippé ..

en gros ca ressemble à ca ->
tromb Fichier joint : zGeg (rotate.png)

je vais essayer de réduire au maximum cet effet, mais ce n'est pas super grave car pas prévu pour être tourné en permanence, merci en tout cas !
et la le mec il le pécho par le bras et il lui dit '

10

Edited_953

11

nope je ne connais pas les movieclips, mais visiblement c'est la même chose qu'un canvas : stretch avec scaleX et Y rotation, positionnement en absolue à l'intérieur etc

tu doit utiliser flash, avec lui on peu spécifier le centre de la rotation, c'est impossible en flex, le centre de rotation est bloqué à la position haut gauche, il faut ruser, et deux méthode existe

// méthode que j'utilise ici, utiliser une matrice de transformation, la deplacer au centre de l'objet à tourner, tourner, et resauvegarder la matrice dans l'objet
http://www.joelconnett.com/flex-rotation-around-a-point-using-a-matrix.html

// autre méthode, par un canvas, plus simple car pas de matrice etc, mais un canvas suplémentaire dans le code
http://www.flex-info.fr/rotation-sur-le-centre-en-adobe-flex/20090403/

la j'utilise déjà 3 éléments par zone de texte, un canvas qui fait 'fader' le fond, un objet 'Text' pour le texte, et un canvas qui contient les deux, mais j'aurais peu être du utiliser la seconde méthode, surtout que la je ne peu pas avoir un slider pour choisir l'angle.

mais bon, je débute en flash, il doit y avoir moult méthodes que je ne connais pas, bien plus puissantes et simples,
rien que le clipping par exemple, je le fait à la main cheeky
et la le mec il le pécho par le bras et il lui dit '

12

Edited_954

13

une idée de comment éviter ces bugs graphique ?

[media]http://robot-tondeuse.fr/output.avi[/media]
et la le mec il le pécho par le bras et il lui dit '