回答編集履歴

1 修正

manabufukai

manabufukai score 682

2016/04/29 03:09  投稿

アニメーションイベントを開始させる処理がどれか判別できないので、ばっくりとにはなりますが
(`lib.team()`がそれでしょうか?)
- アニメーション開始イベントをinit()から別にする
- windowのスクロールイベントを設定
- スクロールイベントに対して条件(150pxや300px以上になると…)を満たすとアニメーション開始イベントをコールバック
- スクロールイベントはスクロールしている間、ずっと呼ばれ続けるので一度飛び出されたら処理を止める
(※条件が「300px以上」なら、301,302,303…とスクロールする毎に条件を満たしている限り何度でも呼ばれる)
と、すれば良いです。
参考にコードを。
以下、参考コードとして。
```
function init(){
 //省略
}
function animation(){
 //ここにアニメーションの処理
}
var animation = false;
//スクロールイベント
window.addEventListener('scroll' ,function(){
 var move = window.pageYOffset; //スクロール量を取得
 if(move >= 300 && !animation){
   if(animation) return;//アニメーションを1回だけしか呼び出されないように
   animation = true;
   createjs.Ticker.addEventListener("tick", animation);//tickイベントでコールバック
 }
});
```
`createjs.Ticker.addEventListener("tick", stage); `がstageを自動的に更新(update())するので、
init()内の`stage.update()`は必要ないかと。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る