<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="et">
	<id>http://courses.cs.taltech.ee/w/index.php?action=history&amp;feed=atom&amp;title=ITI0011RUS%3Atimelinedemo</id>
	<title>ITI0011RUS:timelinedemo - Redigeerimiste ajalugu</title>
	<link rel="self" type="application/atom+xml" href="http://courses.cs.taltech.ee/w/index.php?action=history&amp;feed=atom&amp;title=ITI0011RUS%3Atimelinedemo"/>
	<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=ITI0011RUS:timelinedemo&amp;action=history"/>
	<updated>2026-05-14T05:18:54Z</updated>
	<subtitle>Selle lehekülje redigeerimiste ajalugu</subtitle>
	<generator>MediaWiki 1.35.9</generator>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=ITI0011RUS:timelinedemo&amp;diff=2541&amp;oldid=prev</id>
		<title>Aleksandr: Uus lehekülg: &#039;Обратно на страницу предмета.  == TimelineDemo.java ==  &lt;source lang=&quot;java&quot;&gt; import javafx.animation.KeyFrame; import javafx.animation.Tim...&#039;</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=ITI0011RUS:timelinedemo&amp;diff=2541&amp;oldid=prev"/>
		<updated>2015-05-06T06:34:50Z</updated>

		<summary type="html">&lt;p&gt;Uus lehekülg: &amp;#039;Обратно на &lt;a href=&quot;/pages/ITI0011RUS&quot; class=&quot;mw-redirect&quot; title=&quot;ITI0011RUS&quot;&gt;страницу предмета&lt;/a&gt;.  == TimelineDemo.java ==  &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt; import javafx.animation.KeyFrame; import javafx.animation.Tim...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Uus lehekülg&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Обратно на [[ITI0011RUS|страницу предмета]].&lt;br /&gt;
