share_zhuanpan.html 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title></title>
  6. <meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1, user-scalable=no">
  7. <meta name="apple-mobile-web-app-capable" content="yes">
  8. <meta name="apple-mobile-web-app-status-bar-style" content="black">
  9. <link rel="stylesheet" type="text/css" href="//css.iamberry.com/css/mui.min.css?v=2016101701" />
  10. <link rel="stylesheet" type="text/css" href="//css.iamberry.com/css/shop/style.css?v=2016101701" />
  11. <style>
  12. .clear{clear:both;}
  13. /* 大转盘样式 */
  14. .drawbanner{display:block;width:85%;margin:0 auto;}
  15. .drawbanner .turnplate{display:block;width:100%;position:relative;}
  16. .drawbanner .turnplate canvas.item{width:100%;}
  17. .drawbanner .turnplate img.pointer{
  18. position: absolute;
  19. width: 25%;
  20. height: 30%;
  21. left: 37.5%;
  22. top: 32%;
  23. }
  24. #img-box{display:none;}
  25. </style>
  26. </head>
  27. <body style="background: #fff3f4;">
  28. <div class="loading-bg">
  29. <div class="mui-loading">
  30. <div class="mui-spinner">
  31. </div>
  32. &nbsp;&nbsp;加载中...
  33. </div>
  34. </div>
  35. <div class="mui-content" style="background: #fff3f4;">
  36. <div style="margin-bottom: 10px;">
  37. <img width="100%" src="/iamberry/common/shop/images/wheel-title1.png" />
  38. </div>
  39. <div style="position: relative;">
  40. <div id="img-box">
  41. </div>
  42. <div class="drawbanner">
  43. <div class="turnplate" style="background-image:url(/iamberry/common/shop/images/turnplate-bg.png);background-size:100% 98%;background-repeat: no-repeat;">
  44. <canvas class="item" id="wheelcanvas" width="422px" height="422px"></canvas>
  45. <img class="pointer" src="/iamberry/common/shop/images/turnplate-pointer.png"/>
  46. </div>
  47. </div>
  48. <div style="text-align: center;">
  49. <button class="pointer" type="button" style="background: #e9004c;color: #fff;border: 0;border-radius: 5px;display: block;width:70%;margin:20px 15%;padding:11px 0;">立即抽奖</button>
  50. </div>
  51. </div>
  52. </div>
  53. </div>
  54. <script src="/iamberry/common/shop/js/mui.min.js"></script>
  55. <script src="/iamberry/common/shop/js/jquery-2.1.1.min.js"></script>
  56. <script src="/iamberry/common/shop/js/awardRotate.js"></script>
  57. <script src="/iamberry/common/shop/js/main.js"></script>
  58. <script type="text/javascript" src="/iamberry/common/js/utils/wechat-utils-1.0.js"></script>
  59. <script type="text/javascript">
  60. var turnplate={
  61. restaraunts:[], //大转盘奖品名称
  62. colors:[], //大转盘奖品区块对应背景颜色
  63. outsideRadius:166, //大转盘外圆的半径
  64. textRadius:140, //大转盘奖品位置距离圆心的距离
  65. insideRadius:40, //大转盘内圆的半径
  66. startAngle:0, //开始角度
  67. bRotate:false //false:停止;ture:旋转
  68. };
  69. var prizeList = null;
  70. $(document).ready(function(){
  71. window.repleFlag = false;
  72. window.wxFriend = {
  73. "appId": "",
  74. "imgUrl":domanUrl + '/iamberry/common/shop/images/1.png',
  75. "link":"https:" + domanUrl+"/iamberry/wechat/activity/share_luck_draw",
  76. "desc":"哎呀!我差一点就抽到iPhone7了!亮黑版,32G啊!小伙伴你也来试试吧!",//描述
  77. "title":"我离iPhone7亮黑版 32G仅一步之遥,小伙伴你快来一起抽吧!", //标题
  78. "netError":"您的网络异常,请刷新重试!如多次刷新无效,请向我们反应 ~",
  79. "shareTimeSuccess":"分享成功", //这里是分享朋友圈后调用的文字
  80. "shareTimeCancel":"已取消分享", //这里是取消分享给朋友圈后调用的文字
  81. "shareAppSuccess":"分享成功", //这里是分享好友后调用的文字
  82. "shareAppCancel":"已取消分享" //这里是取消分享给好友后调用的文字
  83. };
  84. getConfig();
  85. //动态添加大转盘的奖品与奖品区域背景颜色
  86. mui.ajax('/iamberry/wechat/game/get_prize_info',{
  87. data: {
  88. prizeGameId:1
  89. },
  90. dataType:'json',
  91. async:true,
  92. type:'post',
  93. timeout:15000,
  94. success:function(dt){
  95. if (dt.status) {
  96. prizeList = dt.data;
  97. //console.log(prizeList);
  98. mui(prizeList).each(function(index){
  99. turnplate.restaraunts[index] = this.prizeName;
  100. if ((index + 1) % 2 == 0) {
  101. turnplate.colors[index] = "#ff9c9d";
  102. } else {
  103. if (index == (prizeList.length - 1)) {
  104. turnplate.colors[index] = "#f99eaa";
  105. } else {
  106. turnplate.colors[index] = "#f76f7d";
  107. }
  108. }
  109. //先把图片加载出来
  110. $("#img-box").append('<img src="'+this.prizeImage+'" id="'+this.prizeId+'"/>');
  111. });
  112. //防止图片没加载完设置1秒后再绘制canvas
  113. setTimeout(function(){
  114. drawRouletteWheel()
  115. document.querySelector('.loading-bg').style.display = 'none';
  116. },1000);
  117. } else {
  118. }
  119. },
  120. error:function(xhr,type,errorThrown){
  121. }
  122. });
  123. //旋转转盘 item:奖品位置; txt:提示语;
  124. var rotateFn = function (item, txt, to){
  125. var angles = item * (360 / turnplate.restaraunts.length) - (360 / (turnplate.restaraunts.length*2));
  126. if(angles<270){
  127. angles = 270 - angles;
  128. }else{
  129. angles = 360 - angles + 270;
  130. }
  131. $('#wheelcanvas').stopRotate();
  132. $('#wheelcanvas').rotate({
  133. angle:0,
  134. animateTo:(to == null ? (angles+1800) : to),
  135. duration:3000,
  136. callback:function (){
  137. turnplate.bRotate = !turnplate.bRotate;
  138. }
  139. });
  140. };
  141. $(".pointer").on("click",function(){
  142. //去产品列表
  143. mui.openWindow({
  144. url: base_path + '/index' //index.html
  145. });
  146. });
  147. });
  148. function drawRouletteWheel() {
  149. var canvas = dc("wheelcanvas");
  150. if (canvas.getContext) {
  151. //根据奖品个数计算圆周角度
  152. var arc = Math.PI / (turnplate.restaraunts.length/2);
  153. var ctx = canvas.getContext("2d");
  154. //在给定矩形内清空一个矩形
  155. ctx.clearRect(0,0,422,422);
  156. //strokeStyle 属性设置或返回用于笔触的颜色、渐变或模式
  157. ctx.strokeStyle = "rgba(0,0,0,0)";//边框颜色
  158. //font 属性设置或返回画布上文本内容的当前字体属性
  159. ctx.font = '17px Arial';
  160. for(var i = 0; i < turnplate.restaraunts.length; i++) {
  161. //添加对应图标
  162. if (prizeList != null) {
  163. var angle = turnplate.startAngle + i * arc;
  164. ctx.fillStyle = turnplate.colors[i];
  165. ctx.beginPath();
  166. //arc(x,y,r,起始角,结束角,绘制方向) 方法创建弧/曲线(用于创建圆或部分圆)
  167. ctx.arc(211, 211, turnplate.outsideRadius, angle, angle + arc, false);
  168. ctx.arc(211, 211, turnplate.insideRadius, angle + arc, angle, true);
  169. ctx.stroke();
  170. ctx.fill();
  171. //锁画布(为了保存之前的画布状态)
  172. ctx.save();
  173. //----绘制奖品开始----
  174. ctx.fillStyle = "#fff";
  175. var text = turnplate.restaraunts[i];
  176. var line_height = 17;
  177. //translate方法重新映射画布上的 (0,0) 位置
  178. ctx.translate(211 + Math.cos(angle + arc / 2) * turnplate.textRadius, 211 + Math.sin(angle + arc / 2) * turnplate.textRadius);
  179. //rotate方法旋转当前的绘图
  180. ctx.rotate(angle + arc / 2 + Math.PI / 2);
  181. /** 下面代码根据奖品类型、奖品名称长度渲染不同效果,如字体、颜色、图片效果。(具体根据实际情况改变) **/
  182. //在画布上绘制填色的文本。文本的默认颜色是黑色
  183. //measureText()方法返回包含一个对象,该对象包含以像素计的指定字体宽度
  184. ctx.fillText(text, -ctx.measureText(text).width / 2, 0);
  185. var img= dc(prizeList[i].prizeId);
  186. ctx.drawImage(img,-25,10);
  187. //把当前画布返回(调整)到上一个save()状态之前
  188. }
  189. //----绘制奖品结束----
  190. ctx.restore();
  191. }
  192. }
  193. }
  194. </script>
  195. </body>
  196. </html>