<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Silveira Neto &#187; Drag</title>
	<atom:link href="http://silveiraneto.net/tag/drag/feed/" rel="self" type="application/rss+xml" />
	<link>http://silveiraneto.net</link>
	<description>the world is a pixel</description>
	<lastBuildDate>Mon, 19 Jul 2010 21:59:29 +0000</lastBuildDate>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>JavaFX, Draggable Nodes</title>
		<link>http://silveiraneto.net/2008/08/11/javafx-draggable-node/</link>
		<comments>http://silveiraneto.net/2008/08/11/javafx-draggable-node/#comments</comments>
		<pubDate>Mon, 11 Aug 2008 19:18:34 +0000</pubDate>
		<dc:creator>Silveira</dc:creator>
				<category><![CDATA[english]]></category>
		<category><![CDATA[Drag]]></category>
		<category><![CDATA[draggable]]></category>
		<category><![CDATA[flickr]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[Mouse]]></category>
		<category><![CDATA[netbeans]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://silveiraneto.net/?p=1064</guid>
		<description><![CDATA[One thing that I like a lot to do with JavaFX is draggable objects. Due to some recent changes in the JavaFX syntax my old codes for that are no longer working. Joshua Marinacci from Sun&#8217;s JavaFX engineering team and other guys from the JavaFX community gave me some tips. Here some strategies I&#8217;m using [...]]]></description>
			<content:encoded><![CDATA[<p>One thing that I like a lot to do with JavaFX is draggable objects. Due to some recent changes in the JavaFX syntax my <a href="http://silveiraneto.net/2008/02/16/draggable-and-growable-ball-in-javafx/">old codes for that</a> are no longer working. <a href="http://weblogs.java.net/blog/joshy/">Joshua Marinacci</a> from Sun&#8217;s JavaFX engineering team and other guys from the JavaFX community gave me some tips. Here some strategies I&#8217;m using for making draggable nodes in JavaFX.</p>
<p>In this first example, a simple draggable ellipse.<br />
<center><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/pAJHH-mPLaQ&#038;hl=pt-br&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/pAJHH-mPLaQ&#038;hl=pt-br&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object></center><br />
video url: <a href="http://www.youtube.com/watch?v=pAJHH-mPLaQ">http://www.youtube.com/watch?v=pAJHH-mPLaQ</a></p>
<div class="wp_syntax">
<div class="code">
<pre class="java java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javafx.application.*</span>;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javafx.scene.paint.*</span>;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javafx.scene.geometry.*</span>;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javafx.input.*</span>;
&nbsp;
<span style="color: #003399;">Frame</span> <span style="color: #009900;">&#123;</span>
    width<span style="color: #339933;">:</span> <span style="color: #cc66cc;">300</span>, height<span style="color: #339933;">:</span> <span style="color: #cc66cc;">300</span>, visible<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">true</span>
    stage<span style="color: #339933;">:</span> Stage <span style="color: #009900;">&#123;</span>
        content<span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span>
            Ellipse <span style="color: #009900;">&#123;</span>
                var endX <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0.0</span>; var endY <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0.0</span>
                var startX <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0.0</span>; var startY <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0.0</span>
                centerX<span style="color: #339933;">:</span> <span style="color: #cc66cc;">150</span>, centerY<span style="color: #339933;">:</span> <span style="color: #cc66cc;">150</span>
                radiusX<span style="color: #339933;">:</span> <span style="color: #cc66cc;">80</span>, radiusY<span style="color: #339933;">:</span> <span style="color: #cc66cc;">40</span>
                fill<span style="color: #339933;">:</span> <span style="color: #003399;">Color</span>.<span style="color: #006633;">ORANGE</span>
                translateX<span style="color: #339933;">:</span> bind endX
                translateY<span style="color: #339933;">:</span> bind endY
                onMousePressed<span style="color: #339933;">:</span> function<span style="color: #009900;">&#40;</span>e<span style="color: #339933;">:</span><span style="color: #003399;">MouseEvent</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #003399;">Void</span> <span style="color: #009900;">&#123;</span>
                    startX <span style="color: #339933;">=</span> e.<span style="color: #006633;">getDragX</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span>endX;
                    startY <span style="color: #339933;">=</span> e.<span style="color: #006633;">getDragY</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span>endY;
                <span style="color: #009900;">&#125;</span>
                onMouseDragged<span style="color: #339933;">:</span> function<span style="color: #009900;">&#40;</span>e<span style="color: #339933;">:</span><span style="color: #003399;">MouseEvent</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #003399;">Void</span> <span style="color: #009900;">&#123;</span>
                    endX <span style="color: #339933;">=</span> e.<span style="color: #006633;">getDragX</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span>startX;
                    endY <span style="color: #339933;">=</span> e.<span style="color: #006633;">getDragY</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span>startY;
                <span style="color: #009900;">&#125;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#93;</span>
&nbsp;
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre>
</div>
</div>
<p>When you need to create a group of draggable objects, you can try thie approach of a draggable group like this. Inside on it, you can put whatever you want.</p>
<p><center><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/mHOcPRrgQCQ&#038;hl=pt-br&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/mHOcPRrgQCQ&#038;hl=pt-br&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object></center><br />
Video url: <a href="http://www.youtube.com/watch?v=mHOcPRrgQCQ">http://www.youtube.com/watch?v=mHOcPRrgQCQ</a></p>
<div class="wp_syntax">
<div class="code">
<pre class="java java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javafx.application.*</span>;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javafx.scene.paint.*</span>;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javafx.scene.geometry.*</span>;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javafx.input.*</span>;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javafx.scene.*</span>;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javafx.scene.effect.*</span>;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javafx.scene.image.*</span>;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javafx.animation.*</span>;
&nbsp;
<span style="color: #666666; font-style: italic;">// a graggable group</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> DragGroup <span style="color: #000000; font-weight: bold;">extends</span> CustomNode<span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> attribute content<span style="color: #339933;">:</span> Node<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span>;
&nbsp;
    <span style="color: #000000; font-weight: bold;">private</span> attribute endX <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0.0</span>;
    <span style="color: #000000; font-weight: bold;">private</span> attribute endY <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0.0</span>;
&nbsp;
    <span style="color: #000000; font-weight: bold;">private</span> attribute startX <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0.0</span>;
    <span style="color: #000000; font-weight: bold;">private</span> attribute startY <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0.0</span>;
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> function create<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span> Node <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #003399;">Group</span><span style="color: #009900;">&#123;</span>
            translateX<span style="color: #339933;">:</span> bind endX
            translateY<span style="color: #339933;">:</span> bind endY
            content<span style="color: #339933;">:</span> bind content
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    override attribute onMousePressed <span style="color: #339933;">=</span> function<span style="color: #009900;">&#40;</span>e<span style="color: #339933;">:</span><span style="color: #003399;">MouseEvent</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #003399;">Void</span> <span style="color: #009900;">&#123;</span>
        startX <span style="color: #339933;">=</span> e.<span style="color: #006633;">getDragX</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span>endX;
        startY <span style="color: #339933;">=</span> e.<span style="color: #006633;">getDragY</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span>endY;
    <span style="color: #009900;">&#125;</span>
&nbsp;
    override attribute onMouseDragged <span style="color: #339933;">=</span> function<span style="color: #009900;">&#40;</span>e<span style="color: #339933;">:</span><span style="color: #003399;">MouseEvent</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #003399;">Void</span> <span style="color: #009900;">&#123;</span>
        endX <span style="color: #339933;">=</span> e.<span style="color: #006633;">getDragX</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span>startX;
        endY <span style="color: #339933;">=</span> e.<span style="color: #006633;">getDragY</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span>startY;
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// angle animation, cycles between 0 to 360 in 36 seconds</span>
var angle <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0.0</span>;
var angleAnimation <span style="color: #339933;">=</span> Timeline <span style="color: #009900;">&#123;</span>
    repeatCount<span style="color: #339933;">:</span> Timeline.<span style="color: #006633;">INDEFINITE</span>
    keyFrames <span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span>
        KeyFrame <span style="color: #009900;">&#123;</span>
            time<span style="color: #339933;">:</span> 0s
            values<span style="color: #339933;">:</span>
                    angle <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">0.0</span>
        <span style="color: #009900;">&#125;</span>,
        KeyFrame<span style="color: #009900;">&#123;</span>
            time<span style="color: #339933;">:</span> 36s
            values <span style="color: #339933;">:</span>
                    angle <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">360.0</span> tween Interpolator.<span style="color: #006633;">LINEAR</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#93;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// some pictures from my Flickr albums </span>
var me    <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;http://farm4.static.flickr.com/3042/2746737338_aa3041f283_m.jpg&quot;</span>;
&nbsp;
&nbsp;
&nbsp;
var dog   <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;http://farm4.static.flickr.com/3184/2717290793_ec14c26a85_m.jpg&quot;</span>;
var plant <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;http://farm4.static.flickr.com/3014/2731177705_bed6d6b8fa_m.jpg&quot;</span>;
var bird  <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;http://farm4.static.flickr.com/3190/2734919599_a0110e7ce0_m.jpg&quot;</span>;
var me_89  <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;http://farm3.static.flickr.com/2138/2308085138_7b296cc5d0_m.jpg&quot;</span>;
&nbsp;
&nbsp;
<span style="color: #003399;">Frame</span> <span style="color: #009900;">&#123;</span>
    width<span style="color: #339933;">:</span> <span style="color: #cc66cc;">640</span>, height<span style="color: #339933;">:</span> <span style="color: #cc66cc;">480</span>, visible<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">true</span>
    stage<span style="color: #339933;">:</span> Stage <span style="color: #009900;">&#123;</span>
        fill<span style="color: #339933;">:</span> <span style="color: #003399;">Color</span>.<span style="color: #006633;">BLACK</span>
        content<span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span>
            DragGroup<span style="color: #009900;">&#123;</span>
                content<span style="color: #339933;">:</span> ImageView <span style="color: #009900;">&#123;</span>
                    anchorX<span style="color: #339933;">:</span> <span style="color: #cc66cc;">120</span>, anchorY<span style="color: #339933;">:</span> <span style="color: #cc66cc;">90</span>
                    rotate<span style="color: #339933;">:</span> bind <span style="color: #cc66cc;">30</span> <span style="color: #339933;">+</span> angle
                    image<span style="color: #339933;">:</span> <span style="color: #003399;">Image</span> <span style="color: #009900;">&#123;</span> backgroundLoading<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">true</span>, url<span style="color: #339933;">:</span> me <span style="color: #009900;">&#125;</span>
                <span style="color: #009900;">&#125;</span>
            <span style="color: #009900;">&#125;</span>,
            DragGroup <span style="color: #009900;">&#123;</span>
                translateX<span style="color: #339933;">:</span> <span style="color: #cc66cc;">300</span>, translateY<span style="color: #339933;">:</span> <span style="color: #cc66cc;">50</span>
                content<span style="color: #339933;">:</span> ImageView <span style="color: #009900;">&#123;</span>
                    anchorX<span style="color: #339933;">:</span> <span style="color: #cc66cc;">120</span>, anchorY<span style="color: #339933;">:</span> <span style="color: #cc66cc;">90</span>
                    rotate<span style="color: #339933;">:</span> bind <span style="color: #339933;">-</span><span style="color: #cc66cc;">30</span> <span style="color: #339933;">+</span> angle
                    image<span style="color: #339933;">:</span> <span style="color: #003399;">Image</span> <span style="color: #009900;">&#123;</span> backgroundLoading<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">true</span>, url<span style="color: #339933;">:</span> dog <span style="color: #009900;">&#125;</span>
                <span style="color: #009900;">&#125;</span>
            <span style="color: #009900;">&#125;</span>,
            DragGroup <span style="color: #009900;">&#123;</span>
                translateX<span style="color: #339933;">:</span> <span style="color: #cc66cc;">300</span>, translateY<span style="color: #339933;">:</span> <span style="color: #cc66cc;">300</span>
                content<span style="color: #339933;">:</span> ImageView <span style="color: #009900;">&#123;</span>
                    anchorX<span style="color: #339933;">:</span> <span style="color: #cc66cc;">120</span>, anchorY<span style="color: #339933;">:</span> <span style="color: #cc66cc;">90</span>
                    rotate<span style="color: #339933;">:</span> bind <span style="color: #cc66cc;">90</span> <span style="color: #339933;">+</span> angle
                    image<span style="color: #339933;">:</span> <span style="color: #003399;">Image</span> <span style="color: #009900;">&#123;</span> backgroundLoading<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">true</span>, url<span style="color: #339933;">:</span> plant <span style="color: #009900;">&#125;</span>
                <span style="color: #009900;">&#125;</span>
            <span style="color: #009900;">&#125;</span>,
            DragGroup <span style="color: #009900;">&#123;</span>
                translateX<span style="color: #339933;">:</span> <span style="color: #cc66cc;">200</span>
                translateY<span style="color: #339933;">:</span> <span style="color: #cc66cc;">200</span>
                content<span style="color: #339933;">:</span> ImageView <span style="color: #009900;">&#123;</span>
                    anchorX<span style="color: #339933;">:</span> <span style="color: #cc66cc;">120</span>, anchorY<span style="color: #339933;">:</span> <span style="color: #cc66cc;">90</span>
                    rotate<span style="color: #339933;">:</span> bind <span style="color: #cc66cc;">90</span> <span style="color: #339933;">+</span> angle
                    image<span style="color: #339933;">:</span> <span style="color: #003399;">Image</span> <span style="color: #009900;">&#123;</span> backgroundLoading<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">true</span>, url<span style="color: #339933;">:</span> bird <span style="color: #009900;">&#125;</span>
                <span style="color: #009900;">&#125;</span>
            <span style="color: #009900;">&#125;</span>,
            DragGroup <span style="color: #009900;">&#123;</span>
                translateX<span style="color: #339933;">:</span> <span style="color: #cc66cc;">30</span>
                translateY<span style="color: #339933;">:</span> <span style="color: #cc66cc;">200</span>
                content<span style="color: #339933;">:</span> ImageView <span style="color: #009900;">&#123;</span>
                    anchorX<span style="color: #339933;">:</span> <span style="color: #cc66cc;">85</span>, anchorY<span style="color: #339933;">:</span> <span style="color: #cc66cc;">120</span>
                    rotate<span style="color: #339933;">:</span> bind angle <span style="color: #339933;">+</span> <span style="color: #cc66cc;">180</span>
                    image<span style="color: #339933;">:</span> <span style="color: #003399;">Image</span> <span style="color: #009900;">&#123;</span> backgroundLoading<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">true</span>, url<span style="color: #339933;">:</span> me_89 <span style="color: #009900;">&#125;</span>
                <span style="color: #009900;">&#125;</span>
            <span style="color: #009900;">&#125;</span>,
        <span style="color: #009900;">&#93;</span>
&nbsp;
    <span style="color: #009900;">&#125;</span>
&nbsp;
    closeAction<span style="color: #339933;">:</span> function<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        java.<span style="color: #006633;">lang</span>.<span style="color: #003399;">System</span>.<span style="color: #006633;">exit</span><span style="color: #009900;">&#40;</span> 0 <span style="color: #009900;">&#41;</span>;
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
angleAnimation.<span style="color: #006633;">start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>;</pre>
</div>
</div>
<p>One more example, using the same class DragGroup, we can put multiple nodes using lists.</p>
<p><center><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/gJqy7EdtEqs&#038;hl=pt-br&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/gJqy7EdtEqs&#038;hl=pt-br&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object></center><br />
Video url: <a href="http://www.youtube.com/watch?v=gJqy7EdtEqs">http://www.youtube.com/watch?v=gJqy7EdtEqs</a></p>
<div class="wp_syntax">
<div class="code">
<pre class="java java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javafx.application.*</span>;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javafx.scene.*</span>;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javafx.scene.geometry.*</span>;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javafx.scene.paint.*</span>;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javafx.input.*</span>;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javafx.animation.*</span>;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.lang.Math</span>;
&nbsp;
<span style="color: #666666; font-style: italic;">// Class to create a draggable group of objects</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> DragGroup <span style="color: #000000; font-weight: bold;">extends</span> CustomNode<span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> attribute content<span style="color: #339933;">:</span> Node<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span>;
&nbsp;
    <span style="color: #000000; font-weight: bold;">private</span> attribute endX <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0.0</span>;
    <span style="color: #000000; font-weight: bold;">private</span> attribute endY <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0.0</span>;
&nbsp;
    <span style="color: #000000; font-weight: bold;">private</span> attribute startX <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0.0</span>;
    <span style="color: #000000; font-weight: bold;">private</span> attribute startY <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0.0</span>;
&nbsp;
    override attribute onMousePressed <span style="color: #339933;">=</span> function<span style="color: #009900;">&#40;</span>e<span style="color: #339933;">:</span><span style="color: #003399;">MouseEvent</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #003399;">Void</span> <span style="color: #009900;">&#123;</span>
        startX <span style="color: #339933;">=</span> e.<span style="color: #006633;">getDragX</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span>endX;
        startY <span style="color: #339933;">=</span> e.<span style="color: #006633;">getDragY</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span>endY;
    <span style="color: #009900;">&#125;</span>
&nbsp;
    override attribute onMouseDragged <span style="color: #339933;">=</span> function<span style="color: #009900;">&#40;</span>e<span style="color: #339933;">:</span><span style="color: #003399;">MouseEvent</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #003399;">Void</span> <span style="color: #009900;">&#123;</span>
        endX <span style="color: #339933;">=</span> e.<span style="color: #006633;">getDragX</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span>startX;
        endY <span style="color: #339933;">=</span> e.<span style="color: #006633;">getDragY</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span>startY;
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> function create<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span> Node <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #003399;">Group</span><span style="color: #009900;">&#123;</span>
            translateX<span style="color: #339933;">:</span> bind endX
            translateY<span style="color: #339933;">:</span> bind endY
            content<span style="color: #339933;">:</span> bind content
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// angle animation, cycles between 0 to 360 in 10 seconds</span>
var angle <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0.0</span>;
var angleAnimation <span style="color: #339933;">=</span> Timeline <span style="color: #009900;">&#123;</span>
    repeatCount<span style="color: #339933;">:</span> Timeline.<span style="color: #006633;">INDEFINITE</span>
    keyFrames <span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span>
        KeyFrame <span style="color: #009900;">&#123;</span>
            time<span style="color: #339933;">:</span> 0s
            values<span style="color: #339933;">:</span> angle <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">0.0</span>
        <span style="color: #009900;">&#125;</span>,
        KeyFrame<span style="color: #009900;">&#123;</span>
            time<span style="color: #339933;">:</span> 10s
            values <span style="color: #339933;">:</span>  angle <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">360.0</span> tween Interpolator.<span style="color: #006633;">LINEAR</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#93;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// breath animation, go and back from 0.0 to 10.0 in 2 seconds</span>
var breath <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0.0</span>;
var breathAnimation <span style="color: #339933;">=</span> Timeline <span style="color: #009900;">&#123;</span>
    repeatCount<span style="color: #339933;">:</span> Timeline.<span style="color: #006633;">INDEFINITE</span>
    autoReverse<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">true</span>
    keyFrames <span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span>
        KeyFrame <span style="color: #009900;">&#123;</span>
            time<span style="color: #339933;">:</span> 0s
            values<span style="color: #339933;">:</span> breath <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">0.0</span>
        <span style="color: #009900;">&#125;</span>,
        KeyFrame<span style="color: #009900;">&#123;</span>
            time<span style="color: #339933;">:</span> 1s
            values <span style="color: #339933;">:</span>  breath <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">10.0</span> tween Interpolator.<span style="color: #006633;">LINEAR</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#93;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Creates n multi colored floating circles around a bigger circle</span>
var n <span style="color: #339933;">=</span> <span style="color: #cc66cc;">12</span>;
var colors <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span>
    <span style="color: #003399;">Color</span>.<span style="color: #006633;">BLUE</span>, <span style="color: #003399;">Color</span>.<span style="color: #006633;">AQUA</span>, <span style="color: #003399;">Color</span>.<span style="color: #006633;">MAGENTA</span>, <span style="color: #003399;">Color</span>.<span style="color: #006633;">RED</span>,
    <span style="color: #003399;">Color</span>.<span style="color: #006633;">YELLOW</span>, <span style="color: #003399;">Color</span>.<span style="color: #006633;">ORANGE</span>, <span style="color: #003399;">Color</span>.<span style="color: #006633;">HOTPINK</span>, <span style="color: #003399;">Color</span>.<span style="color: #006633;">LIME</span>
<span style="color: #009900;">&#93;</span>;
var chosen <span style="color: #339933;">=</span> <span style="color: #003399;">Color</span>.<span style="color: #006633;">YELLOW</span>;
var floatingCircles <span style="color: #339933;">=</span> <span style="color: #003399;">Group</span><span style="color: #009900;">&#123;</span>
    rotate<span style="color: #339933;">:</span> bind angle
    content<span style="color: #339933;">:</span> <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>i in <span style="color: #009900;">&#91;</span>1..<span style="color: #006633;">n</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>
    Circle <span style="color: #009900;">&#123;</span>
        fill<span style="color: #339933;">:</span> colors<span style="color: #009900;">&#91;</span>i mod sizeof colors<span style="color: #009900;">&#93;</span>
        radius<span style="color: #339933;">:</span> <span style="color: #cc66cc;">10</span>
        centerX<span style="color: #339933;">:</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">cos</span><span style="color: #009900;">&#40;</span>i <span style="color: #339933;">*</span> <span style="color: #cc66cc;">2</span> <span style="color: #339933;">*</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">PI</span><span style="color: #339933;">/</span>n<span style="color: #009900;">&#41;</span> <span style="color: #339933;">*</span> <span style="color: #cc66cc;">70</span>
        centerY<span style="color: #339933;">:</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">sin</span><span style="color: #009900;">&#40;</span>i <span style="color: #339933;">*</span> <span style="color: #cc66cc;">2</span> <span style="color: #339933;">*</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">PI</span><span style="color: #339933;">/</span>n<span style="color: #009900;">&#41;</span> <span style="color: #339933;">*</span> <span style="color: #cc66cc;">70</span>
        onMouseClicked<span style="color: #339933;">:</span> function<span style="color: #009900;">&#40;</span> e<span style="color: #339933;">:</span> <span style="color: #003399;">MouseEvent</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #003399;">Void</span> <span style="color: #009900;">&#123;</span>
            chosen <span style="color: #339933;">=</span> colors<span style="color: #009900;">&#91;</span>i mod sizeof colors<span style="color: #009900;">&#93;</span>;
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
var circle <span style="color: #339933;">=</span> Circle<span style="color: #009900;">&#123;</span>
    radius<span style="color: #339933;">:</span> bind <span style="color: #cc66cc;">50</span> <span style="color: #339933;">+</span> breath
    fill<span style="color: #339933;">:</span> bind chosen
<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #003399;">Frame</span> <span style="color: #009900;">&#123;</span>
    width<span style="color: #339933;">:</span> <span style="color: #cc66cc;">400</span>, height<span style="color: #339933;">:</span> <span style="color: #cc66cc;">400</span>, visible<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">true</span>
    stage<span style="color: #339933;">:</span> Stage <span style="color: #009900;">&#123;</span>
        fill<span style="color: #339933;">:</span> <span style="color: #003399;">Color</span>.<span style="color: #006633;">BLACK</span>
        content<span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span>
            DragGroup<span style="color: #009900;">&#123;</span>
                translateX<span style="color: #339933;">:</span> <span style="color: #cc66cc;">200</span>, translateY<span style="color: #339933;">:</span> <span style="color: #cc66cc;">200</span>
                content<span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span>circle, floatingCircles<span style="color: #009900;">&#93;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#93;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    closeAction<span style="color: #339933;">:</span> function<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        java.<span style="color: #006633;">lang</span>.<span style="color: #003399;">System</span>.<span style="color: #006633;">exit</span><span style="color: #009900;">&#40;</span> 0 <span style="color: #009900;">&#41;</span>;
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// starts all animations</span>
angleAnimation.<span style="color: #006633;">start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>;
breathAnimation.<span style="color: #006633;">start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>;</pre>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://silveiraneto.net/2008/08/11/javafx-draggable-node/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
	</channel>
</rss>
