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 相关文章推荐
在jQuery 1.5中使用deferred对象的代码(翻译)
Mar 10 Javascript
JavaScript包装对象使用介绍
Aug 29 Javascript
举例讲解Node.js中的Writable对象
Jul 29 Javascript
javascript图片滑动效果实现
Jan 28 Javascript
jQuery qrcode生成二维码的方法
Apr 03 Javascript
jQuery插件uploadify实现ajax效果的图片上传
Jun 18 Javascript
ES6解构赋值的功能与用途实例分析
Oct 31 Javascript
详解bootstrap导航栏.nav与.navbar区别
Nov 23 Javascript
vue-cli3 从搭建到优化的详细步骤
Jan 20 Javascript
JS出现404错误原理及解决方案
Jul 01 Javascript
在vue项目中promise解决回调地狱和并发请求的问题
Nov 09 Javascript
vue+elementui通用弹窗的实现(新增+编辑)
Jan 07 Vue.js
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
根德YB400的电路分析
2021/03/02 无线电
php adodb介绍
2009/03/19 PHP
PHP操作XML作为数据库的类
2010/12/19 PHP
php下将多个数组合并成一个数组的方法与实例代码
2011/02/03 PHP
php版微信小店API二次开发及使用示例
2016/11/12 PHP
PHP实现的CURL非阻塞调用类
2018/07/26 PHP
Array对象方法参考
2006/10/03 Javascript
轻轻松松学习JavaScript
2007/02/25 Javascript
用JS剩余字数计算的代码
2008/07/03 Javascript
jquery下onpropertychange事件的绑定方法
2010/08/01 Javascript
js动态添加onload、onresize、onscroll事件(另类方法)
2012/12/26 Javascript
js hover 定时器(实例代码)
2013/11/12 Javascript
table行随鼠标移动变色示例
2014/05/07 Javascript
node.js中fs文件系统目录操作与文件信息操作
2018/02/24 Javascript
动态加载JavaScript文件的3种方式
2018/05/05 Javascript
react实现点击选中的li高亮的示例代码
2018/05/24 Javascript
使用Python发送邮件附件以定时备份MySQL的教程
2015/04/25 Python
利用Python的Django框架生成PDF文件的教程
2015/07/22 Python
linux环境下python中MySQLdb模块的安装方法
2017/06/16 Python
python中子类调用父类函数的方法示例
2017/08/18 Python
Python模块搜索路径代码详解
2018/01/29 Python
Python数据结构之栈、队列及二叉树定义与用法浅析
2018/12/27 Python
python中的print()输出
2019/04/12 Python
python 并发编程 多路复用IO模型详解
2019/08/20 Python
Python标准库json模块和pickle模块使用详解
2020/03/10 Python
解决flask接口返回的内容中文乱码的问题
2020/04/03 Python
HTML5 canvas基本绘图之绘制五角星
2016/06/27 HTML / CSS
CSS3 画基本图形,圆形、椭圆形、三角形等
2016/09/20 HTML / CSS
第一范式(1NF)、第二范式(2NF)和第三范式(3NF)之间的区别是什么?
2016/04/28 面试题
会计与审计专业大专生求职信
2013/10/03 职场文书
关于爱国的演讲稿
2014/05/07 职场文书
企业环保标语
2014/06/10 职场文书
2014年护理部工作总结
2014/11/14 职场文书
初中家长评语和期望
2014/12/26 职场文书
市场营销计划书范文
2015/01/16 职场文书
小学工作总结2015
2015/05/04 职场文书