0

スターリングを使用して基本的なas3Webプロジェクトを作成しました。iamが行うのは、単純な画像を作成し、onEnterframeで画像をxに沿って移動することだけです。しかし、アニメーション/動きはスムーズではないようです。数フレームごとにフレーム/ジャーキネスがジャンプします。以下は、onEnterFrameと画像の作成に使用されるテスト関数です。これに関するどんな助けも大いに感謝されます。

    private function onEnterFrame(e:Event):void
    {
        if(!img)
            return;
        img.x += 1;

        if(img.x >= 960)
            img.x = 0;
    }

    private function test():void
    {
          img = new Image(sAssets.getTextureAtlas("atlas").getTexture("flight_00"));
          addChild(img);
          img.x = 0;
          img.y = 320;
    }
4

1 に答える 1

3

これは、各フレームの時間がわずかに異なるためです。スムーズなアニメーションを実現するには、passedTime引数(前のフレームから経過した時間を格納する)を使用してonEnterFrameハンドラーを宣言し、各フレームが1 / frameRate秒続くと想定する代わりに、この値を使用してオブジェクトを移動します。

private function onEnterFrame(passedTime:Number):void
{
    if(!img)
        return;

    img.x += passedTime * 100; // speed is 100 px/sec

    if(img.x >= 960)
        img.x = 0;
}

注:この形式のイベントハンドラー(イベント引数なし)は、Starlingの最近のバージョンでサポートされており、パフォーマンスが向上するはずです。古いバージョンを使用している場合は、イベントオブジェクトの対応するプロパティから経過時間を取得できます。

于 2013-02-05T21:19:10.947 に答える