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 ?
@+
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
n'as-tu pas oublié de créer la matrice ? createbox est une méthode, pas un constructor.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 matrix1 := Matrix.Create(); matrix1.createbox(1,1,0,0,0);
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...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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...
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.... 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
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
Mon site personnel consacré à MSEide+MSEgui : msegui.net
voilà, je mets le résultat pour ceux qui n'auraient pas vu :
C'est vrai qu'un simple fichier texte pourquoi pas...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
salut et à plus
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).//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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.
Mon site personnel consacré à MSEide+MSEgui : msegui.net
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager