2017-05-23 13 views
2

私は自動タイピングテキストアニメーションのための以下のコードを持っています。テキストが画像の前にあり、最初に完全な画像を見るようにしてから、テキストが「タイプする」ようにします。私は最良の方法は、テキストがアニメーション化する前に2-3秒の遅延を追加することですが、私はそれを行う方法が本当にわからない。JSアニメーションテキストに遅延を追加しますか?

助けていただければ幸いです。ありがとう!

function cursorAnimation() { 
    $('#cursor').animate({ 
    opacity: 0 
    }, 'fast', 'swing').animate({ 
    opacity: 1 
    }, 'fast', 'swing'); 
} 
$(document).ready(function() { 
    setInterval('cursorAnimation()', 1000); 
}); 

var text = 'TEXT GOES HERE'; 

$.each(text.split(''), function(i, letter) { 
    setTimeout(function() { 
    $('#container').html($('#container').html() + letter); 
    }, 110 * i); 
}); 
+1

あなたがそのコードを書いた場合、あなたはすでに私は、コードを書いていないのsetTimeout()... – nnnnnn

+0

を使用する方法を知っています。それは私が行っているプロジェクトの一部であり、バックエンドの開発者は予防接種中です。彼の返事を待つ代わりに、私はそれを自分でやりたかったのです。私は単なるデザイナーで、コードの周りに自分の道を知っています。 :) – imsogrym

+0

あなたのコードに遅延を設定するためにすでに関数が使用されています – CyberAbhay

答えて

0

setTimeout(function() { 
    console.log("Delayed message"); 
}.bind(this), 3000); 

は最善の方法ではありません。画像がさまざまな種類のネットワークにロードされるまでにどれくらいの時間がかかるか、非常に高速なもの、非常に遅いものがあるかは決してわかりません。

代わりに、イベントなどでイベントを発生させる必要があります。画像がロードされたとき。下図のようにあなたは、オプションとして、ウィンドウの負荷にあなたのコードを実行することができます。

function cursorAnimation() { 
    $('#cursor').animate({ 
    opacity: 0 
    }, 'fast', 'swing').animate({ 
    opacity: 1 
    }, 'fast', 'swing'); 
} 
$(document).ready(function() { 
    setInterval('cursorAnimation()', 1000); 

    $(window).on("load", function(){ 
    // do here tasks that you want to run after all page assets e.g. images have been loaded 
    showText(); 
    });//window load() 
}); 

function showText() { 
    var text = 'TEXT GOES HERE'; 
    $.each(text.split(''), function(i, letter) { 
    setTimeout(function() { 
     $('#container').html($('#container').html() + letter); 
    }, 110 * i); 
    }); 
} 
+0

これは本当です。私はプロジェクトに関して非常に具体的ではありませんでした。それは、ローカルに表示されるプロトタイプのショーケースであり、読み込み時間は問題にならないでしょう。しかし、プロジェクトが稼動するなら、これを最善の方法と考えています。どうもありがとうございました! – imsogrym

0

Generalyいくつかの時間後にあなたの関数を呼び出すためのsetTimeout()関数を使用してみてください。遅延コードをコールバックにパックし、そのコールバックをsetTimeoutメソッドに渡すことができます。オブジェクトで作業中に機能を維持するため。パッケージ化されたコールバックでbind(this)に電話することをお勧めします。いくつかの任意の遅延を追加し、あなたのケース

function cursorAnimation() { 
    $('#cursor').animate({ 
    opacity: 0 
    }, 'fast', 'swing').animate({ 
    opacity: 1 
    }, 'fast', 'swing'); 
} 
$(document).ready(function() { 
    setInterval('cursorAnimation()', 1000); 
}); 

var text = 'TEXT GOES HERE'; 

setTimeout(function() { 
    // delayed code 
    $.each(text.split(''), function(i, letter) { 
    setTimeout(function() { 
     $('#container').html($('#container').html() + letter); 
    }, 110 * i); 
    }); 
    // end of delayed code 
}.bind(this), 3000); 
関連する問題