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使用查询手册
Mar 07 Javascript
js 目录列举函数
Nov 06 Javascript
JavaScript调用Activex控件的事件的实现方法
Apr 11 Javascript
jQuery 表格工具集
Apr 25 Javascript
javascript 跨浏览器开发经验总结(五) js 事件
May 19 Javascript
js字符串的各种格式的转换 ToString,Format
Aug 08 Javascript
网页中返回顶部代码(多种方法)另附注释说明
Apr 24 Javascript
javascript事件的传播基础实例讲解(35)
Feb 14 Javascript
详解ES6之用let声明变量以及let loop机制
Jul 15 Javascript
利用angular自动编译andriod APK的绕坑经历分享
Mar 08 Javascript
vue实现将一个数组内的相同数据进行合并
Nov 07 Javascript
JavaScript实现两个数组的交集
Mar 25 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
ubuntu12.04使用c编写php扩展模块教程分享
2013/12/25 PHP
PHP实现向关联数组指定的Key之前插入元素的方法
2017/06/06 PHP
javascript下对于事件、事件流、事件触发的顺序随便说说
2010/07/17 Javascript
js函数的引用, 关于内存的开销
2012/09/17 Javascript
15个jquery常用方法、小技巧分享
2015/01/13 Javascript
详解Angular中$cacheFactory缓存的使用
2016/08/19 Javascript
jquery对象和DOM对象的相互转换详解
2016/10/18 Javascript
BootStrap 弹出层代码
2017/02/09 Javascript
ES6中Generator与异步操作实例分析
2017/03/31 Javascript
vue中使用ueditor富文本编辑器
2018/02/08 Javascript
原生JS封装_new函数实现new关键字的功能
2018/08/12 Javascript
vue 指令之气泡提示效果的实现代码
2018/10/18 Javascript
运用js实现图层拖拽的功能
2019/05/24 Javascript
Vue快速实现通用表单验证的方法
2020/02/24 Javascript
实例分析javascript中的异步
2020/06/02 Javascript
使用next.js开发网址缩短服务的方法
2020/06/17 Javascript
基于scrapy实现的简单蜘蛛采集程序
2015/04/17 Python
实例探究Python以并发方式编写高性能端口扫描器的方法
2016/06/14 Python
Diango + uwsgi + nginx项目部署的全过程(可外网访问)
2018/04/22 Python
详解python的argpare和click模块小结
2019/03/31 Python
python常见字符串处理函数与用法汇总
2019/10/30 Python
python 解决flask 图片在线浏览或者直接下载的问题
2020/01/09 Python
解决python 找不到module的问题
2020/02/12 Python
Python3之外部文件调用Django程序操作model等文件实现方式
2020/04/07 Python
python os模块常用的29种方法使用详解
2020/06/02 Python
15款Python编辑器的优缺点,别再问我“选什么编辑器”啦
2020/10/19 Python
25个CSS3动画按钮和菜单教程分享
2012/10/03 HTML / CSS
详解HTML5中ol标签的用法
2015/09/08 HTML / CSS
Bally澳大利亚官网:瑞士奢侈品牌
2018/11/01 全球购物
J2EE中的容器都包括哪些
2013/08/21 面试题
毕业生个人的自我评价优秀范文
2013/10/03 职场文书
六查六看剖析材料
2014/10/06 职场文书
清洁员岗位职责
2015/02/15 职场文书
家长会开场白和结束语
2015/05/29 职场文书
2019年教师节祝福语精选,给老师送上真诚的祝福
2019/09/09 职场文书
golang内置函数len的小技巧
2021/07/25 Golang