/**
* Created by taojiamin on 2017/3/24.
*/
var ctrl3d;
$(function(){
//首先判断浏览器对3D的支持
if(!webgl)return false;
//然后判断是否有3D相关的数据推送;
var $container = $("#container3d");
var $pond = $container.find(".pond");
if($container.size()==0)return false;
//读取点信息
var spots = [];
$pond.find(".c3d-hotspot").each(function(n,f){
spots.push({ "pitch": $(this).data("pitch"),
"yaw": $(this).data("yaw"),
"type": "pannel",
"createTooltipArgs": f,
"createTooltipFunc": spotHtml});
});
//初始化3D场景
ctrl3d = jdpanorama.viewer('container3d', {
"default": {
"firstScene": "pond",
"sceneFadeDuration": 2000,
"autoLoad": true
},
"autoRotate":5,
// "title": "白雪公主的城堡",
// "author": "国内著名设计师",
"fallback": "//www.jd.com",//设置一个链接,如果浏览器不支持webGl,则提示的同事展现一个替代的链接~ 这是替代链接的url。
// "hotSpotDebug": true,//debug模式,点击获得各种数据
// "autoLoad": true,//自动加载 ok!有效
// "loadButtonLabel": "魔法屋加载中。。。",//如果设置不自动加载,将会出现一个提示,这是设置提示的文字,可点击,点击将触发加载
// "showZoomCtrl": true,//缩放控制按钮,默认不设置也是true,想关闭设置false;
// "showFullscreenCtrl": true,//全屏控制按钮,,默认也是true
"showControls": false,//同时控制上面两项
// "orientationOnByDefault": false,//默认方向,没看懂
"pitch":$pond.data("pitch"),//默认方向之上下偏角
"yaw": $pond.data("yaw"),//默认方向之左右偏角
// "hfov":120,// 取值在50-120之间,默认缩放级别是100,另外取值范围是可以修改的
// "roll":50,//Z轴旋转,这个设置后整个世界都倾斜了加载的按钮的文字?没生效!还是load。。。
"scenes": {
"pond": { "panorama": $pond.data("img"),
// "panorama": "http://localhost/html/page/1.jpg",
// "panorama": "http://img11.360buyimg.com/faner/s707x500_jfs/t2755/175/3025931161/704312/771a4d58/577dbc96N2e130b76.png",
"hotSpots": spots}
},
"ready":function(){ // dom重构~注入相关icon
// dom重构
var tpl = ""
+ '
'
+ '
左右拖动图片试试看
'
+ '
'
+ '
';
var $newPannel = $(tpl);
$("#container3d").append($newPannel);
get3dPrice();//拉取3D的sku价格
},
"onFullScreen":function(){ $("#container3d .c3di-fullctrl").addClass("c3di-isfull"); },
"onCancelFullScreen":function(){ $("#container3d .c3di-fullctrl").removeClass("c3di-isfull"); },
"onFirstDrag":function(){ $("#container3d .c3d-move").hide(); }
//价格和主图的拉取
});
//交互事件部分:
$container.delegate('.c3d-close', 'click', function(event) { //锚点面板的关闭
$(this).closest('.jdpano-pannel').removeClass("curr");
}).delegate('.c3d-hotspot-tit', 'click', function(event) {//锚点的点击
// 1.设置焦点,展示面板
$(this).closest('.jdpano-pannel').addClass("curr").siblings().removeClass("curr");
// 2.调整视角至中间
var yaw = $(this).closest('.c3d-hotspot').data("yaw");
var pitch = $(this).closest('.c3d-hotspot').data("pitch");
if(yaw&&pitch){ ctrl3d.setYaw(yaw); ctrl3d.setPitch(pitch); }
//3.右边列表的焦点切换
var typeName = $(this).find(".c3d-spotname").text();
$("#container2d .item span").filter(function(n,f){ return $(f).text()==typeName; }).trigger("click");
//4.停止自动转屏
ctrl3d.stopAutoRotate();
//5.清除提示
$container.find(".c3d-move").hide();
}).delegate(".c3di-fullctrl","click",function(){ //全屏切换部分
ctrl3d.toggleFullscreen();
}).delegate(".c3dg-select","click",function(){//3d场景中sku选中,选中是对应列表的锚点上去~ 找这个sku,如果找到了,而且是个选空状态,就触发选中
var $wrap = $(this).closest('.c3d-hotspot');
var sku3d = $wrap.find(".c3d-goods").data("sku");
var $findsku = $("#products_list .p-current .j_option").filter(function(n,f){ return $(f).data("id") == sku3d; });
if($findsku.length){
$findsku.trigger("click");
$(this).hide().siblings('.c3dg-unselect').show();
}
}).delegate(".c3dg-unselect","click",function(){//3d场景中sku取消选中,选空是找到这个锚点的sku,如果是选中的,而且上面的勾是勾上的,就只触发一下勾即可!
$(this).hide().siblings('.c3dg-select').show();
var $wrap = $(this).closest('.c3d-hotspot');
var sku3d = $wrap.find(".c3d-goods").data("sku");
var $findsku = $("#products_list .p-current .j_option:first").filter(function(n,f){ return $(f).data("id") == sku3d; });
if($findsku.length){
$findsku.closest(".j_p-tab").find(".j_p-check.checked").trigger("click");
}
});
function spotHtml(div,dom){ div.appendChild(dom); }
function get3dPrice() {
var $doms = $("#container3d .jdpano-pannel .c3d-goods .c3dgi-price");
var skusArr = $.makeArray($doms.map(function(){
return $(this).data("sku");
}));
if(skusArr.length){
var skusStr = "J_" + skusArr.join(",J_");
$.ajax({
url: "//p.3.cn/prices/mgets?type=1&skuIds=" + skusStr,
dataType: "jsonp",
success: function(data) {
if (!data && !data.length) return false;
for (var i = 0; i < data.length; i++){
if (data[i].id) {
var sku = data[i].id.replace("J_", "");
var price = data[i].p;
$doms.filter("[data-sku="+sku+"]").html(0 >= price ? "\u6682\u65e0\u62a5\u4ef7" : "¥" + price);
}
}
}
});
}
}
});