zoukankan      html  css  js  c++  java
  • 一个js的动画,以前以为只有flash可以实现

    11年刚干这行的时候,看到这种什么百叶窗的动画,以为都是flash实现的,最近突然灵光一闪,想到了用js实现(虽然我不是做前端的,本人做.net)。代码虽然实现了,但是比较乱,先上个图:

      

    代码主要就是一些数学的计算,然后结合html,css打造出类似flash的效果。

      下面贴出主要的部分代码:

     1 function all(books){
     2             for(var i=0;i<self.rows;i++) {
     3                 for (var j = 0; j <  self.columns; j++) {
     4                     if(!books[i][j])return false;
     5                 }
     6             }
     7             return true;
     8         }
     9         function resetBooks(books){
    10             for(var i=0;i<self.rows;i++) {
    11                 for (var j = 0; j <  self.columns; j++) {
    12                     books[i][j]=false;
    13                 }
    14             }
    15             return true;
    16         }
    17         var self=this,timer=null,_iindex= 0;
    18         var initdir=[[[0,1],[1,0]],[[-1,0],[0,1]],[[0,-1],[-1,0]],[[0,-1],[1,0]],[[0,-1],[1,0],[0,1],[-1,0]]],dir=initdir[0];
    19         var weight=[1,1,1,1,6];
    20         var initpos=[[{x:0,y:-1}],[{x:self.columns-1,y:-1}],[{x:self.columns-1,y:self.rows}],[{x:0,y:self.rows}],[{x:self.columns/2,y:self.rows/2}]];
    21         timer=setInterval(function(){
    22             var n=[];
    23             for(var i=0;i<self.preDivs.length;i++){
    24                 var _div=null,x= 0,y=0;
    25                 for(var j=0;j<dir.length;j++){
    26                     x=self.preDivs[i].x+dir[j][0];
    27                     y=self.preDivs[i].y+dir[j][1];
    28                     if(x>=0&&y>=0&&x<self.columns&&y<self.rows&&!self.books[y][x]){
    29                         self.books[y][x]=true;
    30                         _div=self.zzDivStatck[y][x];
    31                         n.push({x:x,y:y});
    32                         _div.style.backgroundImage = "url(" + self.zzImages[_iindex] + ")";
    33                         _div.style.backgroundPositionX = (-x * self.zzDivW) + "px ";
    34                         _div.style.backgroundPositionY = (-y * self.zzDivH) + "px";
    35                     }
    36                 }
    37 
    38             }
    39 
    40             self.preDivs=n;
    41             if(all(self.books)){
    42                 resetBooks(self.books);
    43                 var _r=util.randomWeight(weight);
    44                     self.preDivs = initpos[_r];
    45                     dir=initdir[_r];
    46                     _iindex++;
    47             }
    48             if(_iindex>=+self.zzImages.length){
    49                 _iindex=0;
    50             }
    51 
    52         },100);
    View Code

      源码附上:https://files.cnblogs.com/files/csbt/DDZ.zip

  • 相关阅读:
    html使用网络图片防盗问题解决
    【HC89S003F4开发板】 8c转义成汇编工程
    【HC89S003F4开发板】 7ASM&C混合编程
    【HC89S003F4开发板】 2调度器
    jquery 基础
    React 中import时如何正确使用花括号'{ }',以及default,export的用法注意事项
    React的小知识点
    TCP建立连接三步握手
    pdo操作基础
    php -- 取路径:getcwd()、__DIR__、__FILE__ 的区别【转】
  • 原文地址:https://www.cnblogs.com/csbt/p/byc.html
Copyright © 2011-2022 走看看