JQuery和HTML5 Canvas实现弹幕效果


Posted in Javascript onJanuary 04, 2017

 JQuery和HTML5 Canvas两种方法实现弹幕效果:

JQuery和HTML5 Canvas实现弹幕效果

方法一,JQuery实现
源码:

<!DOCTYPE html> 
<html> 
<head> 
  <meta charset="utf-8"> 
  <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
  <meta name="viewport" content="width=device-width, initial-scale=1"> 
  <!-- 
  <link href="favicon.ico" rel="shortcut icon" type="image/x-icon" /> 
  <link href="favicon.ico" rel="Bookmark" type="image/x-icon" /> 
  --> 
  <meta name="Generator" content="EditPlus®"> 
  <meta name="Author" content=""> 
  <meta name="Keywords" content=""> 
  <meta name="Description" content=""> 
  <title>JQuery弹幕</title> 
  <link href="" rel="stylesheet" /> 
  <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script> 
  <style type="text/css"> 
    .ctxt{ 
      background:#666; 
      width:1000px; 
      height:400px; 
      overflow:hidden; 
      margin:0 auto; 
    } 
    .ctxt p{ 
      position:relative; 
      left:1000px; 
      margin:0; 
      padding:0; 
    } 
  </style> 
</head> 
<body> 
<div id="" class="ctxt"></div> 
<br /> 
<form method="post" action="" align="center"> 
  <input type="text" id="msg" style="height:24px;width:200px;" /> <button type="button" id="submitBut">发布</button> 
</form> 
 
<script type="text/javascript"> 
$(document).ready(function(){ 
 
  $("#submitBut").click(function(){ 
    var msgtxt=$("#msg").val(); 
    var colortxt = getReandomColor(); 
    var topPos = generateMixed(3); 
    if (topPos > 300) 
    { 
      topPos = 30; 
    } 
    var newtxt = '<p style="top:'+topPos+'px; color:'+colortxt+'">'+$("#msg").val()+'</p>'; 
    $(".ctxt").prepend(newtxt); 
    var addTextW = $(".ctxt").find("p").width(); 
    $(".ctxt p").animate({left: '-'+addTextW+"px"}, 30000,function(){ 
      $(this).hide(); 
    }); 
  }); 
 
}); 
//随机获取颜色值 
  function getReandomColor(){ 
    return '#'+(function(h){ 
    return new Array(7-h.length).join("0")+h 
    })((Math.random()*0x1000000<<0).toString(16)) 
  } 
 
//生成随机数据。n表示位数  
  var jschars = ['0','1','2','3','4','5','6','7','8','9'];  
  function generateMixed(n) {  
    var res = "";  
    for(var i = 0; i < n ; i ++) {  
      var id = Math.ceil(Math.random()*9);  
      res += jschars[id];  
    }  
    return res;  
  }  
</script> 
 
</body> 
</html>

 方法二,HTML5 Canvas实现
源码:

