2016-06-13 9 views
2

Adob​​e Animateのタイムラインに問題があり、CreateJSで呼び出されたオーディオと同期していません。問題は、フレームレートがAdobe Animateタイムラインfpsに一致するように24fpsに設定されていることです。フレームレートが24fpsよりも遅い場合は、タイムラインがボタンやビジュアルの表示がずっと遅くなる前にオーディオが終了します。 fpsが24fpsより速い場合、オーディオはタイムラインが終了する前にカットオフされます。キャンバスタイムラインがオーディオと同期していません

これを解決する理由がわかっているのですか、解決策がありますか?ありがとう。

答えて

0

本当にこれに対する解決策はありません。最善の方法は、サウンドが終了したときにタイムフレーム(またはムービークリップ)を移動する関数を呼び出すことです。

これにはcompleteコールバックを使用できます。 さらに詳しい情報とサンプルはSoundJS documentationにあります。

0

デフォルトでは、アニメートではティッカーのフレームレートは設定されますが、ムービークリップ自体は設定されません。ティッカーレートに従うと、描画に時間がかかりすぎて遅くなることがあります。

この問題を解決するには、framerate on the movieclipそのものをティッカーに追加してください。

これは、ビデオクリップを適切なフレームレートに維持するのに必要なフレームをドロップするため、わずかに不規則なアニメーションが発生する可能性がありますが、少なくとも適切な速度で再生されるため、

あなたはアニメーションを作成するHTML出力ファイルを使用している場合は、handleComplete機能では、この行を追加することができます。

function handleComplete(evt) { 
    //This function is always called, irrespective of the content. You can use the variable "stage" after it is created in token create_stage. 
    var queue = evt.target; 
    var ssMetadata = lib.ssMetadata; 
    for(i=0; i<ssMetadata.length; i++) { 
     ss[ssMetadata[i].name] = new createjs.SpriteSheet({"images": [queue.getResult(ssMetadata[i].name)], "frames": ssMetadata[i].frames}) 
    } 
    exportRoot = new lib._MyAnimation_canvas(); 
    stage = new createjs.Stage(canvas); 
    stage.addChild(exportRoot); 
    stage.enableMouseOver();  

    exportRoot.framerate = lib.properties.fps; // <-- ADD THIS LINE 

    //Registers the "tick" event listener. 
    fnStartAnimation = function() { 
     createjs.Ticker.setFPS(lib.properties.fps); 
     createjs.Ticker.addEventListener("tick", stage); 
    } 

より複雑なアニメーションは、これは他の場所に設定する必要があります。あなた自身の他のjsコードを使用している場合、問題のあるムービークリップを見つけてそこに設定する必要があります。

関連する問題