HTML帧显示,HTML帧动画

这几天学习HTML看了一个帧动画的做法。

767eb3586a72

成图

跟上一篇一样,咱们先画盘来了解一下咱们的这个步骤是怎样的。

767eb3586a72

HTML帧动画.png

按照步骤图的第一步,咱们要先设置UI:

选取带有序列图的图片

每帧图片宽度:

每帧图片高度:

行数

列数

查看动画帧

然后进行第二步选择本地图片的方式:

//定义动画集合

var frames=[];

var timeHandler=null;

//加载本地图片

function loadImg(fObj){

var f=fObj.files[0];

if(!/image\/\w+/.test(f.type)){

alert("请选择图片文件!")

}

else

{

//创建文件读取对象

var r=new FileReader();

//以DataURL方式读取

r.οnlοad=function(){

$("#flmg").attr("src",this.result);

delete r;

}

r.readAsDataURL(f);

}

//停止动画

if(timeHandler!=null)

{

clearInterval(timeHandler);

}

frames=[];

}

第三步:生成动画,设置每帧动画的一些基本设置:

//生成动画

function createAnimation(){

if($("#flmg").attr("src")==""){

alert("请先选择图片文件");

}

else

{

//获取每帧宽度和高度

var w=Number($("#fWid").val())||32,

h=Number($("#fHei").val())||32,

r=Number($("#fRow").val())||1,

c=Number($("#fCol").val())||1;

frames=[];

cv.width=w;

cv.height=h;

//清空帧选择

$("#selFrame").empty();

//生成每帧图片在图中的坐标

var fCount=0;

for(var i=0;i

for(var j=0;j

//计算每帧图片的其实坐标,x,y

var x=j*w,

y=i*h;

//保存每帧图片的起始坐标,X,Y和宽度高度

frames.push([x,y,w,h]);

$("#selFrame").append("第"+fCount+"帧")

fCount++;

}

}

}

}

第四步:选择帧,把帧画画到画布上

//选择动画帧,把当前帧画到画布上面

function selFrame(idx){

if(frames.length==0) return;

var f=frames[idx],

ctx=cv.getContext("2d");

//绘制图片到canvas上

ctx.clearRect(0,0,cv.width,cv.height);

ctx.drawImage(flmg,f[0],f[1],f[2],f[3],0,0,cv.width,cv.height);

}

第五步,设置按钮的点击事件:

//运行动画

function run(btn){

if(frames.length==0) return;

var ctx=cv.getContext("2d");

if(btn.value=="运行动画"){

//设置动画,每100毫秒运行一帧

var fCount=frames.length,

fldx=0;

timeHandler=setInterval(function(){

var f=frames[fldx];

ctx.clearRect(0,0,cv.width,cv.height);

ctx.drawImage(flmg,f[0],f[1],f[2],f[3],0,0,cv.width,cv.height);

fldx=(++fldx)%fCount;

},100);

btn.value="停止动画";

}

else{

clearInterval(timeHandler);

btn.value="运行动画";

}

}

现在咱们就把这个帧动画做完了,然后咱们选择图片的时候要选择带有序列图的图片。

如果还有什么疑问,欢迎联系我们!

767eb3586a72

有什么问题尽管提!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值