この手のシャッターアニメーションを見ると、全部Flashで実装しているのかと思っていましたが、最近ふと思いつき、jsを使って実装してみようと思いました(フロントエンドの人間ではありませんが)。 .netの人)。コードは実装されていますが、かなり乱雑です。まず写真を撮りましょう:
js アニメーション、私は Flash だけで実現できると思っていました
コードは主に数学的な計算であり、HTML と CSS を組み合わせて Flash のような効果を作成します。
コードの主要部分は以下に掲載されています:
function all(books){ for(var i=;i<self.rows;i++) { for (var j = ; j < self.columns; j++) { if(!books[i][j])return false; } } return true; } function resetBooks(books){ for(var i=;i<self.rows;i++) { for (var j = ; j < self.columns; j++) { books[i][j]=false; } } return true; } var self=this,timer=null,_iindex= ; var initdir=[[[,],[,]],[[-,],[,]],[[,-],[-,]],[[,-],[,]],[[,-],[,],[,],[-,]]],dir=initdir[]; var weight=[,,,,]; var initpos=[[{x:,y:-}],[{x:self.columns-,y:-}],[{x:self.columns-,y:self.rows}],[{x:,y:self.rows}],[{x:self.columns/,y:self.rows/}]]; timer=setInterval(function(){ var n=[]; for(var i=;i<self.preDivs.length;i++){ var _div=null,x= ,y=; for(var j=;j<dir.length;j++){ x=self.preDivs[i].x+dir[j][]; y=self.preDivs[i].y+dir[j][]; if(x>=&&y>=&&x<self.columns&&y<self.rows&&!self.books[y][x]){ self.books[y][x]=true; _div=self.zzDivStatck[y][x]; n.push({x:x,y:y}); _div.style.backgroundImage = "url(" + self.zzImages[_iindex] + ")"; _div.style.backgroundPositionX = (-x * self.zzDivW) + "px "; _div.style.backgroundPositionY = (-y * self.zzDivH) + "px"; } } } self.preDivs=n; if(all(self.books)){ resetBooks(self.books); var _r=util.randomWeight(weight); self.preDivs = initpos[_r]; dir=initdir[_r]; _iindex++; } if(_iindex>=+self.zzImages.length){ _iindex=; } },);
上記のコードは、JavaScript を使用して実装されたブラインド アニメーション効果です。皆さんのお役に立てれば幸いです。