图片打碎后再组合起来,而且是几张图片交替出现

本文介绍了一种使用JavaScript实现的图片碎片效果动画,该动画通过将图片切割为多个小块并随机散布,之后再逐渐重组回原始图片的方式,展示了一个动态且吸引人的视觉效果。文章详细解释了关键变量设置及动画过程。

请将下面的原代码插入到下面 

<STYLE>
.spanstyle {
 LEFT: -5000px; POSITION: absolute
}
</STYLE>
<SCRIPT>
<!-- Beginning of JavaScript -
 
// The width of your images (pixels). All pictures should have the same width.
var imgwidth=200

// The height of your images (pixels). All pictures should have the same height.
var imgheight=90

// The URL of your images. You may add as many images as you like.
var imgurl=new Array()
imgurl[0]="a048.gif"
imgurl[1]="a049.gif"
imgurl[2]="a052.gif"

// Do not edit this block.
var imgpreload=new Array()
for (i=0;i<=imgurl.length-1;i ) {
 imgpreload[i]=new Image()
 imgpreload[i].src=imgurl[i]
}

// Final horizontal position of the image: distance to the left margin of the window
var x_finalpos=300

// Final vertical position of the image: distance to the top margin of the window
var y_finalpos=200

// Number of sliced cells (the higher this value the slower the script)
var x_slices=8

// Number of sliced rows (the higher this value the slower the script)
var y_slices=3

// Speed of the reassembling effect. More means slower.
var pause=10

// The width and heigth of the zone where the debris of the images are spread (pixels)
var screenwidth=800
var screenheight=500

// Do not change the variables below
var x_step=new Array()
var y_step=new Array()
var x_randompos=0
var y_randompos=0
var i_loop=0
var max_loop=20
var i_image=0
var width_slice=Math.floor(imgwidth/x_slices)
var height_slice=Math.floor(imgheight/y_slices)
var cliptop=0
var clipbottom=height_slice
var clipleft=0
var clipright=width_slice
var spancounter=0

function initiate() {
 cliptop=0
 clipbottom=height_slice
 clipleft=0
 clipright=width_slice
 i_loop=0
 spancounter=0
    if (document.all) {
      for (i=0;i<=y_slices-1;i ) {
   for (ii=0;ii<=x_slices-1;ii ) {
    var thisspan=eval("document.all.span" spancounter ".style")
    x_randompos=Math.ceil(screenwidth*Math.random())
    y_randompos=Math.ceil(screenheight*Math.random())
    thisspan.posLeft=x_randompos
    thisspan.posTop=y_randompos
                thisspan.clip ="rect(" cliptop " " clipright " " clipbottom " " clipleft ")"
    clipleft =width_slice
          clipright =width_slice
          spancounter
   }
         clipleft=0
         clipright=width_slice
         cliptop =height_slice
         clipbottom =height_slice
  }
   }
   explode_IE()
}

function changeimage() {
 spancounter=0
 for (i=0;i<=y_slices-1;i ) {
  for (ii=0;ii<=x_slices-1;ii ) {
   var thisspan=eval("document.all.span" spancounter ".style")  
   thisspan.posLeft=-5000
   thisspan.posTop=-5000
   spancounter
  }
 }
 spancounter=0
 if (i_image>imgurl.length-1) {i_image=0}
 for (i=0;i<=y_slices-1;i ) {
  for (ii=0;ii<=x_slices-1;ii ) {
   var thisinnerspan=eval("span" spancounter)
      thisinnerspan.innerHTML="<img src='" imgurl[i_image] "'>"
   spancounter
  }
 }
 i_image
 initiate()
}


function explode_IE() {
 spancounter=0
 if (i_loop<=max_loop-1) {
  for (i=0;i<=y_slices-1;i ) {
   for (ii=0;ii<=x_slices-1;ii ) {
    var thisspan=eval("document.all.span" spancounter ".style")
    x_step[spancounter]=(x_finalpos-thisspan.posLeft)/(max_loop-i_loop)
    y_step[spancounter]=(y_finalpos-thisspan.posTop)/(max_loop-i_loop)  
    thisspan.posLeft =x_step[spancounter]
    thisspan.posTop =y_step[spancounter]
    spancounter
   }
  }
  i_loop
  var timer=setTimeout("explode_IE()",pause)
 }
 else {
  spancounter=0
  clearTimeout(timer)
  var timer=setTimeout("changeimage()",2000)
 }
}


// - End of JavaScript - -->
</SCRIPT>
<SCRIPT>
<!-- Beginning of JavaScript -
if (document.all) {
 for (i=0;i<=y_slices-1;i ) {
  for (ii=0;ii<=x_slices-1;ii ) {
      document.write("<span id='span" spancounter "' class='spanstyle'></span>")
   spancounter
  }
 }
 spancounter=0
}
// - End of JavaScript - -->
</SCRIPT>

 

 把<body>中的内容改为

<body onload=changeimage()>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值