&lt;br /&gt;
== TimelineDemo.java ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import javafx.animation.KeyFrame;&lt;br /&gt;
import javafx.animation.Timeline;&lt;br /&gt;
import javafx.application.Application;&lt;br /&gt;
import javafx.scene.Group;&lt;br /&gt;
import javafx.scene.Node;&lt;br /&gt;
import javafx.scene.Scene;&lt;br /&gt;
import javafx.scene.paint.Color;&lt;br /&gt;
import javafx.scene.shape.Shape;&lt;br /&gt;
import javafx.stage.Stage;&lt;br /&gt;
import javafx.util.Duration;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * &lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * @author aleksandr.lenin&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
public class TimelineDemo extends Application {&lt;br /&gt;
&lt;br /&gt;
	Group shapes = null;&lt;br /&gt;
	&lt;br /&gt;
	/* (non-Javadoc)&lt;br /&gt;
	 * @see javafx.application.Application#start(javafx.stage.Stage)&lt;br /&gt;
	 */&lt;br /&gt;
	@Override&lt;br /&gt;
	public void start(Stage primaryStage) throws Exception {&lt;br /&gt;
		shapes = new Group();&lt;br /&gt;
		Scene scene = new Scene(shapes,800,600);&lt;br /&gt;
		primaryStage.setTitle(&amp;quot;Timeline Demo&amp;quot;);&lt;br /&gt;
		primaryStage.setScene(scene);&lt;br /&gt;
		primaryStage.show();&lt;br /&gt;
		&lt;br /&gt;
/* Animation 		&lt;br /&gt;
		Timeline t = new Timeline();&lt;br /&gt;
		KeyValue kv1 = new KeyValue(c.translateXProperty(),600);&lt;br /&gt;
		KeyValue kv2 = new KeyValue(c.translateYProperty(),300);&lt;br /&gt;
		KeyFrame kf1 = new KeyFrame(Duration.seconds(1),kv1,kv2);&lt;br /&gt;
		KeyFrame kf2 = new KeyFrame(Duration.seconds(5),&lt;br /&gt;
				new KeyValue(c.scaleXProperty(),2),&lt;br /&gt;
				new KeyValue(c.scaleYProperty(),4),&lt;br /&gt;
				new KeyValue(c.fillProperty(), Paint.valueOf(&amp;quot;green&amp;quot;))&lt;br /&gt;
				);&lt;br /&gt;
		&lt;br /&gt;
		t.getKeyFrames().addAll(kf1,kf2);&lt;br /&gt;
		t.setCycleCount(3);&lt;br /&gt;
		t.play();&lt;br /&gt;
*/&lt;br /&gt;
		Timeline tl1 = new Timeline();&lt;br /&gt;
		tl1.setCycleCount(Timeline.INDEFINITE);&lt;br /&gt;
		KeyFrame kf = new KeyFrame(Duration.millis(1000), e -&amp;gt; createRandomCircle());&lt;br /&gt;
		tl1.getKeyFrames().add(kf);&lt;br /&gt;
		tl1.play();&lt;br /&gt;
		&lt;br /&gt;
		Timeline tl2 = new Timeline();&lt;br /&gt;
		tl2.setCycleCount(Timeline.INDEFINITE);&lt;br /&gt;
		KeyFrame kf2 = new KeyFrame(Duration.millis(650), e -&amp;gt; createRandomRectangle());&lt;br /&gt;
		tl2.getKeyFrames().add(kf2);&lt;br /&gt;
		tl2.play();&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	private double randRange(double from, double to) {&lt;br /&gt;
		if(from &amp;gt; to) return 0;&lt;br /&gt;
		return Math.random() * (to-from+1) + from;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	private boolean intersects(Shape a, Group shapes) {&lt;br /&gt;
		for(Node n : shapes.getChildren()) {&lt;br /&gt;
			Shape cur = (Shape) n;&lt;br /&gt;
			Shape intersection = Shape.intersect(cur, a);&lt;br /&gt;
			if(intersection.getBoundsInLocal().getWidth() &amp;gt; 0) &lt;br /&gt;
				return true;&lt;br /&gt;
		}&lt;br /&gt;
		return false;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	private void createRandomCircle() {&lt;br /&gt;
		Scene scene = shapes.getScene();&lt;br /&gt;
		MyCircle c = null;&lt;br /&gt;
		&lt;br /&gt;
		do {&lt;br /&gt;
			double radius = randRange(25,50);&lt;br /&gt;
			double x = randRange(radius, scene.getWidth() - radius);&lt;br /&gt;
			double y = randRange(radius, scene.getHeight() - radius);&lt;br /&gt;
			Color color = Color.rgb((int)randRange(0,255), (int)randRange(0,255), (int)randRange(0,255));&lt;br /&gt;
			c = new MyCircle(x,y,radius,color);&lt;br /&gt;
		} while(intersects(c,shapes));&lt;br /&gt;
		&lt;br /&gt;
		shapes.getChildren().add(c);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	private void createRandomRectangle() {&lt;br /&gt;
		Scene scene = shapes.getScene();&lt;br /&gt;
		MyRectangle r = null;&lt;br /&gt;
		&lt;br /&gt;
		do {&lt;br /&gt;
			double w = randRange(25,50);&lt;br /&gt;
			double h = randRange(25,50);&lt;br /&gt;
			double x = randRange(0, scene.getWidth() - w);&lt;br /&gt;
			double y = randRange(0, scene.getHeight() - h);&lt;br /&gt;
			Color color = Color.rgb((int)randRange(0,255), (int)randRange(0,255), (int)randRange(0,255));&lt;br /&gt;
			r = new MyRectangle(x,y,w,h,color);&lt;br /&gt;
		} while(intersects(r,shapes));&lt;br /&gt;
		&lt;br /&gt;
		shapes.getChildren().add(r);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * @param args&lt;br /&gt;
	 */&lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		launch(args);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== MyCircle.java ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import javafx.event.EventHandler;&lt;br /&gt;
import javafx.scene.Group;&lt;br /&gt;
import javafx.scene.input.MouseEvent;&lt;br /&gt;
import javafx.scene.paint.Color;&lt;br /&gt;
import javafx.scene.shape.Circle;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class MyCircle extends Circle {&lt;br /&gt;
	&lt;br /&gt;
	public MyCircle(double x, double y, double radius) {&lt;br /&gt;
		super(x,y,radius);&lt;br /&gt;
		setOnMouseClicked(new EventHandler&amp;lt;MouseEvent&amp;gt;() {&lt;br /&gt;
&lt;br /&gt;
			@Override&lt;br /&gt;
			public void handle(MouseEvent arg0) {&lt;br /&gt;
				removeSelf();&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	public MyCircle(double x, double y, double radius, Color color) {&lt;br /&gt;
		super(x,y,radius,color);&lt;br /&gt;
		setOnMouseClicked(new EventHandler&amp;lt;MouseEvent&amp;gt;() {&lt;br /&gt;
&lt;br /&gt;
			@Override&lt;br /&gt;
			public void handle(MouseEvent arg0) {&lt;br /&gt;
				removeSelf();&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
		});		&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	private void removeSelf() {&lt;br /&gt;
		Group shapes = (Group) getParent();&lt;br /&gt;
		if(shapes != null) {&lt;br /&gt;
			shapes.getChildren().remove(this);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== MyRectangle.java ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import javafx.event.EventHandler;&lt;br /&gt;
import javafx.scene.Group;&lt;br /&gt;
import javafx.scene.input.MouseEvent;&lt;br /&gt;
import javafx.scene.paint.Color;&lt;br /&gt;
import javafx.scene.shape.Rectangle;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class MyRectangle extends Rectangle {&lt;br /&gt;
	&lt;br /&gt;
	public MyRectangle(double x, double y, double width, double height) {&lt;br /&gt;
		super(x,y,width,height);&lt;br /&gt;
		addHandler();&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	public MyRectangle(double x, double y, double width, double height, Color color) {&lt;br /&gt;
		super(x,y,width,height);&lt;br /&gt;
		setFill(color);&lt;br /&gt;
		addHandler();&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	private void removeSelf() {&lt;br /&gt;
		Group shapes = (Group) getParent();&lt;br /&gt;
		if(shapes != null) {&lt;br /&gt;
			shapes.getChildren().remove(this);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	private void addHandler() {&lt;br /&gt;
		setOnMouseClicked(new EventHandler&amp;lt;MouseEvent&amp;gt;() {&lt;br /&gt;
&lt;br /&gt;
			@Override&lt;br /&gt;
			public void handle(MouseEvent arg0) {&lt;br /&gt;
				removeSelf();&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
		});	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Aleksandr</name></author>
	</entry>
</feed>