使用基于ThinkPHP3.2.3的ThinkAdmin创建手机电脑通用的表白墙(四)实现弹幕
2016-03-11 16:56
756 查看
90后主要是通过视频获取信息、娱乐的一代,各大主流的在线视频播放器都实现了弹幕功能,并且我们用的还乐此不疲,真的挺好玩。
通过代码来实现弹幕的思路:在数据库读取信息,显示在界面上。这个界面是弹幕样式的,每一条的颜色都不一样,所以要随机生成颜色代码,还包括字体、字体大小、位置、动画的速度。这样只是死的弹幕,因为只有界面刷新一下才能换成下一波,以后实现使用ajax完成无刷更新弹幕。
1.数据部分
数据库:
字段id,
表白内容title,
昵称user_name,
时间time,
IP地址ip,
是否审核type,(1代表通过、2代表未过、3代表等待审核,表白信息一创建就要设置为3)
Thinkphp的M部分
thinkadmin的model目录的文件都是些验证规则,这里不需要过滤就不创建文件了。
2.Controller
Home/Controller/IndexController.class.php
<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller{
/*
*电脑端只提供弹幕和微信平台二维码
*
*/
public function index(){
$SayLove = M('Saylove');
//显示已经通过审核的表白
$wall = $SayLove->limit(10)->order('rand()')->where('type=1')->select();
//ThinkPHP的连贯操作 随机选择十条已经审核的表白信息
foreach ($wall as &$love) {
//遍历结果集,添加颜色、速度等随机产生的字段
$love['color'] = $this->randomColor();//弹幕的颜色代码
$love['fontsize'] = rand(10,50);//弹幕的字体大小
$love['begin'] = strval(rand(0,10)).'s';//弹幕开始时间
$love['dur'] = strval(rand(9,15)).'s';//弹幕速度
}
$this->assign('wall',$wall);//替换view中的变量
$this->display(); //渲染界面
}
public function randomColor(){
//随机生成弹幕的颜色代码
$str = '#';
for($i = 0 ; $i < 6 ; $i++){
$randNum = rand(0 , 15);
switch ($randNum) {
case 10: $randNum = 'A'; break;
case 11: $randNum = 'B'; break;
case 12: $randNum = 'C'; break;
case 13: $randNum = 'D'; break;
case 14: $randNum = 'E'; break;
case 15: $randNum = 'F'; break;
}
$str .= $randNum;
}
return $str;
}
}
BaseController.class.php
3.View部分
Home/View/Index/index.html
<include file="Public:header"/>
<div class="container js_container">
</div>
<script type="text/html" id="tpl_home">
<div class="hd">
<h1 class="page_title">表白墙</h1>
<p class="page_desc">为"有贼心,没贼胆"的你量身设计</p>
</div>
<p class="page_desc">关注公众平台去表白:<br> <img src="__STATIC__/mpweixin.jpg" height="130"width="130"></img> <br>Powered By 滨州学院信息工程系.</p>
</script>
<volist name="wall" id="love">
<svg width="1500" height="50" xmlns="http://www.w3.org/2000/svg" style="box-sizing: border-box;">
<text font-family="microsoft yahei" font-size="{$love.fontsize}" y="40" x="-28.4475" fill="{$love.color}" style="box-sizing: border-box;">
{$love.user_name}:{$love.title}
<animate attributename="x" from="800" to="-400" begin="{$love.begin}" dur="{$love.dur}" repeatcount="indefinite" style="box-sizing: border-box;"></animate>
</text>
</svg>
</volist>
<include file="Public:footer"/>Volist标签主要用于在模板中循环输出数据集或者多维数组。是ThinkPHP的内置标签。变量替换格式{$VolistID.数据库对应的字段}
页面的head与foot统一定义在了Home/View/Public/下,一些公共的css、js等也可以放在这里。
header.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{$title}</title>
<link rel="stylesheet" href="__STATIC__/css/style.css">
<script type="text/javascript" src="__STATIC__/js/init.js"></script>
<link rel="stylesheet" href="__STATIC__/css/weui.css"/>
<link rel="stylesheet" href="__STATIC__/css/example.css"/>
<script src="__STATIC__/js/zepto.min.js"></script>
<script src="__STATIC__/js/example.js"></script>
</head>
<body>
footer.html
</body>
</html>页面中的变量__STATIC__是在Home/Conf/config.php中定义的
<?php
return array(
//主题静态文件路径
'TMPL_PARSE_STRING' => array(
'__STATIC__' => __ROOT__.'/Application/'.MODULE_NAME.'/View/' . '/Public/static'
),
);基本这样就完成了弹幕功能。
通过代码来实现弹幕的思路:在数据库读取信息,显示在界面上。这个界面是弹幕样式的,每一条的颜色都不一样,所以要随机生成颜色代码,还包括字体、字体大小、位置、动画的速度。这样只是死的弹幕,因为只有界面刷新一下才能换成下一波,以后实现使用ajax完成无刷更新弹幕。
1.数据部分
数据库:
字段id,
表白内容title,
昵称user_name,
时间time,
IP地址ip,
是否审核type,(1代表通过、2代表未过、3代表等待审核,表白信息一创建就要设置为3)
Thinkphp的M部分
thinkadmin的model目录的文件都是些验证规则,这里不需要过滤就不创建文件了。
2.Controller
Home/Controller/IndexController.class.php
<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller{
/*
*电脑端只提供弹幕和微信平台二维码
*
*/
public function index(){
$SayLove = M('Saylove');
//显示已经通过审核的表白
$wall = $SayLove->limit(10)->order('rand()')->where('type=1')->select();
//ThinkPHP的连贯操作 随机选择十条已经审核的表白信息
foreach ($wall as &$love) {
//遍历结果集,添加颜色、速度等随机产生的字段
$love['color'] = $this->randomColor();//弹幕的颜色代码
$love['fontsize'] = rand(10,50);//弹幕的字体大小
$love['begin'] = strval(rand(0,10)).'s';//弹幕开始时间
$love['dur'] = strval(rand(9,15)).'s';//弹幕速度
}
$this->assign('wall',$wall);//替换view中的变量
$this->display(); //渲染界面
}
public function randomColor(){
//随机生成弹幕的颜色代码
$str = '#';
for($i = 0 ; $i < 6 ; $i++){
$randNum = rand(0 , 15);
switch ($randNum) {
case 10: $randNum = 'A'; break;
case 11: $randNum = 'B'; break;
case 12: $randNum = 'C'; break;
case 13: $randNum = 'D'; break;
case 14: $randNum = 'E'; break;
case 15: $randNum = 'F'; break;
}
$str .= $randNum;
}
return $str;
}
}
BaseController.class.php
3.View部分
Home/View/Index/index.html
<include file="Public:header"/>
<div class="container js_container">
</div>
<script type="text/html" id="tpl_home">
<div class="hd">
<h1 class="page_title">表白墙</h1>
<p class="page_desc">为"有贼心,没贼胆"的你量身设计</p>
</div>
<p class="page_desc">关注公众平台去表白:<br> <img src="__STATIC__/mpweixin.jpg" height="130"width="130"></img> <br>Powered By 滨州学院信息工程系.</p>
</script>
<volist name="wall" id="love">
<svg width="1500" height="50" xmlns="http://www.w3.org/2000/svg" style="box-sizing: border-box;">
<text font-family="microsoft yahei" font-size="{$love.fontsize}" y="40" x="-28.4475" fill="{$love.color}" style="box-sizing: border-box;">
{$love.user_name}:{$love.title}
<animate attributename="x" from="800" to="-400" begin="{$love.begin}" dur="{$love.dur}" repeatcount="indefinite" style="box-sizing: border-box;"></animate>
</text>
</svg>
</volist>
<include file="Public:footer"/>Volist标签主要用于在模板中循环输出数据集或者多维数组。是ThinkPHP的内置标签。变量替换格式{$VolistID.数据库对应的字段}
页面的head与foot统一定义在了Home/View/Public/下,一些公共的css、js等也可以放在这里。
header.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{$title}</title>
<link rel="stylesheet" href="__STATIC__/css/style.css">
<script type="text/javascript" src="__STATIC__/js/init.js"></script>
<link rel="stylesheet" href="__STATIC__/css/weui.css"/>
<link rel="stylesheet" href="__STATIC__/css/example.css"/>
<script src="__STATIC__/js/zepto.min.js"></script>
<script src="__STATIC__/js/example.js"></script>
</head>
<body>
footer.html
</body>
</html>页面中的变量__STATIC__是在Home/Conf/config.php中定义的
<?php
return array(
//主题静态文件路径
'TMPL_PARSE_STRING' => array(
'__STATIC__' => __ROOT__.'/Application/'.MODULE_NAME.'/View/' . '/Public/static'
),
);基本这样就完成了弹幕功能。
相关文章推荐
- kindeditor 批量上传 上传失败 thinkphp swfupload session
- ThinkPHP关联模型操作实例分析
- thinkphp3.0 模板中函数的使用
- ThinkPHP采用<volist>实现三级循环代码实例
- Thinkphp模板标签if和eq的区别和比较实例分析
- 合并ThinkPHP配置文件以消除代码冗余的实现方法
- ThinkPHP中自定义目录结构的设置方法
- ThinkPHP控制器详解
- ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
- 解析thinkphp中的M()与D()方法的区别
- ThinkPHP采用模块和操作分析
- Thinkphp模板中使用自定义函数的方法
- linux下使用ThinkPHP需要注意大小写导致的问题
- ThinkPHP中FCKeditor编辑器的使用方法
- thinkphp的CURD和查询方式介绍
- THINKPHP支持YAML配置文件的设置方法
- Thinkphp中import的几个用法详细介绍
- 浅谈thinkphp的实例化模型
- ThinkPHP控制器里javascript代码不能执行的解决方法
- ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法