<?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; Parallax</title>
	<atom:link href="http://silveiraneto.net/tag/parallax/feed/" rel="self" type="application/rss+xml" />
	<link>http://silveiraneto.net</link>
	<description>the world is a pixel</description>
	<lastBuildDate>Sun, 08 Jan 2012 05:17:57 +0000</lastBuildDate>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.5</generator>
		<item>
		<title>JavaFX, Side Scrolling Gaming</title>
		<link>http://silveiraneto.net/2008/08/18/javafx-side-scrolling-gamming/</link>
		<comments>http://silveiraneto.net/2008/08/18/javafx-side-scrolling-gamming/#comments</comments>
		<pubDate>Mon, 18 Aug 2008 03:29:15 +0000</pubDate>
		<dc:creator>Silveira</dc:creator>
				<category><![CDATA[english]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[game development]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[netbeans]]></category>
		<category><![CDATA[Parallax]]></category>
		<category><![CDATA[side scrolling]]></category>
		<category><![CDATA[Slidding]]></category>

		<guid isPermaLink="false">http://silveiraneto.net/?p=1096</guid>
		<description><![CDATA[I started to make several small JavaFX game demos. I&#8217;m doing that to fell where JavaFX is good to make this sort of game and what patterns would be frequently needed to implement, where I will place a little framework for fast development of simple casual games. What I&#8217;m calling now just &#8216;GameFX&#8217;. My first [...]]]></description>
			<content:encoded><![CDATA[<p>I started to make several small JavaFX game demos.  I&#8217;m doing that to fell where JavaFX is good to make this sort of game and what patterns would be frequently needed to implement, where I will place a little framework for fast development of simple casual games. What I&#8217;m calling now just &#8216;GameFX&#8217;.  My first experiment was to creating a side scrolling animation that&#8217;s is usefull to create the <a title="Parallax Scrolling" href="http://en.wikipedia.org/wiki/Parallax_scrolling">parallax effect</a> in <a title="Side scrolling games on Wikipédia" href="http://en.wikipedia.org/wiki/Side-scrolling_video_game">side scrolling games</a>. For that I created the class Slidding. You create an Slidding with a set of nodes and they will slide from right to left and when a node reaches the left side it back to the right side.</p>
<p style="text-align: center;"><img class="size-full wp-image-1103 aligncenter" title="Slidding explanation" src="http://silveiraneto.net/wp-content/uploads/2008/08/slidding.png" alt="" width="498" height="183" /></p>
<p>Example:</p>
<div class="wp_syntax">
<div class="code">
<pre class="java java" style="font-family:monospace;">Slidding <span style="color: #009900;">&#123;</span>
    content<span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span>
       Circle <span style="color: #009900;">&#123;</span>
           centerX<span style="color: #339933;">:</span> <span style="color: #cc66cc;">100</span>, centerY<span style="color: #339933;">:</span> <span style="color: #cc66cc;">100</span>, radius<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;">RED</span>
       <span style="color: #009900;">&#125;</span>,
       Circle <span style="color: #009900;">&#123;</span>
           centerX<span style="color: #339933;">:</span> <span style="color: #cc66cc;">300</span>, centerY<span style="color: #339933;">:</span> <span style="color: #cc66cc;">100</span>, radius<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;">BLUE</span>
       <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#93;</span>
    clock<span style="color: #339933;">:</span> 0.05s
 <span style="color: #009900;">&#125;</span></pre>
</div>
</div>
<p style="text-align: left;">That produces:</p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="src" value="http://www.youtube.com/v/jczHIVIkclY&amp;hl=pt-br&amp;fs=1" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/jczHIVIkclY&amp;hl=pt-br&amp;fs=1" allowfullscreen="true"></embed></object></p>
<p>You create a Slidding with a list of Nodes at content, a clock (that will determine the speed of that animation) and a width. If you don&#8217;t provide a width, the slidding will do the best effort to determine one.  You can use this approach to create more complex scenarios, using more Slidding groups.</p>
<p>This is a example of that:</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.animation.*</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.scene.*</span>;
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">gamefx.Slidding</span>;
&nbsp;
var SCREENW <span style="color: #339933;">=</span> <span style="color: #cc66cc;">500</span>;
var SCREENH <span style="color: #339933;">=</span> <span style="color: #cc66cc;">400</span>;
&nbsp;
<span style="color: #666666; font-style: italic;">/* the sky is a light blue rectangle */</span>
var sky <span style="color: #339933;">=</span> <span style="color: #003399;">Rectangle</span> <span style="color: #009900;">&#123;</span>
    width<span style="color: #339933;">:</span> SCREENW, height<span style="color: #339933;">:</span> SCREENH
    fill<span style="color: #339933;">:</span> LinearGradient <span style="color: #009900;">&#123;</span>
        startX<span style="color: #339933;">:</span> <span style="color: #cc66cc;">0.0</span> , startY<span style="color: #339933;">:</span> <span style="color: #cc66cc;">0.0</span>
        endX<span style="color: #339933;">:</span> <span style="color: #cc66cc;">0.0</span>, endY<span style="color: #339933;">:</span> <span style="color: #cc66cc;">1.0</span>
        proportional<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">true</span>
        stops<span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span>
            Stop <span style="color: #009900;">&#123;</span> offset<span style="color: #339933;">:</span> <span style="color: #cc66cc;">0.0</span> color<span style="color: #339933;">:</span> <span style="color: #003399;">Color</span>.<span style="color: #006633;">LIGHTBLUE</span> <span style="color: #009900;">&#125;</span>,
            Stop <span style="color: #009900;">&#123;</span> offset<span style="color: #339933;">:</span> <span style="color: #cc66cc;">0.7</span> color<span style="color: #339933;">:</span> <span style="color: #003399;">Color</span>.<span style="color: #006633;">LIGHTYELLOW</span> <span style="color: #009900;">&#125;</span>,
            Stop <span style="color: #009900;">&#123;</span> offset<span style="color: #339933;">:</span> <span style="color: #cc66cc;">1.0</span> color<span style="color: #339933;">:</span> <span style="color: #003399;">Color</span>.<span style="color: #006633;">YELLOW</span> <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#93;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* the ground is a olive rectangle */</span>
var ground <span style="color: #339933;">=</span> <span style="color: #003399;">Rectangle</span> <span style="color: #009900;">&#123;</span>
    translateY<span style="color: #339933;">:</span> <span style="color: #cc66cc;">300</span>
    width<span style="color: #339933;">:</span> <span style="color: #cc66cc;">500</span>, height<span style="color: #339933;">:</span> <span style="color: #cc66cc;">100</span>
    fill<span style="color: #339933;">:</span> LinearGradient <span style="color: #009900;">&#123;</span>
        startX<span style="color: #339933;">:</span> <span style="color: #cc66cc;">0.0</span> , startY<span style="color: #339933;">:</span> <span style="color: #cc66cc;">0.0</span>
        endX<span style="color: #339933;">:</span> <span style="color: #cc66cc;">0.0</span>, endY<span style="color: #339933;">:</span> <span style="color: #cc66cc;">1.0</span>
        proportional<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">true</span>
        stops<span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span>
            Stop <span style="color: #009900;">&#123;</span> offset<span style="color: #339933;">:</span> <span style="color: #cc66cc;">0.2</span> color<span style="color: #339933;">:</span> <span style="color: #003399;">Color</span>.<span style="color: #006633;">OLIVE</span> <span style="color: #009900;">&#125;</span>,
            Stop <span style="color: #009900;">&#123;</span> offset<span style="color: #339933;">:</span> <span style="color: #cc66cc;">1.0</span> color<span style="color: #339933;">:</span> <span style="color: #003399;">Color</span>.<span style="color: #006633;">DARKOLIVEGREEN</span> <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#93;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* a clod cloud is like an ellipse */</span>
<span style="color: #000000; font-weight: bold;">class</span> Cloud <span style="color: #000000; font-weight: bold;">extends</span> Ellipse <span style="color: #009900;">&#123;</span>
    override attribute radiusX <span style="color: #339933;">=</span> <span style="color: #cc66cc;">50</span>;
    override attribute radiusY <span style="color: #339933;">=</span> <span style="color: #cc66cc;">25</span>;
    override attribute fill <span style="color: #339933;">=</span> <span style="color: #003399;">Color</span>.<span style="color: #006633;">WHITESMOKE</span>;
    override attribute opacity <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0.5</span>;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* we create a slidding of clouds */</span>
var clouds <span style="color: #339933;">=</span> Slidding <span style="color: #009900;">&#123;</span>
    content<span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span>
        Cloud<span style="color: #009900;">&#123;</span>centerX<span style="color: #339933;">:</span> <span style="color: #cc66cc;">100</span>, centerY<span style="color: #339933;">:</span> <span style="color: #cc66cc;">100</span><span style="color: #009900;">&#125;</span>,
        Cloud<span style="color: #009900;">&#123;</span>centerX<span style="color: #339933;">:</span> <span style="color: #cc66cc;">150</span>, centerY<span style="color: #339933;">:</span>  <span style="color: #cc66cc;">20</span><span style="color: #009900;">&#125;</span>,
        Cloud<span style="color: #009900;">&#123;</span>centerX<span style="color: #339933;">:</span> <span style="color: #cc66cc;">220</span>, centerY<span style="color: #339933;">:</span> <span style="color: #cc66cc;">150</span><span style="color: #009900;">&#125;</span>,
        Cloud<span style="color: #009900;">&#123;</span>centerX<span style="color: #339933;">:</span> <span style="color: #cc66cc;">260</span>, centerY<span style="color: #339933;">:</span> <span style="color: #cc66cc;">200</span><span style="color: #009900;">&#125;</span>,
        Cloud<span style="color: #009900;">&#123;</span>centerX<span style="color: #339933;">:</span> <span style="color: #cc66cc;">310</span>, centerY<span style="color: #339933;">:</span>  <span style="color: #cc66cc;">40</span><span style="color: #009900;">&#125;</span>,
        Cloud<span style="color: #009900;">&#123;</span>centerX<span style="color: #339933;">:</span> <span style="color: #cc66cc;">390</span>, centerY<span style="color: #339933;">:</span> <span style="color: #cc66cc;">150</span><span style="color: #009900;">&#125;</span>,
        Cloud<span style="color: #009900;">&#123;</span>centerX<span style="color: #339933;">:</span> <span style="color: #cc66cc;">450</span>, centerY<span style="color: #339933;">:</span>  <span style="color: #cc66cc;">30</span><span style="color: #009900;">&#125;</span>,
        Cloud<span style="color: #009900;">&#123;</span>centerX<span style="color: #339933;">:</span> <span style="color: #cc66cc;">550</span>, centerY<span style="color: #339933;">:</span> <span style="color: #cc66cc;">100</span><span style="color: #009900;">&#125;</span>,
    <span style="color: #009900;">&#93;</span>
    clock<span style="color: #339933;">:</span> 0.2s
<span style="color: #009900;">&#125;</span>
&nbsp;
var SUNX <span style="color: #339933;">=</span> <span style="color: #cc66cc;">100</span>;
var SUNY <span style="color: #339933;">=</span> <span style="color: #cc66cc;">300</span>;
var rotation <span style="color: #339933;">=</span> 0;
&nbsp;
<span style="color: #666666; font-style: italic;">/* the sun, with it's corona */</span>
var sun <span style="color: #339933;">=</span> <span style="color: #003399;">Group</span> <span style="color: #009900;">&#123;</span>
    rotate<span style="color: #339933;">:</span> bind rotation
    anchorX<span style="color: #339933;">:</span> SUNX, anchorY<span style="color: #339933;">:</span> SUNY
    content<span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span>
        <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>i in <span style="color: #009900;">&#91;</span>0..11<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            Arc <span style="color: #009900;">&#123;</span>
                centerX<span style="color: #339933;">:</span> SUNX, centerY<span style="color: #339933;">:</span> SUNY
                radiusX<span style="color: #339933;">:</span> <span style="color: #cc66cc;">500</span>, radiusY<span style="color: #339933;">:</span> <span style="color: #cc66cc;">500</span>
                startAngle<span style="color: #339933;">:</span> <span style="color: #cc66cc;">2</span> <span style="color: #339933;">*</span> i <span style="color: #339933;">*</span> <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">360</span> <span style="color: #339933;">/</span> <span style="color: #cc66cc;">24</span><span style="color: #009900;">&#41;</span>, length<span style="color: #339933;">:</span> <span style="color: #cc66cc;">360</span> <span style="color: #339933;">/</span> <span style="color: #cc66cc;">24</span>
                type<span style="color: #339933;">:</span> ArcType.<span style="color: #006633;">ROUND</span>
                fill<span style="color: #339933;">:</span> <span style="color: #003399;">Color</span>.<span style="color: #006633;">YELLOW</span>
                opacity<span style="color: #339933;">:</span> <span style="color: #cc66cc;">0.3</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span>,
        Circle <span style="color: #009900;">&#123;</span>
            centerX<span style="color: #339933;">:</span> SUNX, centerY<span style="color: #339933;">:</span> SUNY, radius<span style="color: #339933;">:</span> <span style="color: #cc66cc;">60</span>
            fill<span style="color: #339933;">:</span> <span style="color: #003399;">Color</span>.<span style="color: #006633;">YELLOW</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;">/* animate the corona changing the it rotation angle */</span>
var anim <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> rotation <span style="color: #339933;">=&amp;</span>gt; <span style="color: #cc66cc;">0.0</span> tween Interpolator.<span style="color: #006633;">LINEAR</span>
        <span style="color: #009900;">&#125;</span>,
        KeyFrame <span style="color: #009900;">&#123;</span>
            time <span style="color: #339933;">:</span> 2s
            values<span style="color: #339933;">:</span> rotation <span style="color: #339933;">=&amp;</span>gt; <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">360.0</span><span style="color: #339933;">/</span><span style="color: #cc66cc;">12</span><span style="color: #009900;">&#41;</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>
anim.<span style="color: #006633;">start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>;
&nbsp;
<span style="color: #666666; font-style: italic;">/* a tree is a simple polygon */</span>
<span style="color: #000000; font-weight: bold;">class</span> Tree <span style="color: #000000; font-weight: bold;">extends</span> <span style="color: #003399;">Polygon</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> attribute x <span style="color: #339933;">=</span> 0;
    <span style="color: #000000; font-weight: bold;">public</span> attribute y <span style="color: #339933;">=</span> 0;
    override attribute points <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span>0,0, <span style="color: #cc66cc;">10</span>,<span style="color: #cc66cc;">30</span>, <span style="color: #339933;">-</span><span style="color: #cc66cc;">10</span>,<span style="color: #cc66cc;">30</span><span style="color: #009900;">&#93;</span>;
    override attribute fill <span style="color: #339933;">=</span> <span style="color: #003399;">Color</span>.<span style="color: #006633;">DARKOLIVEGREEN</span>;
    init<span style="color: #009900;">&#123;</span>
        translateX <span style="color: #339933;">=</span> x;
        translateY <span style="color: #339933;">=</span> y;
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* a forest is a lot of trees */</span>
var forest <span style="color: #339933;">=</span> Slidding<span style="color: #009900;">&#123;</span>
    content<span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span>
        Tree<span style="color: #009900;">&#123;</span>x<span style="color: #339933;">:</span> <span style="color: #cc66cc;">20</span>, y<span style="color: #339933;">:</span> <span style="color: #cc66cc;">320</span><span style="color: #009900;">&#125;</span>, Tree<span style="color: #009900;">&#123;</span>x<span style="color: #339933;">:</span> <span style="color: #cc66cc;">80</span>, y<span style="color: #339933;">:</span> <span style="color: #cc66cc;">280</span><span style="color: #009900;">&#125;</span>, Tree<span style="color: #009900;">&#123;</span>x<span style="color: #339933;">:</span><span style="color: #cc66cc;">120</span>, y<span style="color: #339933;">:</span> <span style="color: #cc66cc;">330</span><span style="color: #009900;">&#125;</span>,
        Tree<span style="color: #009900;">&#123;</span>x<span style="color: #339933;">:</span><span style="color: #cc66cc;">140</span>, y<span style="color: #339933;">:</span> <span style="color: #cc66cc;">280</span><span style="color: #009900;">&#125;</span>, Tree<span style="color: #009900;">&#123;</span>x<span style="color: #339933;">:</span><span style="color: #cc66cc;">180</span>, y<span style="color: #339933;">:</span> <span style="color: #cc66cc;">310</span><span style="color: #009900;">&#125;</span>, Tree<span style="color: #009900;">&#123;</span>x<span style="color: #339933;">:</span><span style="color: #cc66cc;">220</span>, y<span style="color: #339933;">:</span> <span style="color: #cc66cc;">320</span><span style="color: #009900;">&#125;</span>,
        Tree<span style="color: #009900;">&#123;</span>x<span style="color: #339933;">:</span><span style="color: #cc66cc;">260</span>, y<span style="color: #339933;">:</span> <span style="color: #cc66cc;">280</span><span style="color: #009900;">&#125;</span>, Tree<span style="color: #009900;">&#123;</span>x<span style="color: #339933;">:</span><span style="color: #cc66cc;">280</span>, y<span style="color: #339933;">:</span> <span style="color: #cc66cc;">320</span><span style="color: #009900;">&#125;</span>, Tree<span style="color: #009900;">&#123;</span>x<span style="color: #339933;">:</span><span style="color: #cc66cc;">300</span>, y<span style="color: #339933;">:</span> <span style="color: #cc66cc;">300</span><span style="color: #009900;">&#125;</span>,
        Tree<span style="color: #009900;">&#123;</span>x<span style="color: #339933;">:</span><span style="color: #cc66cc;">400</span>, y<span style="color: #339933;">:</span> <span style="color: #cc66cc;">320</span><span style="color: #009900;">&#125;</span>, Tree<span style="color: #009900;">&#123;</span>x<span style="color: #339933;">:</span><span style="color: #cc66cc;">500</span>, y<span style="color: #339933;">:</span> <span style="color: #cc66cc;">280</span><span style="color: #009900;">&#125;</span>, Tree<span style="color: #009900;">&#123;</span>x<span style="color: #339933;">:</span><span style="color: #cc66cc;">500</span>, y<span style="color: #339933;">:</span> <span style="color: #cc66cc;">320</span><span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#93;</span>
    clock<span style="color: #339933;">:</span> 0.1s
    width<span style="color: #339933;">:</span> SCREENW
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #003399;">Frame</span> <span style="color: #009900;">&#123;</span>
    title<span style="color: #339933;">:</span> <span style="color: #0000ff;">&quot;Side Scrolling&quot;</span>
    width<span style="color: #339933;">:</span> SCREENW
    height<span style="color: #339933;">:</span> SCREENH
    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>
    visible<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">true</span>
&nbsp;
    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>sky, sun, clouds, ground, forest<span style="color: #009900;">&#93;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre>
</div>
</div>
<p>Producing:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="src" value="http://www.youtube.com/v/Qd0HvPkGF10&amp;hl=pt-br&amp;fs=1" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/Qd0HvPkGF10&amp;hl=pt-br&amp;fs=1" allowfullscreen="true"></embed></object></p>
<p>If you want to try these examples, place this Slidding implementation as <em>Slidding.fx</em> in a directory named gamefx, or grab <a href="http://silveiraneto.net/downloads/GameFX_version_0.zip">here the NetBeans project</a>.</p>
<div class="wp_syntax">
<div class="code">
<pre class="java java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">gamefx</span>;
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javafx.scene.CustomNode</span>;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javafx.scene.Node</span>;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javafx.scene.Group</span>;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javafx.animation.Timeline</span>;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javafx.animation.KeyFrame</span>;
&nbsp;
<span style="color: #666666; font-style: italic;">/*
 * The slidding group of nodes for side scrolling animations.
 *
 * @example
 * Slidding {
 *    width: 300
 *    content: [
 *       Circle { centerX: 100, centerY: 100, radius: 40, fill: Color.RED },
 *       Circle { centerX: 200, centerY: 100, radius: 40, fill: Color.BLUE },
 *    ]
 *    clock: 0.05s
 * }
 */</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Slidding <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>;
    <span style="color: #000000; font-weight: bold;">public</span> attribute clock <span style="color: #339933;">=</span> 0.1s;
    <span style="color: #000000; font-weight: bold;">public</span> attribute width<span style="color: #339933;">:</span> <span style="color: #003399;">Number</span>;
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> attribute autostart <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">true</span>;
    <span style="color: #000000; font-weight: bold;">public</span> attribute cycle <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">true</span>;
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> attribute anim <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> clock
                action<span style="color: #339933;">:</span> function<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                    <span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span>node in content<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                        node.<span style="color: #006633;">translateX</span>--;
                        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>node.<span style="color: #006633;">getX</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> node.<span style="color: #006633;">translateX</span> <span style="color: #339933;">+</span> node.<span style="color: #006633;">getWidth</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>lt;= 0<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                            <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>cycle<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                                node.<span style="color: #006633;">translateX</span> <span style="color: #339933;">=</span> width <span style="color: #339933;">-</span> node.<span style="color: #006633;">getX</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>;
                            <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
                                delete node from content;
                            <span style="color: #009900;">&#125;</span>
                        <span style="color: #009900;">&#125;</span>
                    <span style="color: #009900;">&#125;</span>
                <span style="color: #009900;">&#125;</span> <span style="color: #666666; font-style: italic;">// action</span>
            <span style="color: #009900;">&#125;</span> <span style="color: #666666; font-style: italic;">// keyframe</span>
        <span style="color: #009900;">&#93;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #666666; font-style: italic;">// timeline </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: #666666; font-style: italic;">// if width is not setted, we try to figure out</span>
        <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>width <span style="color: #339933;">==</span> 0<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span>node in content<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>node.<span style="color: #006633;">getX</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> node.<span style="color: #006633;">getWidth</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>gt; width<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                    width <span style="color: #339933;">=</span> node.<span style="color: #006633;">getX</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> node.<span style="color: #006633;">getWidth</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>;
                <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;">// normaly the slidding will start automaticaly</span>
        <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>autostart<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            anim.<span style="color: #006633;">start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>;
        <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">// just a Group of Nodes</span>
        <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #003399;">Group</span> <span style="color: #009900;">&#123;</span>
            content<span style="color: #339933;">:</span> content
        <span style="color: #009900;">&#125;</span>;
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre>
</div>
</div>
<p>Is not the final implementation but it&#8217;s a idea. Soon I&#8217;ll show a demo game I did using theses codes.</p>
]]></content:encoded>
			<wfw:commentRss>http://silveiraneto.net/2008/08/18/javafx-side-scrolling-gamming/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
	</channel>
</rss>

