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 自动播放的实例代码
Nov 19 Javascript
javascripit实现密码强度检测代码分享
Dec 12 Javascript
JS小游戏之极速快跑源码详解
Sep 25 Javascript
jQuery实现的登录浮动框效果代码
Sep 26 Javascript
使用Javascript写的2048小游戏
Nov 25 Javascript
浅析JavaScript中的对象类型Object
May 26 Javascript
对Js OOP编程 创建对象的一些全面理解
Jul 26 Javascript
jQuery简单获取DIV和A标签元素位置的方法
Feb 07 Javascript
使用jQuery实现动态添加小广告
Jul 11 jQuery
AjaxFileUpload.js实现异步上传文件功能
Apr 19 Javascript
jQuery中event.target和this的区别详解
Aug 13 jQuery
antd日期选择器禁止选择当天之前的时间操作
Oct 29 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
为什么《星际争霸》是测试人工智能的理想战场
2019/12/03 星际争霸
php读取mysql乱码,用set names XXX解决的原理分享
2011/12/29 PHP
PHP删除数组中的特定元素的代码
2012/06/28 PHP
codeigniter教程之上传视频并使用ffmpeg转flv示例
2014/02/13 PHP
php二维数组转成字符串示例
2014/02/17 PHP
PHP中执行cmd命令的方法
2014/10/11 PHP
Thinkphp整合微信支付功能
2016/12/14 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
2017/03/14 PHP
关于laravel模板中生成URL的几种模式总结
2019/10/18 PHP
js location.replace与location.reload的区别
2010/09/08 Javascript
自写简单JS判断是否已经弹出页面
2010/10/20 Javascript
js获取dom的高度和宽度(可见区域及部分等等)
2013/06/13 Javascript
css+js实现部分区域高亮可编辑遮罩层
2014/03/04 Javascript
JavaScript用JQuery呼叫Server端方法示例代码
2014/09/03 Javascript
JS+CSS实现Li列表隔行换色效果的方法
2015/02/16 Javascript
jquery实现简单文字提示效果
2015/12/02 Javascript
js移动焦点到最后位置的简单方法
2016/11/25 Javascript
JS解决移动web开发手机输入框弹出的问题
2017/03/31 Javascript
微信小程序调用PHP后台接口 解析纯html文本
2017/06/13 Javascript
用vue的双向绑定简单实现一个todo-list的示例代码
2017/08/03 Javascript
layui前端框架之table表数据的刷新方法
2018/08/17 Javascript
vue中接口域名配置为全局变量的实现方法
2018/09/20 Javascript
this.$toast() 了解一下?
2019/04/18 Javascript
jQuery 动画与停止动画效果实例详解
2020/05/19 jQuery
[01:32]dota2拉比克至宝(222)
2018/12/20 DOTA
Python实现注册登录系统
2017/08/08 Python
浅谈python中的占位符
2017/11/09 Python
python实现简单淘宝秒杀功能
2018/05/03 Python
IntelliJ IDEA安装运行python插件方法
2018/12/10 Python
python修改FTP服务器上的文件名
2019/09/11 Python
Pycharm创建项目时如何自动添加头部信息
2019/11/14 Python
移动端Html5中百度地图的点击事件
2019/01/31 HTML / CSS
优秀导游先进事迹材料
2014/01/25 职场文书
股份合作协议书范本
2014/04/14 职场文书
医药销售自荐书
2014/05/29 职场文书
场地使用证明模板
2014/10/25 职场文书