<input type="button" value="开始旋转" onclick="spin()" style="float: left" />
<meta http-equiv="Content-Type" content="text/htmlcharset=utf-8" />
<canvas id="wheelcanvas" width="500" height="500"></canvas>
<script type="application/javascript">
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 = 0i <12i++) {
var angle = startAngle + i * arc
ctx.fillStyle = colors[i]
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[i]
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()
</script>
用css3还是Canvas?自己写还是用引擎?用引擎的话用哪个?不管用什么方法做,首先数据层都是一样的,比如一个圆盘分成n个扇形图块;转盘转起来,其实就是定时点亮一个新图块,同时恢复之前点亮的图块。写到这里,我发现和扇形的角度没有任何关系,甚至不用html5技术也能做。
一、Adobe Edge目前还处于预览阶段的Adobe Edge是用HTML5、CSS、JavaScript开发动态互动内容的设计工具。内容可以同时兼容移动设备和桌面电脑。Edge的一个重要功能是Web工具包界面,方便确保页面在不同浏览器中的架构一致性,此外Edge还将整合TypeKit这样的字体服务。
动画和图形可以添加到HTML元素中,程序也能通过Edge自身的代码片段库或者JavaScript代码进行扩展。动画可以在独立的时间线上进行嵌套,还能实现互动功能。符合可以服用并通过API和代码片段控制。通过Edge设计的内容可以兼容iOS和Android设备,也可以运行在火狐、Chrome、Safari和IE9等主流浏览器。
二、Adobe Dreamweaver CS6
Adobe Dreamweaver CS6作为一个Web设计软件,提供了对HTML网站和移动程序的可视化编辑界面。其Fluid Grid排版系统整合CSS样式表功能,提供自适应版面的跨平台兼容性。开发者可以完全实现Web设计的可视化 *** 作,无需为代码所困。
用户不但还能在Live View中预览,还提供多屏幕预览功能。开发者可以通过MultiScreen预览面板查看HTML5内容的渲染效果。Live View通过WebKit渲染引擎支持HTML5。
三、Adobe ColdFusion 10
ColdFusion是用来开发企业Web程序的服务器端技术,通过Websockets、互动表单、视频和地理标签等HTML5技术创建富媒体用户体验。
四、Sencha Architect 2
在开发移动和桌面应用的工具中,Sencha的定位是HTML5可视化应用开发。开发团队可以在一个单一集成的环境中完成应用的设计、开发和部署。开发者还可以开发Sencha Touch2和Ext JS4 JavaScript应用,并实时预览。
五、Sencha Touch 2
Sencha Touch2是移动应用框架,也被看作是Sencha的HTML5平台。开发者可以用它开发面向iOS、Android和Blackberry、Kindle Fire等多种平台的移动应用。
六、Dojo Foundation Maqetta
来自于IBM的一个项目,Dojo Foundation Maqetta是为桌面和移动设备开发HTML5应用的开源工具,支持在浏览器中查看HTML5界面。用户体验设计师可以通过拖放组装UI样板
七、微软Visual Studio 2010 ServicePack 1
虽然一开始并不支持HTML5,但微软在2011年三月发布的Visual Studio 2010 SP1中提供了IntelliSense,追加了针对HTML5的一些元素。
八、JetBrains WebStorm 4.0
作为拥有HTML编辑器的JavaScript集成开发环境,WebStorm4.0提供了开发web应用的HTML5样板。开发者可以在创建HTML文档时可获得对HTML5文件的支持。例如砍伐者键入。开发者还可以在chrome浏览器中实时预览HTML文档。
九、Google Web Toolkit
该开发工具用于开发浏览器应用,但库中支持很多HTML5功能。包括对客户端或web存储的支持。其他HTML5功能还包括支持Canvas可视化,以及音频和视频widget。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)