Try this:

public class HelloAnimatedRectangle extends Application {
    @Override public void start(Stage stage) throws Exception {
        final double sceneWidth = 1024;
        final double sceneHeight = 768;
        final double squareSize = 200;
        final double halfStroke = 0;

        Rectangle rect = new Rectangle(squareSize, squareSize, Color.ORANGE);
        rect.setStroke(Color.WHITE);
        rect.setStrokeWidth(halfStroke * 2);

        Group root = new Group(rect);
        Scene scene = new Scene(root, sceneWidth, sceneHeight);
        scene.setFill(Color.BLACK);
        stage.setScene(scene);
        stage.setTitle("Animated Rectangle");
        stage.show();

        TranslateTransition translation = new 
TranslateTransition(Duration.seconds(20), rect);
        translation.setFromX(halfStroke);
        translation.setFromY(halfStroke);
        translation.setToX((sceneWidth - squareSize) / 2);
        translation.setToY((sceneHeight - squareSize) / 2);

        RotateTransition rotation = new RotateTransition(Duration.seconds(10), 
rect);
        rotation.setAutoReverse(true);
        rotation.setCycleCount(2);
        rotation.setToAngle(720);

        TranslateTransition translation2 = new 
TranslateTransition(Duration.seconds(20), rect);
        translation2.setFromX((sceneWidth - squareSize) / 2);
        translation2.setFromY((sceneHeight - squareSize) / 2);
        translation2.setToX(sceneWidth - squareSize - halfStroke);
        translation2.setToY(sceneHeight - squareSize - halfStroke);

        SequentialTransition tx = new SequentialTransition(translation, 
rotation, translation2);
        tx.play();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

You can mess with the "halfStroke" variable to stroke it white to get greater 
contrast between the background and the shape. The translations looks smooth to 
me, I don't see any dropped frames. The rotation looks alternately smooth and 
chunky depending on the position of the rotation. I believe this is due to 
anti-aliasing and pixel refresh speeds (as opposed to an actual performance 
problem or timing problem).

What do you see?

Richard

On Jul 25, 2013, at 9:49 AM, Richard Bair <richard.b...@oracle.com> wrote:

> I just ran Ensemble on mac with the latest, with pulse logger turned on. Ran 
> the SequentialTransition demo and I agree it didn't look smooth, even though 
> the pulse logger reports that of over 3,000 pulses, not a single one crossed 
> the 16ms threshold. Is the grid background causing an optical illusion? (as 
> the shape passes a boundary it may temporarily looked wider and then shorter 
> making it look like it is changing size / speed??)
> 
> Richard
> 
> On Jul 25, 2013, at 9:28 AM, Richard Bair <richard.b...@oracle.com> wrote:
> 
>> I don't see his link to impact.js, can you send it again?
>> 
>> Usually the stutters that we see are the result of threading problems 
>> between Glass & Prism rather than a performance (fps) problem. You probably 
>> saw the issue come by yesterday that smoothed this out on the mac. In order 
>> to get rid of these, what we need to do is have a way to measure when they 
>> happen, and have a reproducible example. I've seen them forever on the mac 
>> (but now that *should* be fixed), but on windows I've never seen them 
>> (windows was always exceptionally smooth for me), and that has been the 
>> primary challenge in nailing it down.
>> 
>> It may be related to drift -- 1/60th of a second is 16.666666… ms long, and 
>> the timer used to get pulses may be running at 16ms for example, in which 
>> case there is drift where eventually it takes 2 frames worth of time to draw 
>> a single frame because we're waiting on the card.
>> 
>> I'm not sure how WebView's interaction with prism would be avoiding this, 
>> but that's what it sounds like.
>> 
>> We also recently changed the way the FX thread and render thread interact so 
>> as not to drop frames. I would expect that to have an impact in smoothing 
>> things out as well.
>> 
>> Are you building locally or are you using one of the promoted builds? Do you 
>> see the hiccups right now in Ensemble?
>> 
>> Richard
>> 
>> On Jul 25, 2013, at 3:21 AM, Felix Bembrick <felix.bembr...@gmail.com> wrote:
>> 
>>> I have noticed something curious.
>>> 
>>> When I run the impact.js demo that Klaus posted a link to I see a very 
>>> smooth animation.  The curious part is that on this same machine I see 
>>> noticeable flicker and jittering when I run even the most simple JavaFX 
>>> animation and have never seen one that performs as smoothly as the 
>>> impact.js demo within WebView.  Also, the impact.js demo runs very smoothly 
>>> even when I run the WebView maximised.
>>> 
>>> OK, so now I know that it can't be the actual graphics hardware or driver 
>>> that cause JavaFX animations to flicker and clearly JavaFX *can* render 
>>> animated content without jittering so why then do simple animations (such 
>>> as those from Ensemble) perform so poorly?
>>> 
>>> 
>>> On 25 July 2013 02:02, Artem Ananiev <artem.anan...@oracle.com> wrote:
>>> 
>>> On 7/24/2013 2:55 AM, Felix Bembrick wrote:
>>> Windows 7 64-bit here.
>>> 
>>> On this platform, JavaFX web component is compiled without JIT support for 
>>> JavaScript:
>>> 
>>> https://javafx-jira.kenai.com/browse/RT-24998
>>> 
>>> It explains why it is slow, but it doesn't explain rendering artifacts.
>>> 
>>> Thanks,
>>> 
>>> Artem
>>> 
>>> 
>>> On 24 July 2013 08:53, Richard Bair <richard.b...@oracle.com> wrote:
>>> 
>>> I've filed https://javafx-jira.kenai.com/browse/RT-31885, lets see how
>>> that turns out.
>>> 
>>> Richard
>>> 
>>> On Jul 23, 2013, at 3:49 PM, Richard Bair <richard.b...@oracle.com> wrote:
>>> 
>>> Doh, that's just what you said :-)
>>> 
>>> On Jul 23, 2013, at 3:49 PM, Richard Bair <richard.b...@oracle.com>
>>> wrote:
>>> 
>>> I'm not seeing anything at all, beyond a fuzzy background image
>>> (similar app to yours):
>>> 
>>> import javafx.application.Application;
>>> import javafx.scene.Scene;
>>> import javafx.scene.web.WebView;
>>> import javafx.stage.Stage;
>>> 
>>> public class HelloWebView extends Application {
>>>  @Override public void start(Stage stage) throws Exception {
>>>      WebView web = new WebView();
>>>      web.getEngine().load("http://famo.us/";);
>>>      Scene scene = new Scene(web);
>>>      stage.setScene(scene);
>>>      stage.setTitle("HelloWebView");
>>>      stage.show();
>>>  }
>>> 
>>>  public static void main(String[] args) {
>>>      launch(args);
>>>  }
>>> }
>>> 
>>> I'm on Mac. What OS are you running on?
>>> 
>>> 
>>> 
>>> 
>> 
> 

Reply via email to