コード
ページ({ データ:{ タッチ:{ 距離: 0 、 スケール: 1 、 ベース幅:ヌル、 baseHeight:ヌル、 ScaleWidth:ヌル、 ScaleHeightの値:NULL } }、 touchstartCallback:関数(E){ // 、シングルフィンガーズーム開始、無治療しない場合(e.touches.length == 1)のリターンはconsole.log (「 二本指のトリガスタート」) //距離が初期化されるとき、バグの増幅プロセスは、// 2本の指を置く瞬間があるときtouchstartCallbackが本当にコード//最初は、私はこのコールバックをしませんでしたし始めた注意してください、そこに削減されます。= xMove e.touches LETの.clientX - e.touches [0] .clientX [1]; せyMove e.touches = .clientY - e.touches [0 [1] ] .clientY; LET距離 = Math.sqrt(xMove xMove yMove * + * yMove); この.setData({ 'touch.distance' :距離、 }) }、 touchmoveCallback:機能(E){ letのタッチ = この.data.touch // 我々は何もしない1本指ズーム(e.touches.length == 1)リターンはconsole.log場合 ( ' 2本の指の動き') [1] - e.touches [0 LETはxMove = .clientXをe.touches] .clientX; せyMove = e.touches [1] .clientY - e.touches [0。] .clientY; // 新しい距離= Math.sqrtのlet ditance(+ yMove xMove xMove * * yMove); せdistanceDiff距離= - touch.distance; LET newScale社 = + 0.005 * touch.scale distanceDiff // 大きすぎる規模を防止するために、最小値は同じトークンである規模を制限する必要がある場合(newScale社> = 2){ newScale社= 2 } IF(newScale株式会社< 0.6 = ){ newScale社 = 0.6 } せScaleWidth = newScale社* touch.baseWidth LETのScaleHeightの値 = newScale社*touch.baseHeight // 代入新しい=>古いthis.setData({ 'touch.distance' :距離、 'touch.scale' :newScale株式会社、 'touch.scaleWidth' :ScaleWidth、 'touch.scaleHeight' :ScaleHeightの値、 " touch.diff ' :distanceDiff }) } :bindload 関数(E){ //はthis.setDataのAPIのAPIである<画像>アセンブリ類似<IMG>のonload属性({bindload touch.baseWidth'' e.detailました: .width、 'touch.baseHeight' :e.detail.height、 'touch.scaleWidth':e.detail.width、 'touch.scaleHeight' :e.detail.height }) } })
次のようにWXMLコードがあります
< ビュークラス= "コンテナ" > < ビューbindtouchmove = "touchmoveCallback" bindtouchstart = "touchstartCallback" > < 画像SRC = "../../リソース/ PIC /はcat.jpg" スタイル= "幅:{{touch.scaleWidth }} PX;高さ:{{touch.scaleHeight}} PX」bindload = "bindload" > </ 画像> </ ビュー> </ ビュー>