test/script/jfx/kaleidoscope.js

changeset 667
bda654c6d59c
parent 638
f22742d5daa3
child 952
6d5471a497fb
child 962
ac62e33a99b0
equal deleted inserted replaced
666:b0d4ef6fb2db 667:bda654c6d59c
28 * @run 28 * @run
29 * @fork 29 * @fork
30 */ 30 */
31 31
32 TESTNAME = "kaleidoscope"; 32 TESTNAME = "kaleidoscope";
33 WAIT = 4000;
34
35 var Paint = Java.type("javafx.scene.paint.Paint");
36 var Canvas = Java.type("javafx.scene.canvas.Canvas");
37 var BorderPane = Java.type("javafx.scene.layout.BorderPane");
38 var StackPane = Java.type("javafx.scene.layout.StackPane");
39 var StrokeLineCap = Java.type("javafx.scene.shape.StrokeLineCap");
40 33
41 var WIDTH = 800; 34 var WIDTH = 800;
42 var HEIGHT = 600; 35 var HEIGHT = 600;
43 var canvas = new Canvas(WIDTH, HEIGHT); 36 var canvas = new Canvas(WIDTH, HEIGHT);
44 var context = canvas.graphicsContext2D; 37 var context = canvas.graphicsContext2D;
54 var c=new Array(6); 47 var c=new Array(6);
55 var d=new Array(6); 48 var d=new Array(6);
56 var r,e; 49 var r,e;
57 var fade; 50 var fade;
58 var prv_x,prv_y,prv_x2,prv_y2; 51 var prv_x,prv_y,prv_x2,prv_y2;
52 var isFrameRendered = false;
59 53
60 function renderFrame() { 54 function renderFrame() {
61 a=0.2*angle; 55 if (!isFrameRendered) {
62 b=0.7*angle; 56 a=0.2*angle;
63 r=0; 57 b=0.7*angle;
64 fade=32; 58 r=0;
65 for(var i=0;i<6;i++) 59 fade=32;
66 { 60 for(var i=0;i<6;i++)
67 c[i]=1.0/(i+1)/2; 61 {
68 d[i]=1.0/(i+1)/2; 62 c[i]=1.0/(i+1)/2;
69 } 63 d[i]=1.0/(i+1)/2;
70 radius=Math.round((WIDTH+HEIGHT)/8); 64 }
71 e=radius*0.2; 65 radius=Math.round((WIDTH+HEIGHT)/8);
72 p_x=Math.round(WIDTH/2); 66 e=radius*0.2;
73 p_y=Math.round(HEIGHT/2); 67 p_x=Math.round(WIDTH/2);
74 x=(radius*c[0])*Math.cos(a*d[1])+(radius*c[2])*Math.sin(a*d[3])+(radius*c[4])*Math.sin(a*d[5]); 68 p_y=Math.round(HEIGHT/2);
75 y=(radius*c[5])*Math.sin(a*d[4])+(radius*c[3])*Math.cos(a*d[2])+(radius*c[1])*Math.cos(a*d[0]); 69 x=(radius*c[0])*Math.cos(a*d[1])+(radius*c[2])*Math.sin(a*d[3])+(radius*c[4])*Math.sin(a*d[5]);
76 for (i = 0; i < 800; i++) { 70 y=(radius*c[5])*Math.sin(a*d[4])+(radius*c[3])*Math.cos(a*d[2])+(radius*c[1])*Math.cos(a*d[0]);
77 anim(); 71 isFrameRendered = true;
78 } 72 }
73 anim();
79 } 74 }
80 75
81 function anim() { 76 function anim() {
82 var a1=Math.cos(a*2); 77 var a1=Math.cos(a*2);
83 var a2=Math.cos(a*4); 78 var a2=Math.cos(a*4);
152 context.closePath(); 147 context.closePath();
153 } 148 }
154 149
155 var stack = new StackPane(); 150 var stack = new StackPane();
156 var pane = new BorderPane(); 151 var pane = new BorderPane();
157
158 pane.setCenter(canvas); 152 pane.setCenter(canvas);
159 stack.getChildren().add(pane); 153 stack.getChildren().add(pane);
160 $STAGE.scene = new Scene(stack); 154 $STAGE.scene = new Scene(stack);
161 renderFrame(); 155 var frame = 0;
162 checkImageAndExit(); 156 var timer = new AnimationTimerExtend() {
157 handle: function handle(now) {
158 if (frame < 800) {
159 renderFrame();
160 frame++;
161 } else {
162 checkImageAndExit();
163 timer.stop();
164 }
165 }
166 };
167 timer.start();

mercurial