info

多分フロントエンドエンジニア寄りのフリーランスWeb制作者のサイトです。

他バンドでギター弾いたり、max/msp触ったり等もしております。
最近はチャリ買ってはしゃいでます。
あと犬が飼いたい。

どうぞお気軽にご連絡いただけまししたら幸いです。

works

  • > toyota
  • > glico
  • > bandainamco
  • > shiseido
  • > pioner
  • > mitsui
  • > yodobashi
  • > panasonic
  • > square enix
  • etc..

※詳細をご希望の方はお手数ですが

contactよりご連絡お願いします。

links

リンクです。増えるといいな

contact

ご依頼/ご相談は下記よりお問い合わせください。
その他ご質問等ありましたらお気軽にご連絡ください。

androidでongesturechangeとe.scale

スマホのピンチイン/ピンチアウトで処理行う場合iosはongesturechangeでe.scaleってプロパティがデフォルトでありますが
androidの場合ongesturechangeもスケール値も自前で実装する必要がある様子。

一部抜粋で状況で調整必要ですが、基本的にtouchstart時touchmove(gesturechange)時の二本の指の距離をとって下記の感じでe.scale同様の数値とれると思います。

class Point
  constructor: (x = 0,y = 0) ->
    @x = x || 0;
    @y = y || 0;

  distance:(p1,p2)=>
    a = p1.x - p2.x;
    b = p1.y - p2.y;
    return Math.sqrt(Math.pow(a,2)+Math.pow(b,2));
    // 3平方の定理で距離計算
// ポイントクラス

~~~~~~~~~
disSt = ''; //タッチスタート時の距離
disMv = '' //タッチムーブ中の距離

onTouchStart: (e) ->
    e = e.originalEvent
    touches = e.touches
    pitchStartPos[0].x = touches[0].clientX
    pitchStartPos[0].y = touches[0].clientY
    pitchStartPos[1].x = touches[1].clientX
    pitchStartPos[1].y = touches[1].clientY

    disSt = new Point().distance(pitchStartPos[0],pitchStartPos[1]);

onGestureChange: (e)->
    e = e.originalEvent
    touches = e.touches
    pitchCurrentPos[0].x = touches[0].clientX
    pitchCurrentPos[0].y = touches[0].clientY
    pitchCurrentPos[1].x = touches[1].clientX
    pitchCurrentPos[1].y = touches[1].clientY

    disMv = new Point().distance(pitchCurrentPos[0],pitchCurrentPos[1]);
    scale = disMv / disSt;
    //スケール値計算

広告なのよー