|
@@ -1,7 +1,172 @@
|
|
|
-<?php
|
|
|
-/**
|
|
|
- * Created by PhpStorm.
|
|
|
- * User: stanley-king
|
|
|
- * Date: 2016/10/28
|
|
|
- * Time: 下午6:54
|
|
|
- */
|
|
|
+<?php defined('InShopNC') or exit('Access Invalid!'); ?>
|
|
|
+
|
|
|
+<!DOCTYPE html>
|
|
|
+<html lang="en">
|
|
|
+<head>
|
|
|
+ <meta charset="UTF-8">
|
|
|
+ <title>摇一摇</title>
|
|
|
+ <script src="<?php echo RESOURCE_SITE_URL; ?>/mobile/shake/js/flexible.js"></script>
|
|
|
+ <link rel="stylesheet" href="<?php echo RESOURCE_SITE_URL; ?>/mobile/shake/css/main.css"/>
|
|
|
+</head>
|
|
|
+<body>
|
|
|
+<div class="maincontent">
|
|
|
+ <div class="r_bag_bottom"></div>
|
|
|
+ <div class="shake_top">
|
|
|
+ <div class="shake_top_box">
|
|
|
+ <div class="top_border"></div>
|
|
|
+ </div>
|
|
|
+ <div class="shake_bottom_box">
|
|
|
+ <div class="bottom_border"></div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="loading_icon"></div>
|
|
|
+
|
|
|
+ <div class="results_box"></div>
|
|
|
+</div>
|
|
|
+
|
|
|
+<audio src="<?php echo RESOURCE_SITE_URL; ?>/mobile/shake/mp3/wx_shake.mp3" id="shake_sound"></audio>
|
|
|
+<audio src="<?php echo RESOURCE_SITE_URL; ?>/mobile/shake/mp3/success.mp3" id="shake_success"></audio>
|
|
|
+
|
|
|
+<script type="text/javascript" src="<?php echo RESOURCE_SITE_URL; ?>/mobile/shake/js/zepto.min.js"></script>
|
|
|
+<script type="text/javascript" src="<?php echo RESOURCE_SITE_URL; ?>/mobile/comm/bridge.js"></script>
|
|
|
+<script type="text/javascript">
|
|
|
+ function init_rock()
|
|
|
+ {
|
|
|
+ if (window.DeviceMotionEvent) {
|
|
|
+ window.addEventListener('devicemotion', deviceMotionHandler, false);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ function shake_start()
|
|
|
+ {
|
|
|
+ $('.results_box').removeClass('fadeIn');
|
|
|
+ $('.shake_top_box').addClass('slider-top');
|
|
|
+ $('.shake_bottom_box').addClass('slider-bottom');
|
|
|
+ $('.top_border').addClass('border_opacity');
|
|
|
+ $('.bottom_border').addClass('border_opacity');
|
|
|
+
|
|
|
+ call_native_handler('shakeStart','begin',null);
|
|
|
+ }
|
|
|
+
|
|
|
+ function shake_end(strength)
|
|
|
+ {
|
|
|
+ $('.shake_top_box').removeClass('slider-top');
|
|
|
+ $('.shake_bottom_box').removeClass('slider-bottom');
|
|
|
+ $('.top_border').removeClass('border_opacity');
|
|
|
+ $('.bottom_border').removeClass('border_opacity');
|
|
|
+
|
|
|
+ if(typeof strength !== "number") {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ call_native_handler('shakeEnd', strength, function(response)
|
|
|
+ {
|
|
|
+ var data=response;
|
|
|
+ if(data.code!=200) {
|
|
|
+ $('.results_box').removeClass('fadeIn');
|
|
|
+ can_start = true;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var html='';
|
|
|
+ for(var i=0;i<data.datas.bonuses.length;i++) {
|
|
|
+
|
|
|
+ var sex = '<img src="' + data.datas.bonuses[i].avatar + '" alt=""/>';
|
|
|
+
|
|
|
+ var msg = '';
|
|
|
+ if (data.datas.info.money > 0) {
|
|
|
+ msg = '你摇到了他<span class="price">' + data.datas.info.money + '</span>元红包';
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ msg = '你送给了他<span class="price">' + data.datas.info.money + '</span>元红包';
|
|
|
+ }
|
|
|
+
|
|
|
+ html += '<div class="head_icon">' +
|
|
|
+ sex +
|
|
|
+ '</div>' +
|
|
|
+ '<div class="name_box">' +
|
|
|
+ '<div class="name">' + data.datas.bonuses[i].name + '</div>' +
|
|
|
+ '<div class="results_msg">' +
|
|
|
+ msg + '</div>' + '</div>';
|
|
|
+ }
|
|
|
+
|
|
|
+ $('.results_box').empty();
|
|
|
+ $('.results_box').append(html).addClass('fadeIn');
|
|
|
+ can_start = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ return true;
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ function calculate_speed(eventData) {
|
|
|
+ var acceleration = eventData.accelerationIncludingGravity;
|
|
|
+
|
|
|
+ var x = acceleration.x;
|
|
|
+ var y = acceleration.y;
|
|
|
+ var z = acceleration.z;
|
|
|
+
|
|
|
+ var speed = Math.sqrt(x * x + y * y + z * z);
|
|
|
+ return speed;
|
|
|
+ }
|
|
|
+
|
|
|
+ var SHAKE_THRESHOLD = 20;
|
|
|
+ var can_start = true;
|
|
|
+ var rock_start = false;
|
|
|
+ var max_speed = 0;
|
|
|
+
|
|
|
+ function handle_rock(eventData)
|
|
|
+ {
|
|
|
+
|
|
|
+ var speed = calculate_speed(eventData);
|
|
|
+ speed = parseInt(speed);
|
|
|
+ max_speed = parseInt(max_speed);
|
|
|
+
|
|
|
+ if(can_start == true && rock_start == false)
|
|
|
+ {
|
|
|
+ if(speed > SHAKE_THRESHOLD) {
|
|
|
+ shake_start();
|
|
|
+ rock_start = true;
|
|
|
+ max_speed = speed;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if(speed > max_speed && can_start == true) {
|
|
|
+ max_speed = speed;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(can_start == true && rock_start == true)
|
|
|
+ {
|
|
|
+ if(speed < SHAKE_THRESHOLD) {
|
|
|
+ rock_start = false;
|
|
|
+ var strength = max_speed - SHAKE_THRESHOLD;
|
|
|
+ strength = strength / 10;
|
|
|
+ strength = parseInt(strength);
|
|
|
+ if(shake_end(strength) == true) {
|
|
|
+ can_start = false;
|
|
|
+ } else {
|
|
|
+ can_start = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ function deviceMotionHandler(eventData)
|
|
|
+ {
|
|
|
+ handle_rock(eventData);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(isMobile.iOS()) {
|
|
|
+ init_ios_bridge(function(bridge) { });
|
|
|
+ } else if (isMobile.Android) {
|
|
|
+ init_android_bridge();
|
|
|
+ } else {
|
|
|
+ alert("本设备不支持摇一摇功能");
|
|
|
+ }
|
|
|
+ init_rock();
|
|
|
+</script>
|
|
|
+
|
|
|
+</body>
|
|
|
+</html>
|