Я пытаюсь подражать элементу холста, показанному в баннере spire's с использованием EaselJS. Но мои анимации нестабильны как на хроме, так и на firefox. Любая помощь приветствуется. (Использование EaselJS в первый раз)Choppy canvas animation - EaselJS
Мой код:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>EaselJS</title>
<style>
body{
margin: 0;
padding: 0;
overflow: hidden;
}
#spire-canvas{
background: #333;
}
</style>
</head>
<body>
<canvas id="spire-canvas" width="1366" height="768"></canvas>
<script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/EaselJS/0.8.0/easeljs.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/1.19.0/TweenMax.min.js"></script>
<script>
$(document).ready(function(){
//INITIALIZATIONS
var stage,
particles = 10,
fps = 30,
viewportWidth = window.innerWidth,
viewportHeight = window.innerHeight,
circles = [];
function init(){
stage = new createjs.Stage("spire-canvas");
createjs.Ticker.addEventListener("tick", refresh);
createjs.Ticker.setFPS(fps);
console.log("init fired");
}
function refresh(){
for(var i = 0; i < particles; i++){
var circle = new createjs.Shape();
circle.graphics.beginFill('#' + Math.floor(Math.random() * 16777215).toString(16))
.drawCircle(0, 0, (Math.random() * 10));
circle.x = circle.x + Math.random() * viewportWidth;
circle.y = (Math.random() * viewportHeight) + viewportHeight;
circle.alpha = 0.1 + Math.random() * 0.2;
stage.addChild(circle);
circles.push(circle);
};
for(var i = 0; i < circles.length; i++){
var item = circles[i];
var yy = item.y + Math.floor(Math.random() * (viewportHeight - 300)) * -1;
if(item.y < 300){
TweenLite.to(item, 1, {alpha: '0', ease: Power4.easeOut, onComplete: function(){
stage.removeChild(item);
}});
}
TweenLite.to(item, 10, {y: yy});
};
stage.update();
}
init();
});
</script>
</body>
</html>
Вот краткий пример с вашим кодом, и подростки перемещаются в нужном месте: http://jsfiddle.net/lannymcnie/abLhozah/ - я изменил порог, так что некоторые из элементы исчезают, но ни один из них не делает его достаточно высоким, исходя из того, что их начальное значение должно быть изменено (они просто останавливаются). Вы должны быть в состоянии получить то, что вам нужно от этого образца. – Lanny
Я знал, что проблема заключалась в том, что для циклов внутри тиков. Необходимо тщательно отнестись к документам. Во всяком случае, благодаря группе Lanny. Большая помощь. Отмечено это как ответ. –