cocos2d-js 实现双指缩放地图效果 和 单点移动效果

cocos2d-js 实现双指缩放地图效果 和 单点移动效果,第1张

概述 var winSize = cc.director.getWinSize();if(touches.length > 1) // 多点进行缩放{ // 得到当前两触摸点 var point1 = touches[0].getLocation(); var point2 = touches[1].getLocation(); / 
var  winSize = cc.director.getWinSize();if(touches.length > 1)        // 多点进行缩放{    得到当前两触摸点    point1 = touches[0].getLocation();    var point2 1].getLocation();    计算两点之间得距离x1 = point1.x - point2.x;    y1 point1.y point2.y;    currdistance = Math.pow((x1*+y1y1),0.5);//cc.pdistance(point1,point2); //Math.sqrt(x1*x1+y1*y1);//point1.distance(point2);    // 计算两触摸点上一时刻之间得距离x11 getPrevIoUsLocation().x -getPrevIoUsLocation().x;    y11 getPrevIoUsLocation().y - getPrevIoUsLocation().y;    prevdistance x11y11y11),94)">//cc.pdistance(touches[0].getPrevIoUsLocation(),touches[1].getPrevIoUsLocation());//Math.sqrt(x11*x11+y11*y11);//touches[0].getPrevIoUsLocation().distance(touches[1].getPrevIoUsLocation());两触摸点与原点的差向量,pointVec1pointVec2是相对于bgSprite的位置pointVec1 = cc.p(point1.xe.getCurrentTarget().bgOrigin.x,point1.ygetCurrentTarget().bgOrigin.y);//cc.pSub(point1,e.getCurrentTarget().bgOrigin);    pointVec2 point2.xpoint2.y//cc.pSub(point2,94); Font-family:'宋体'">两触摸点的相对中点relMIDx = (pointVec1.x + pointVec2.x) / 2 ;    relMIDy pointVec1.y pointVec2.y) 2 ;    计算的锚点anchorX / getCurrentTarget().bgSprite.getBoundingBox().wIDth;    anchorY getBoundingBox().height;    相对屏幕的中点absMIDx point2.x point1.x) absMIDy point2.y point1.y) 缩放时,为了避免出现空白的区域,需要做以下的边界处理。    快要进入到屏幕时,修改的位置(既absMIDxabsMIDy)。if(  getCurrentTarget().bgOrigin.x 0)    {        -= getCurrentTarget().bgOrigin.x;    }    if( getCurrentTarget().x < -getBoundingBox().wIDth winSize.wIDth )    {        +=  -winSize.wIDth getCurrentTarget().bgOrigin.y 0 )    {        getCurrentTarget().bgOrigin.y;    }    getBoundingBox().height winSize.height )    {        winSize.height getCurrentTarget().bgOrigin.y;    }    重设锚点和位置    setAnchorPoint(cc.anchorX,162)">anchorY));    setposition(cc.absMIDx,162)">absMIDy));    根据两触摸点前后的距离计算缩放倍率scale getScale() * ( / prevdistance);    cc.log("sacel ==== "scale);    控制缩放倍率在14倍之间,最小倍率不能太小,不让背景将不能填充满整个屏幕。    min(4,Math.max(1,162)">scale));    setScale(更新原点位置pt1 absMIDy);    pt2 p(* anchorY) ;    //e.getCurrentTarget().bgOrigin = cc.p(absMIDx,absMIDy) - cc.p(e.getCurrentTarget().bgSprite.getBoundingBox().wIDth * anchorX,e.getCurrentTarget().bgSprite.getBoundingBox().height * anchorY) ;    getCurrentTarget().bgOrigin pt1.x-pt2.x,162)">pt1.ypt2.y);//cc.p(absMIDx,e.getCurrentTarget().bgSprite.getBoundingBox().height * anchorY) ;}else if(== 单点进行移动{    单点时,touches中只有一个touch对象,所以通过touches[0]就可以得到触摸对象touch 0];    计算滑动过程中的滑动增量diff touch.getDelta();    得到当前currentPos getposition();    得到滑动后应该所在的位置pos pAdd(currentPos,162)">diff);    得到此刻的尺寸bgSpriteCurrSize getBoundingBox();    //边界控制,约束pospos.x min(pos.x,162)">bgSpriteCurrSize.wIDth * getAnchorPoint().x);    max(pos.y pos.y,162)">bgSpriteCurrSize.height getAnchorPoint().y);    getAnchorPoint().y);    位置setposition(pos);    //if( pos.x >= bgSpriteCurrSize.wIDth * e.getCurrentTarget().bgSprite.getAnchorPoint().x    //    || pos.x <= -bgSpriteCurrSize.wIDth + winSize.wIDth + bgSpriteCurrSize.wIDth * e.getCurrentTarget().bgSprite.getAnchorPoint().x)    //{    //    diff.x = 0;    //}    //if( pos.y >= bgSpriteCurrSize.height * e.getCurrentTarget().bgSprite.getAnchorPoint().y    //    || pos.y <= -bgSpriteCurrSize.height + winSize.height + bgSpriteCurrSize.height * e.getCurrentTarget().bgSprite.getAnchorPoint().y)    //    diff.y = 0;    //e.getCurrentTarget().bgOrigin += diff;off pSub(pos,162)">currentPos);    //e.getCurrentTarget().bgOrigin += off;pAdd(cc.getCurrentTarget().bgOrigin.y),162)">off);}
总结

以上是内存溢出为你收集整理的cocos2d-js 实现双指缩放地图效果单点移动效果全部内容,希望文章能够帮你解决cocos2d-js 实现双指缩放地图效果 和 单点移动效果所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1050226.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存