<!DOCTYPE html> 
<html> 
<head> 
  <meta charset="utf-8"> 
  <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
  <meta name="viewport" content="width=device-width, initial-scale=1"> 
  <!-- 
  <link href="favicon.ico" rel="shortcut icon" type="image/x-icon" /> 
  <link href="favicon.ico" rel="Bookmark" type="image/x-icon" /> 
  --> 
  <meta name="Generator" content="EditPlus®"> 
  <meta name="Author" content=""> 
  <meta name="Keywords" content=""> 
  <meta name="Description" content=""> 
  <title>Canvas弹幕</title> 
  <link href="" rel="stylesheet" /> 
  <style type="text/css"> 
     
    #c1{background:#f1f1f1;} 
    span{color:#FFFFFF;} 
  </style> 
</head> 
<body> 
<canvas id="c1" width="600" height="300" > 
  <span>该浏览器不支持html5</span> 
</canvas> 
<br /> 
<input type="text" name='smsg' value="" id="smsg" placeholder="请输入内容" /> <button id="send">发送</button> 
<!--<button id='start' onclick="startFun('test')">Start</button> 
<button id='stop' onclick="stopFun()">Stop</button>--> 
 
 
 
<script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script> 
<script type="text/javascript">   
  var sv; 
  var sId; 
  var oC; 
  var oGC;   
  var numW; 
  var numH; 
  var maxTxt = 600; 
   
 
$(function(){ 
$("#send").click(function(){ 
    clearInterval(sId); 
    var m = $("#smsg").val(); 
    //alert(m); 
    startFun(m); 
    $("#smsg").val('') 
  }); 
}) 
  function doDraw(msg){ 
    oC = document.getElementById('c1'); 
    oGC = oC.getContext('2d');   
    numW = oC.width; 
    numH = oC.height; 
    console.log(numW+'-'+numH); 
 
    oGC.fillStyle="red"; 
    //oGC.fillRect(0,0,numW,100); 
    oGC.fillText(msg,numW,100); 
  } 
  function startFun(msg){ 
    doDraw(msg); 
    sId = setInterval(function(){    
      if (numW > -610) 
      { 
        numW--; 
        console.log(numW); 
        oGC.clearRect(0,0,oC.width,oC.height); 
        oGC.fillText(msg,numW,100); 
      } else { 
        oGC.clearRect(0,0,oC.width,oC.height); 
        clearInterval(sId); 
      } 
    },10);  
  } 
  </script> 
</body> 
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Js如何判断客户端是PC还是手持设备简单分析
Nov 22 Javascript
10个很棒的jQuery代码片段
Sep 24 Javascript
基于JavaScript实现文字超出部分隐藏
Feb 29 Javascript
canvas实现绘制吃豆鱼效果
Jan 12 Javascript
AngularJS 防止页面闪烁的方法
Mar 09 Javascript
微信小程序 商城开发(ecshop )简单实例
Apr 07 Javascript
为什么使用koa2搭建微信第三方公众平台的原因
May 16 Javascript
微信小程序自定义多选事件的实现代码
May 17 Javascript
在vue中解决提示警告 for循环报错的方法
Sep 28 Javascript
vue实现页面滚动到底部刷新
Aug 16 Javascript
VsCode与Node.js知识点详解
Sep 05 Javascript
详解微信小程序之提高应用速度小技巧
Jan 07 Javascript
laydate.js日期时间选择插件
Jan 04 #Javascript
AngularJS使用ng-app自动加载bootstrap框架问题分析
Jan 04 #Javascript
微信小程序 解决swiper不显示图片的方法
Jan 04 #Javascript
bootstrap laydate日期组件使用详解
Jan 04 #Javascript
BootStrap 模态框实现刷新网页并关闭功能
Jan 04 #Javascript
AngularJS框架的ng-app指令与自动加载实现方法分析
Jan 04 #Javascript
微信小程序 解决请求服务器手机预览请求不到数据的方法
Jan 04 #Javascript
You might like
用session做客户验证时的注意事项
2006/10/09 PHP
奉献出一个封装的curl函数 便于调用(抓数据专用)
2013/07/22 PHP
php中文乱码怎么办如何让浏览器自动识别utf-8
2014/01/15 PHP
ThinkPHP3.1新特性之对Ajax的支持更加完善
2014/06/19 PHP
php判断GIF图片是否为动画的方法
2020/09/04 PHP
PHP数据对象PDO操作技巧小结
2016/09/27 PHP
工作中常用到的JS表单验证代码(包括例子)
2010/11/11 Javascript
firefox下input type=&quot;file&quot;的size是多大
2011/10/24 Javascript
js下将金额数字每三位一逗号分隔
2016/02/19 Javascript
用jquery的attr方法实现图片切换效果
2017/02/05 Javascript
vue2.0结合DataTable插件实现表格动态刷新的方法详解
2017/03/17 Javascript
angularjs定时任务的设置与清除示例
2017/06/02 Javascript
Vuejs中使用markdown服务器端渲染的示例
2017/11/22 Javascript
ant design中upload组件上传大文件,显示进度条进度的实例
2020/10/29 Javascript
关于Js中new操作符的作用详解
2021/02/21 Javascript
详解用Python处理HTML转义字符的5种方式
2017/12/27 Python
Python及Django框架生成二维码的方法分析
2018/01/31 Python
利用Anaconda简单安装scrapy框架的方法
2018/06/13 Python
Sanic框架请求与响应实例分析
2018/07/16 Python
详解如何为eclipse安装合适版本的python插件pydev
2018/11/04 Python
python 提取key 为中文的json 串方法
2018/12/31 Python
python实现统计文本中单词出现的频率详解
2019/05/20 Python
python判断所输入的任意一个正整数是否为素数的两种方法
2019/06/27 Python
基于python3实现倒叙字符串
2020/02/18 Python
解决pytorch多GPU训练保存的模型,在单GPU环境下加载出错问题
2020/06/23 Python
python使用re模块爬取豆瓣Top250电影
2020/10/20 Python
python 下划线的不同用法
2020/10/24 Python
HTML5移动开发图片压缩上传功能
2016/11/09 HTML / CSS
Web Service面试题:如何搭建Axis2的开发环境
2012/06/20 面试题
类、抽象类、接口的差异
2016/06/13 面试题
毕业自我鉴定范文
2013/11/06 职场文书
英语系本科生求职信范文
2013/12/18 职场文书
《伯牙绝弦》教学反思
2014/03/02 职场文书
党风廉设责任书
2014/04/16 职场文书
社区学习雷锋活动总结
2014/04/25 职场文书
2015年预防青少年违法犯罪工作总结
2015/05/22 职场文书