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 EasyUI API 中文文档 - Pagination分页
Sep 29 Javascript
用JavaScript实现动画效果的方法
Jul 20 Javascript
关于JS数组追加数组采用push.apply的问题
Jun 09 Javascript
jQuery将所有被选中的checkbox某个属性值连接成字符串的方法
Jan 24 Javascript
javascript图片滑动效果实现
Jan 28 Javascript
jQuery自定义数值抽奖活动代码
Jun 11 Javascript
JavaScript中日期函数的相关操作知识
Aug 03 Javascript
JavaScript中apply方法的应用技巧小结
Sep 29 Javascript
Bootstrap源码解读模态弹出框(11)
Dec 28 Javascript
详解Vue 事件驱动和依赖追踪
Apr 22 Javascript
微信小程序实现横向增长表格的方法
Jul 24 Javascript
深入理解vue中的slot与slot-scope
Apr 22 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
php侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
2009/10/15 PHP
支持数组的ADDSLASHES的php函数
2010/02/16 PHP
一个简洁实用的PHP缓存类完整实例
2014/07/26 PHP
PHP针对JSON操作实例分析
2015/01/12 PHP
PHP中mysqli_get_server_version()的实例用法
2020/02/03 PHP
JS正则表达式验证数字代码
2014/01/28 Javascript
js实现禁止中文输入的方法
2015/01/14 Javascript
jQuery插件HighCharts实现的2D对数饼图效果示例【附demo源码下载】
2017/03/09 Javascript
使用ng-packagr打包Angular的方法示例
2018/09/21 Javascript
web页面和微信小程序页面实现瀑布流效果
2018/09/26 Javascript
微信小程序局部刷新触发整页刷新效果的实现代码
2018/11/21 Javascript
element的el-table中记录滚动条位置的示例代码
2019/11/06 Javascript
JavaScript字符串处理常见操作方法小结
2019/11/15 Javascript
如何在vue项目中嵌入jsp页面的方法(2种)
2020/02/06 Javascript
详解Howler.js Web音频播放终极解决方案
2020/08/23 Javascript
python实现根据月份和日期得到星座的方法
2015/03/27 Python
详细解析Python中的变量的数据类型
2015/05/13 Python
Python读取sqlite数据库文件的方法分析
2017/08/07 Python
matplotlib设置legend图例代码示例
2017/12/19 Python
Python实现的当前时间多加一天、一小时、一分钟操作示例
2018/05/21 Python
matplotlib subplots 设置总图的标题方法
2018/05/25 Python
pandas 数据实现行间计算的方法
2018/06/08 Python
python爬虫 基于requests模块发起ajax的get请求实现解析
2019/08/20 Python
Pytorch保存模型用于测试和用于继续训练的区别详解
2020/01/10 Python
python批量生成身份证号到Excel的两种方法实例
2021/01/14 Python
亚马逊中国官方网站:amazon.cn
2017/05/25 全球购物
Holiday Inn中国官网:IHG旗下假日酒店预订
2018/04/08 全球购物
中学教师培训制度
2014/01/31 职场文书
2014年健康教育实施方案
2014/02/17 职场文书
歌颂祖国的演讲稿
2014/05/04 职场文书
我的梦想演讲稿1000字
2014/08/21 职场文书
领导干部“四风”问题批评与自我批评材料
2014/09/24 职场文书
反邪教观后感
2015/06/11 职场文书
优秀志愿者感言
2015/08/01 职场文书
mysql连接查询中and与where的区别浅析
2021/07/01 MySQL
自动在Windows中运行Python脚本并定时触发功能实现
2021/09/04 Python