[英]gsap tweenlite/tweenmax garbage collecting, references and performances
我試圖了解使用TweenLite / TweenMax的最佳方法是什么。
下面是一個評論很好的例子:
$(document).ready(function () {
var elementOne = $('#elementOne');
var elementTwo = $('#elementTwo');
var myTween;
// is it useful to overwrite the variable?
myTween = TweenMax.to(elementOne, 1, {
opacity: 0
});
myTween = TweenMax.to(elementTwo, 1, {
left: 0,
onComplete: destroy
});
function destroy () {
// suggested on tweenmax docs
// the console.log still returns me the object
myTween.kill();
console.log(myTween);
// is it required for garbage collecting?
// now the console.log returns me null
myTween = null;
console.log(myTween);
// and then...jQuery GC friendly remove
elementOne.remove();
elementTwo.remove();
}
});
除了通常對任何JS對象執行的操作之外,您不需要做任何特殊的事情來使gc(或時間軸)可用於gc。 換句話說,如果你在自己的代碼中維護一個實例的引用,它就會一直存在(否則你的代碼就會崩潰)。 但你並不需要專門殺()補間。 GSAP已經付出了很多努力來確保事情得到優化和無頭痛。 必要時,引擎將自動釋放已完成的補間以進行垃圾回收。 但是,如果你維護一個引用並重新啟動()它,那么補間仍然可以工作。
僅僅因為你在補間實例上調用kill(),這並沒有強制瀏覽器運行它的垃圾收集例程。 它也不會使您的變量為空。 這就是JavaScript的工作方式(這是一件好事)。 它與TweenLite / Max無關。
還要記住,您不需要將任何補間實例存儲在變量中。 唯一有用的是,如果您需要稍后控制補間(或將其插入時間軸或類似的東西)。 通常,只需調用TweenMax.to(...)而不將結果存儲在變量中即可。
那清楚了嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.