這篇文章主要介紹微信小程序中怎么制作圖片拖拽功能,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
在壺關(guān)等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站制作、成都做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作按需定制制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),營銷型網(wǎng)站建設(shè),外貿(mào)網(wǎng)站建設(shè),壺關(guān)網(wǎng)站建設(shè)費(fèi)用合理。1.編寫頁面結(jié)構(gòu):moveimg.wxml
<view class="container" style="height:{{screenHeight}}px;" > <view class="cnt"> <image class="image-style" src="../uploads/2.jpg" style="width: {{imgwidth}}px;height:{{imgheight}}px;"bindtouchstart="startEvent" bindtouchmove="moveEvent"bindload="imageLoad"animation=" {{animationData}}"bindtouchend="endEvent"> </image> </view> </view>
2.編寫頁面樣式:moveimg.wxss
.container { box-sizing:border-box; padding:1rem; } .cnt{ width:100%; height:70%; border: 1px solid #ccc; position:relative; overflow: hidden; z-index:9999; } .image-style{ -webkit-transform:translate(-38px,0px); }
3.設(shè)置數(shù)據(jù):moveimg.js
var app = getApp() Page({ data: { imgwidth:0, imgheight:0, animationData: {}, movex:0, movey:0, x:0, y:0, }, onLoad: function() { // 頁面初始化 options為頁面跳轉(zhuǎn)所帶來的參數(shù) var _this = this; wx.getSystemInfo({ success: function(res) { _this.setData({ screenHeight: res.windowHeight, screenWidth: res.windowWidth, }); } }); }, onReady:function(){ // 頁面渲染完成 //實(shí)例化一個(gè)動(dòng)畫 this.animation = wx.createAnimation({ duration: 1000, timingFunction: 'linear',//均勻 transformOrigin: "left top 0px", }) }, imageLoad: function(e) { var _this=this; //1.框的寬高 var cnt_offetw=_this.data.screenWidth-38, cnt_offeth=(_this.data.screenHeight-38)*0.7; //2.獲取圖片真實(shí)寬度 var $width=e.detail.width, //獲取圖片真實(shí)寬度 $height=e.detail.height, ratio=$width/$height; //圖片的真實(shí)寬高比例 //3.進(jìn)行判斷:當(dāng)圖片小于框時(shí)候,圖片大小等于框大小,當(dāng)大于框的時(shí)候,則成比例呈現(xiàn) var viewWidth=_this.data.screenWidth; //設(shè)置圖片固定寬度值, var viewHeight=parseInt(viewWidth/ratio); //計(jì)算的高度值 if (viewHeight< cnt_offeth) { viewHeight=cnt_offeth; } _this.setData({ imgwidth:viewWidth, imgheight:viewHeight, cnt_boxw:cnt_offetw, cnt_boxh:cnt_offeth, }) }, startEvent:function(e){ //1.獲取鼠標(biāo)點(diǎn)擊下去的 this.setData({ startx: e.touches[0].pageX, starty: e.touches[0].pageY }) }, moveEvent: function(e) { var _this=this; //2.鼠標(biāo)移動(dòng)的位置 var pageX = e.touches[0].pageX; var pageY = e.touches[0].pageY; var x,y; //3.記住初始化圖片x,y var endx=_this.data.x,endy=_this.data.y; //4.判斷 var w_x=_this.data.imgwidth-_this.data.cnt_boxw;//x拖拽值:圖片寬-框的寬 var h_y=parseInt(_this.data.imgheight-_this.data.cnt_boxh);//y拖拽值:圖片高-框高 var DistanceX = pageX - _this.data.startx;//x:當(dāng)鼠標(biāo)點(diǎn)擊到移動(dòng)的點(diǎn)之間的距離 var DistanceY =pageY - _this.data.starty;//y:當(dāng)鼠標(biāo)點(diǎn)擊到移動(dòng)的點(diǎn)之間的距離 if (DistanceX>0){ //往右移動(dòng) 如果當(dāng)前的值大于等于0時(shí)則不移動(dòng),否則當(dāng)前值加上鼠標(biāo)拖拽的距離 if (endx >= 0) { x = 0; } else { x = endx + DistanceX; } }else{ //往左移動(dòng):x拖拽值大于等于當(dāng)前的值,說明已經(jīng)到邊上了,就等于拖拽值,否則當(dāng)前的值加上鼠標(biāo)拖拽的距離 if (w_x >= endx) { x = -w_x; } else { x = endx + DistanceX; } } if (DistanceY>0){ //往下移動(dòng):如果當(dāng)前的值大于等于0時(shí)則不移動(dòng),否則當(dāng)前值加上鼠標(biāo)拖拽的距離 if(endy>=0){ y =0; }else{ y = endy + DistanceY; } }else{ //往上移動(dòng):y拖拽值大于等于當(dāng)前的值,說明已經(jīng)到邊上了,就等于拖拽值,否則當(dāng)前的值加上鼠標(biāo)拖拽的距離 if(-endy==h_y||-endy>h_y){ y=-h_y; console.log("da0") }else{ y=endy+DistanceY; console.log("da 1") } } setTimeout(function() { _this.animation.translate(x, y).step(); _this.setData({ animationData: this.animation.export() }) }.bind(this), 0) _this.setData({ x:x, y:y, }) endx=x;endy=y;//記住這次的圖片移動(dòng)的范圍 _this.data.startx=pageX;_this.data.starty=pageY;// 每移動(dòng)一次把上一次的點(diǎn)作為原點(diǎn) }, endEvent:function(){ clearTimeout(function(){ this.animation.translate(this.data.x,this.data.y).step(); this.setData({ animationData: this.animation.export() }) }); } })
由于上次做的這個(gè)有問題,并沒有記錄上一次移動(dòng)的效果。所以這次我使用了洪荒之力,修改下代碼。
以上是“微信小程序中怎么制作圖片拖拽功能”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
網(wǎng)頁標(biāo)題:微信小程序中怎么制作圖片拖拽功能-創(chuàng)新互聯(lián)
本文地址:http://www.rwnh.cn/article38/jcdpp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、ChatGPT、定制開發(fā)、虛擬主機(jī)、自適應(yīng)網(wǎng)站、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容