stanley-king 8 лет назад
Родитель
Сommit
799d00b0e9

+ 102 - 0
data/resource/mobile/comm/bridge.js

@@ -0,0 +1,102 @@
+/**
+ * Created by stanley-king on 2016/10/28.
+ */
+
+function init_ios_bridge(callback)
+{
+    if (window.WebViewJavascriptBridge) {
+        return callback(WebViewJavascriptBridge);
+    }
+
+    if (window.WVJBCallbacks) {
+        return window.WVJBCallbacks.push(callback);
+    }
+
+    window.WVJBCallbacks = [callback];
+    var WVJBIframe = document.createElement('iframe');
+    WVJBIframe.style.display = 'none';
+    WVJBIframe.src = 'wvjbscheme://__BRIDGE_LOADED__';
+    document.documentElement.appendChild(WVJBIframe);
+    setTimeout(function() {
+        document.documentElement.removeChild(WVJBIframe);
+    }, 0);
+}
+
+function init_android_bridge()
+{
+    if (window.WebViewJavascriptBridge)
+    {
+        WebViewJavascriptBridge.init();
+    }
+    else
+    {
+        document.addEventListener(
+            'WebViewJavascriptBridgeReady'
+            , function() {
+                WebViewJavascriptBridge.init();},
+            false);
+    }
+}
+
+function call_native_handler(handler, data,callback)
+{
+    if (window.WebViewJavascriptBridge)
+    {
+        window.WebViewJavascriptBridge.callHandler(handler,
+            data,
+            callback);
+    }
+    else
+    {
+        document.addEventListener(
+            'WebViewJavascriptBridgeReady'
+            , function()
+            {
+                window.WebViewJavascriptBridge.callHandler(
+                    handler,
+                    data,
+                    callback,
+                    false);
+            }
+        );
+    }
+}
+function register_js_hander(name,callback)
+{
+    if (window.WebViewJavascriptBridge)
+    {
+        window.WebViewJavascriptBridge.registerHandler(name,
+            callback);
+    }
+    else
+    {
+        document.addEventListener(
+            'WebViewJavascriptBridgeReady'
+            , function()
+            {
+                window.WebViewJavascriptBridge.registerHandler(name,callback);
+            }
+        );
+    }
+}
+
+var isMobile = {
+    Android: function() {
+        return navigator.userAgent.match(/Android/i);
+    },
+    BlackBerry: function() {
+        return navigator.userAgent.match(/BlackBerry/i);
+    },
+    iOS: function() {
+        return navigator.userAgent.match(/iPhone|iPad|iPod/i);
+    },
+    Opera: function() {
+        return navigator.userAgent.match(/Opera Mini/i);
+    },
+    Windows: function() {
+        return navigator.userAgent.match(/IEMobile/i);
+    },
+    any: function() {
+        return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows());
+    }
+};

+ 1 - 1
helper/activity/full_sent.php

@@ -152,7 +152,7 @@ class full_sent
             $title = "满{$price}{$desc}";
         }
         else {
-            $title = "满{$price}{$desc},{$name}";
+            $title = "满{$price}{$desc}{$name}";
         }
 
         return $title;

+ 17 - 1
mobile/control/game.php

@@ -4,4 +4,20 @@
  * User: stanley-king
  * Date: 2016/10/28
  * Time: 下午6:50
- */
+ */
+
+defined('InShopNC') or exit('Access Invalid!');
+
+class gameControl extends mbMemberControl
+{
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    public function shakeOp()
+    {
+        $_SESSION['client_type'] = "wap";
+        return self::outsuccess(null,"game/shake_bonus");
+    }
+}

+ 1 - 1
mobile/control/search.php

@@ -240,7 +240,7 @@ class searchControl extends mobileHomeControl
 
             $model_goods = Model('goods');
             $goods_list = $model_goods->getGoodsListByColorDistinct(array('goods_id' => array('in',$goods_ids)), goods_helper::fieldstr);
-            $block = special_helper::format_goods($goods_ids,"猜你喜欢");
+            $block = special_helper::format_goods($goods_ids,"猜你喜欢");
 
             $helper = new goods_helper();
             $ret = $helper->get_summaryex($goods_list,$related_goods);

+ 172 - 7
mobile/templates/default/game/shake_bonus.php

@@ -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>