Je ne retrouve pas tous les paramètres d'actionscript au niveau des matrices....
Le x,y par exemple, il est matérialisé par quoi ?
@+
Version imprimable
Je ne retrouve pas tous les paramètres d'actionscript au niveau des matrices....
Le x,y par exemple, il est matérialisé par quoi ?
@+
Qu'entends-tu par x et y ?!
Flash ne gère que des matrices 2D sous la forme
[a b tx]
[c d ty]
[0 0 1]
c'est assez bien expliqué dans la rubrique Matrice ici
Ok, ça marche...
tx,ty correspondent aux x et y du lien que je regardais.
Je vais me fier aux références officielles adobe.
C'est parce que je n'ai toujours pas résolu la compréhension et la maitrise de
beginGradientfill. c'est assez obscur...
en effet, d'après la doc adobe actionscript2, je devrais avoir un beau dégradé rouge bleu avec ce code:
alors, je me demandais si ce n'était pas un soucis au niveau de la déclaration de la matrice...Code:
1
2
3
4
5
6
7
8
9 matrix1.createbox(1,1,0,0,0); begingradientfill('linear',[$ff0000,$0000ff],[100,100],[0,255],matrix1); moveto(0,0); lineto(300,0); lineto(300,300); lineto(0,300); lineto(0,0); endFill();
merci
Oui, dans le bout de code, j'avais oublié de joindre le create mais de toute façon comme tout est objet en ActionScript, je le fais systématiquement...
voici le code complet :
tu peux tester...:DCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 program degrade; uses Flash8; {$FRAME_WIDTH 300} {$FRAME_HEIGHT 300} type Tdegrade = class(MovieClip) constructor Create; end; constructor Tdegrade.Create; var matrix1:Matrix; begin inherited Create(nil,'degrade',1); matrix1.create(); matrix1.createbox(1,1,0,0,0); begingradientfill('linear',[$ff0000,$0000ff],[100,100],[0,255],matrix1); moveto(0,0); lineto(300,0); lineto(300,300); lineto(0,300); lineto(0,0); endFill(); end; begin Tdegrade.Create; end.
J'ai fait un test sur matrix, ci-joint :
Normalement, l'image devrait pivotée de 45° par rapport au coin en haut à gauche... il n'en est rien ! ? :(Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 program voeux2012; uses Flash8; {$FRAME_WIDTH 520} {$FRAME_HEIGHT 366} {$JPEG img 'voeux2012.jpg'} var b: BitmapData; matrix1:matrix; begin matrix1.create(); matrix1.createBox(1,1,math.pi/4,0,0); b:= loadBitmap('img'); _root.beginBitmapFill(b,matrix1); _root.moveto(0,0); _root.lineto(520, 0); _root.lineto(520,366); _root.lineto(0, 366); _root.lineto(0,0); end
même en utilisant translate et rotate...
et pourtant, c'est bien ce que tu fais sur le tourne page...:cfou:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 program voeux2012; uses Flash8; {$FRAME_WIDTH 520} {$FRAME_HEIGHT 366} {$JPEG img 'voeux2012.jpg'} var b: BitmapData; matrix1:matrix; begin matrix1.create(); matrix1.translate(260,183); //rotation sur le centre de l'image matrix1.rotate(math.pi/4); b:=BitmapData.create(520,366); b:= loadBitmap('img'); _root.beginBitmapFill(b,matrix1); _root.moveto(0,0); _root.lineto(520, 0); _root.lineto(520,366); _root.lineto(0, 366); _root.lineto(0,0); _root.EndFill(); end.
J'ai même remplacé le jpeg par un bitmap...sans résultat
une nouvelle tentative...
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 program nouvelessai; uses Flash8; {$FRAME_WIDTH 100} {$FRAME_HEIGHT 100} {$BACKGROUND $ffffff} var b: BitmapData; matrix1:matrix; image:movieclip; begin image:=movieclip.create(nil,'mondessin',1); image.linestyle($ff0000,3); image.moveto(0,0); image.lineto(100,0); image.lineto(100,100); image.lineto(0,100); image.lineto(0,0); //un carré 100 sur1 00 contour rouge image._visible:=false; //on le cache en visuel b:=Bitmapdata.create(100,100); b.draw(image); //dessin du movieclip dans un bitmap(on passe d'un dessin vectoriel à un dessin par points) matrix1.create(); matrix1.CreateBox(1,1,math.pi/6,50,50); //rotation de pi/6 du centre du carré en gardant la même échelle _root.beginBitmapFill(b,matrix1); //motif du remplissage _root.moveto(0,0); _root.lineto(100, 0); _root.lineto(100,100); _root.lineto(0,100); _root.lineto(0,0); _root.EndFill(); //le résultat attendu est différent...? end.
tu répètes la même boulette à chaque fois ;)
matrix1.create au lieu de matrix1 := Matrix.Create
ah oui en effet, je n'aurais pas dû appelé mon instance comme la classe correspondante... mais ça ne règle toujours pas le problème...:cry:
En effet, pour l'image, ça fonctionne... mais pour le dernier exemple non.
le dégradé, c'est bon aussi...:)
pour le dernier exemple, je devrais avoir un seul carré centré et décalé de pi/6 non ?
Je répète mon interrogation lol ; c'est quoi la boulette ici ??
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 program nouvelessai; uses Flash8; {$FRAME_WIDTH 100} {$FRAME_HEIGHT 100} {$BACKGROUND $ffffff} var bmp: BitmapData; m:matrix; image:movieclip; begin image:=movieclip.create(nil,'monmotif',1); image.linestyle($ff0000,3); image.beginFill($ffffff); image.moveto(0,0); image.lineto(100,0); image.lineto(100,100); image.lineto(0,100); image.lineto(0,0); //un carré 100 sur 100 contour rouge bmp:=Bitmapdata.create(100,100); bmp.draw(image); //dessin du movieclip dans un bitmap(on passe d'un dessin vectoriel à un dessin par points) image._visible:=false; //on le cache en visuel m:=matrix.create(); m.CreateBox(1,1,math.pi/6,50,50); //rotation de pi/6 du centre du carré en gardant la même échelle _root.beginBitmapFill(bmp,m); //motif du remplissage _root.moveto(0,0); _root.lineto(100, 0); _root.lineto(100,100); _root.lineto(0,100); _root.lineto(0,0); _root.EndFill(); //le résultat attendu est différent...? fond noir ? taille du carré position etc end.
tu as inversé les paramètres du linestyle :)
faudrait vraiment que j'arrive à améliorer l'éditeur...c'est pénible d'aller voir à chaque fois dans l'unité les paramètres des fonctions...mais ce n'est pas très simple à mettre en oeuvre :)
Salut,
ce n'est pas vrai...:lol:. Oui, et un plantage systématique à la compilation quand c'est possible.(ici ce n'était pas envisageable-->paramètres tous les deux en integer) En tout cas, ce n'est déjà pas mal :ccool:
Quand on sera bien familiarisé avec toutes les méthodes, ça ira mieux...
En tout cas merci, il n'y avait pas de raison...tu faisais la même chose dans le tourne pages...
je commençais à m'arracher les cheveux :lol:
Ces choses qui ne sont pas simples à mettre en œuvre, à mon avis c'est du luxe. J'ai besoin d'un manuel tout simplement. Même si c'est un fichier texte, ça me va. :)
Dans l'unité, on ne trouve pas tout ce qu'on voudrait savoir.
Un manuel en français ! Voilà ce qu'il nous faut. ;)
voilà, je mets le résultat pour ceux qui n'auraient pas vu :
C'est vrai qu'un simple fichier texte pourquoi pas...Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 program dernieressai; uses Flash8; {$FRAME_WIDTH 500} {$FRAME_HEIGHT 500} {$BACKGROUND $ffffff} var bmp: BitmapData; m:matrix; image:movieclip; begin image:=movieclip.create(nil,'monmotif',1); image.linestyle(4,$74FF74); image.beginFill($8B008B); image.moveto(0,0); image.lineto(100,0); image.lineto(100,100); image.lineto(0,100); image.lineto(0,0); //un carré 100 sur 100 contour rouge bmp:=Bitmapdata.create(100,100); bmp.draw(image); //dessin du movieclip dans un bitmap(on passe d'un dessin vectoriel à un dessin par points) image._visible:=false; //on le cache en visuel m:=matrix.create(); m.CreateBox(1,1,math.pi/4,50,50); //rotation de pi/6 du centre du carré en gardant la même échelle _root.beginBitmapFill(bmp,m); //motif du remplissage _root.moveto(0,0); _root.lineto(500, 0); _root.lineto(500,500); _root.lineto(0,500); _root.lineto(0,0); _root.EndFill(); end.
Mais je vais déjà commencer par m'imprimer flash8, ça m'évitera de faire des coquilles...et d'embêter tout le monde :lol:
salut et à plus :lol:
petite rectif, pour coller à ce que je voulais obtenir...
la phrase :
est erronée...en fait le centre de la rotation s'effectue toujours à partir du coin en haut à gauche ou pour le point (tx,ty).Citation:
//rotation de pi/6 du centre du carré en gardant la même échelle
A regarder le lien du premier post pour se rendre compte...
ce que je voulais voir c'était ça (avec une rotation de 45° ici):
exemple pour la compréhension...Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 program dernieressai; uses Flash8; {$FRAME_WIDTH 500} {$FRAME_HEIGHT 500} {$BACKGROUND $ffffff} var bmp: BitmapData; m:matrix; image:movieclip; begin image:=movieclip.create(nil,'monmotif',1); image.linestyle(4,$74FF74); image.beginFill($8B008B); image.moveto(0,0); image.lineto(100,0); image.lineto(100,100); image.lineto(0,100); image.lineto(0,0); //un carré 100 sur 100 contour rouge bmp:=Bitmapdata.create(100,100); bmp.draw(image); //dessin du movieclip dans un bitmap(on passe d'un dessin vectoriel à un dessin par points) image._visible:=false; //on le cache en visuel m:=matrix.create(); m.CreateBox(1,1,math.pi/4,50*sqrt(2),0); //le racine carré, c'est pour la diagonale _root.beginBitmapFill(bmp,m); //motif du remplissage _root.moveto(0,0); _root.lineto(100*sqrt(2), 0); _root.lineto(100*sqrt(2),100*sqrt(2)); _root.lineto(0,100*sqrt(2)); _root.lineto(0,0); _root.EndFill(); end.