This animation tests all the animation method calls available. It creates circles lines triangles rectangles and text of different colors. It moves these around the animation frame both smoothly and in jumps individually and concurrently.
xa.begin(); xa.delay(10); xa.pointLine("Lthin" 0.3f 0.2f 0.8f 0.7f Color.black XtangoApplet.THIN); xa.delay(10); xa.pointLine("Lmedium" 0.4f 0.2f 0.9f 0.7f Color.black XtangoApplet.MEDTHICK); xa.delay(10); xa.pointLine("Lthick" 0.5f 0.2f (float)1 0.7f Color.black XtangoApplet.THICK); xa.delay(10); xa.triangle("Tri1" 0.1f 0.1f 0.5f 0.9f 0.9f 0.2f Color.magenta XtangoApplet.OUTLINE); xa.delay(10); xa.triangle("Tri2" 0.1f 0.3f 0.7f 0.9f 0.8f 0.3f Color.green XtangoApplet.SOLID); xa.delay(10); xa.bg(Color.yellow); xa.delay(10); xa.text("t00" 0.0f 0.0f false Color.gray text 0 ); xa.delay(10); xa.text("t01" 0.1f 0.1f false Color.blue text 1 ); xa.delay(10); xa.circle("c0" 0.8f 0.2f 0.1f Color.red XtangoApplet.SOLID); xa.delay(10); xa.bg(Color.cyan); xa.delay(10); xa.text("t02" 0.2f 0.2f false Color.gray text 2 ); xa.delay(10); xa.text("t03" 0.3f 0.3f false Color.gray text 3 ); xa.delay(10); xa.text("t04" 0.4f 0.4f false Color.gray text 4 ); xa.delay(10); xa.text("t05" 0.5f 0.5f false Color.gray text 5 ); xa.delay(10); xa.text("t06" 0.6f 0.6f false Color.gray text 6 ); xa.delay(10); xa.text("t06" 0.6f 0.6f false Color.gray TEXT 6 ); xa.delay(10); xa.text("t07" 0.7f 0.7f false Color.gray text 7 ); xa.delay(10); xa.text("t08" 0.8f 0.8f false Color.gray text 8 ); xa.delay(10); xa.text("t09" 0.9f 0.9f false Color.gray text 9 ); xa.delay(10); xa.text("t10" (float)1 (float)1 false Color.gray text10 ); xa.delay(10); xa.circle("c1" 0.7f 0.7f 0.05f Color.black XtangoApplet.OUTLINE); xa.delay(10); xa.fill("c1" XtangoApplet.SOLID); xa.delay(10); xa.fill("c1" XtangoApplet.HALF); xa.delay(10); xa.color("t07" Color.white); xa.delay(10); xa.raise("t07"); xa.delay(10); xa.swapIds("t04" t05 ); xa.jump("t04" 0.9f 0.1f); xa.delay(10); xa.delete("t04"); xa.delete("t05"); xa.delete("t06"); xa.delete("t04"); xa.delay(10); xa.jumpTo("c0" t03 ); xa.delay(10); xa.vis("t03"); // should lower xa.delay(10); xa.vis("t03"); // should raise xa.delay(10); xa.rectangle("R" 0.5f 0.5f 0.1f 0.2f Color.black XtangoApplet.SOLID); xa.delay(10); xa.rectangle("Rhalf" 0.6f 0.6f 0.2f 0.1f Color.black XtangoApplet.HALF); xa.delay(10); xa.line("L" 0.1f 0.1f 0.8f 0.8f Color.black XtangoApplet.THIN); xa.delay(10); xa.circle("moveTest1" 0.1f 0.9f 0.05f Color.magenta XtangoApplet.SOLID); xa.move("moveTest1" 0.9f 0.1f); xa.circle("moveTest2" 0.9f 0.9f 0.05f Color.blue XtangoApplet.OUTLINE); xa.move("moveTest2" 0.1f 0.1f); for (int i = 0; i < 5; i++) { xa.rectangle("R"+i (float)Math.random() (float)Math.random() (float)Math.random()/4 (float)Math.random()/4 Color.magenta XtangoApplet.SOLID); xa.delay(2); xa.color("R"+i Color.orange); xa.delay(2); xa.delete("R"+i); } for (int i = 0; i < 5; i++) { xa.delay(2); float x = (float)Math.random(); float y = (float)Math.random(); System.out.println("jump x=" + x + " y=" + y); xa.jump("c1" x y); } xa.exchangePosAsync("moveTest1" moveTest2 ); xa.delay(1); xa.bigText("ha!" 0.5f 0.1f true Color.black ha! ); xa.exchangePos("moveTest1" moveTest2 ); xa.delay(1); xa.bigText("Ha!" 0.6f 0.1f true Color.black Ha! ); xa.exchangePosAsync("moveTest1" moveTest2 ); xa.delay(5); xa.bigText("HA!" 0.7f 0.1f true Color.black HA! ); xa.delay(10); xa.jumpRelative("t00" 0.05f 0.05f); xa.delay(10); xa.jumpRelative("t01" -0.05f 0.07f); xa.delay(10); xa.jumpRelative("t02" 0.02f -0.15f); xa.delay(10); xa.jumpRelative("t03" -0.3f -0.3f); xa.delay(10); xa.moveRelative("moveTest1" 0.3f 0.3f); xa.moveTo("moveTest2" t00 ); xa.delay(10); xa.smallText("Tsmall" 0.2f 0.9f true Color.magenta Going... ); xa.line("L1" 0.2f 0.85f 0.0f 0.1f Color.black XtangoApplet.THIN); xa.line("L2" 0.15f 0.9f 0.1f 0.0f Color.black XtangoApplet.THIN); xa.delay(10); xa.text("Tnormal" 0.15f 0.8f true Color.blue Yup, Going... ); xa.line("L3" 0.15f 0.75f 0.0f 0.1f Color.black XtangoApplet.THIN); xa.line("L4" 0.1f 0.8f 0.1f 0.0f Color.black XtangoApplet.THIN); xa.delay(10); xa.bigText("Tbig" 0.1f 0.7f true Color.darkGray Surely, GONE! ); xa.line("L5" 0.1f 0.65f 0.0f 0.1f Color.black XtangoApplet.THIN); xa.line("L6" 0.05f 0.7f 0.1f 0.0f Color.black XtangoApplet.THIN); xa.delay(10); xa.coords(0.0f 0.0f 0.5f 0.5f); xa.delay(10); xa.coords(0.0f 0.5f 0.5f (float)1); xa.delay(10); xa.coords(0.0f 0.0f (float)1 (float)1); xa.delay(10); xa.coords(0.0f 0.0f (float)1 0.5f); xa.delay(10); xa.coords(0.0f 0.0f 0.5f (float)1); xa.delay(10); xa.switchPos("Tbig" Tsmall ); xa.delay(10); xa.moveToAsync("Tnormal" Tsmall ); xa.delay(1); xa.moveRelativeAsync("Tbig" 0.3f 0.0f); xa.moveAsync("Tsmall" 0.2f 0.9f); System.out.println("DONE!"); xa.end();At the bottom of the animation window is a button and text field. First click this button. To start the animation then push the ``Start'' button.
© 1998 Stephen J. Hartley
Permission is granted to copy and distribute this material for educational purposes only, provided that the following credit line is included: "Concurrent Programming using Java, Copyright 1997 Stephen J. Hartley." Permission is granted to alter and distribute this material provided that the following credit line is included: "Adapted from Concurrent Programming using Java, Copyright 1997 Stephen J. Hartley.