js+php+大转盘,js+html几种不同的抽奖大转盘,转来看看

这篇博客介绍了两种实现抽奖转盘的方法,一种是使用JavaScript和HTML,另一种是利用HTML5的canvas。作者提供了详细的代码示例,包括随机选择奖项和动画效果的实现,使得抽奖过程既有趣又直观。这两种方案相比传统的抽纸条方式更为现代化和吸引人。
摘要由CSDN通过智能技术生成

╱人◕‿‿◕人╲定下契约

x

组织办活动,到了抽题答题的环节我想用这么一个转盘选题,总比拿箱子放纸条要高端大气多了

找个差不多的自己改一下P点图片就OK了其实,有什么更好的方案么

第一种是JS+HTML的:

QQ截图20131006181739.png (107.31 KB, 下载次数: 0)

2013-10-6 18:21 上传

[mw_shl_code=javascript,true]

flash抽奖转盘通用模板

#flashContent { width:510px; height:510px; }

#layer { background:#f5f5f5; border:#000 solid 1px; padding:20px; position:absolute; left:50%; top:50%; display:none; }

flashHoler = "flashContent"     //加载flash的容器ID

autoPlay = "yes"                //初始化时是否自动旋转,"yes" or "no"

setPointer="no"                                 //初始化时是否设置鼠标指针,"yes" or "no"

url_bg = "bg.png";              //转盘背景图片

url_prize = "prize.png";        //奖品图片

url_pointer = "pointer.png";    //指针图片

url_btnStart = "btnStart.swf";  //开始按钮图片,可以是图片或flash

url_btnOver = "btnOver.gif";    //鼠标经过图片

url_btnWait = "btnWait.gif";    //旋转过程中按钮图片

url_btnSuc = "btnSuc.gif";      //旋转结束后按钮图片

W_bg = "510";                   //背景图片尺寸

W_btn = "124";                  //按钮图片尺寸

W_pointer = "150";              //指针图片宽度

H_pointer = "255";              //指针图片高度

totleNum = 10;                  //奖品个数

turns = 10;                      //旋转圈数

stopNum = Math.floor(Math.random()*10)+1;                    //中奖奖品

[/mw_shl_code]

上面中奖奖品的地方是我自己改了个随机数,附件里面的demo3.html是这个

第二种是HTML5的:

QQ截图20131006181703.png (33.93 KB, 下载次数: 0)

2013-10-6 18:27 上传

图片看起来很渣对吧,页面没有用图片,就一个HTML,这个圈全是canvas里面画出来的,转的很平稳,最后还是慢慢停下的

[mw_shl_code=javascript,true]

var colors = ["#B8D430", "#3AB745", "#029990", "#3501CB",

"#2E2C75", "#673A7E", "#CC0071", "#F80120",

"#F35B20", "#FB9A00", "#FFCC00", "#FEF200"];

var restaraunts = ["北京", "上海", "天津", "南京",

"杭州", "深圳", "武汉", "济南",

"重庆", "大连", "合肥", "郑洲"];

var startAngle = 0;

var arc = Math.PI / 6;

var spinTimeout = null;

var spinArcStart = 10;

var spinTime = 0;

var spinTimeTotal = 0;

var ctx;

function draw() {

drawRouletteWheel();

}

function drawRouletteWheel() {

var canvas = document.getElementById("wheelcanvas");

if (canvas.getContext) {

var outsideRadius = 200;

var textRadius = 160;

var insideRadius = 125;

ctx = canvas.getContext("2d");

ctx.clearRect(0,0,500,500);

ctx.strokeStyle = "black";

ctx.lineWidth = 2;

ctx.font = 'bold 12px sans-serif';

for(var i = 0; i < 12; i++) {

var angle = startAngle + i * arc;

ctx.fillStyle = colors;

ctx.beginPath();

ctx.arc(250, 250, outsideRadius, angle, angle + arc, false);

ctx.arc(250, 250, insideRadius, angle + arc, angle, true);

ctx.stroke();

ctx.fill();

ctx.save();

ctx.shadowOffsetX = -1;

ctx.shadowOffsetY = -1;

ctx.shadowBlur    = 0;

ctx.shadowColor   = "rgb(220,220,220)";

ctx.fillStyle = "black";

ctx.translate(250 + Math.cos(angle + arc / 2) * textRadius, 250 + Math.sin(angle + arc / 2) * textRadius);

ctx.rotate(angle + arc / 2 + Math.PI / 2);

var text = restaraunts;

ctx.fillText(text, -ctx.measureText(text).width / 2, 0);

ctx.restore();

}

//Arrow

ctx.fillStyle = "black";

ctx.beginPath();

ctx.moveTo(250 - 4, 250 - (outsideRadius + 5));

ctx.lineTo(250 + 4, 250 - (outsideRadius + 5));

ctx.lineTo(250 + 4, 250 - (outsideRadius - 5));

ctx.lineTo(250 + 9, 250 - (outsideRadius - 5));

ctx.lineTo(250 + 0, 250 - (outsideRadius - 13));

ctx.lineTo(250 - 9, 250 - (outsideRadius - 5));

ctx.lineTo(250 - 4, 250 - (outsideRadius - 5));

ctx.lineTo(250 - 4, 250 - (outsideRadius + 5));

ctx.fill();

}

}

function spin() {

spinAngleStart = Math.random() * 10 + 10;

spinTime = 0;

spinTimeTotal = Math.random() * 3 + 4 * 1000;

rotateWheel();

}

function rotateWheel() {

spinTime += 30;

if(spinTime >= spinTimeTotal) {

stopRotateWheel();

return;

}

var spinAngle = spinAngleStart - easeOut(spinTime, 0, spinAngleStart, spinTimeTotal);

startAngle += (spinAngle * Math.PI / 180);

drawRouletteWheel();

spinTimeout = setTimeout('rotateWheel()', 30);

}

function stopRotateWheel() {

clearTimeout(spinTimeout);

var degrees = startAngle * 180 / Math.PI + 90;

var arcd = arc * 180 / Math.PI;

var index = Math.floor((360 - degrees % 360) / arcd);

ctx.save();

ctx.font = 'bold 30px sans-serif';

var text = restaraunts[index]

ctx.fillText(text, 250 - ctx.measureText(text).width / 2, 250 + 10);

ctx.restore();

}

function easeOut(t, b, c, d) {

var ts = (t/=d)*t;

var tc = ts*t;

return b+c*(tc + -3*ts + 3*t);

}

draw();

[/mw_shl_code]

7a4240558156beb2898f89af1d9965f9.gif

zhuanpan.rar

(303.72 KB, 下载次数: 19)

2013-10-6 18:31 上传

点击文件名下载附件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值