忍者ブログ

ひつ(じのひよこが)プログラミングします。
お仕事や趣味で困ったこととか、何度も「あれ?どうだったかしら」と調べたりしたこととか、作ったものとか、こどものこととかを書きます
★前は週末定期更新でしたが今は不定期更新です

2024/11    10« 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  »12

jquery.pep.js でマス目にコマを吸着させる処理を行う

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

ただいまコメントを受けつけておりません。

jquery.pep.js でマス目にコマを吸着させる処理を行う

Drag & Drop は思ってたより難しかった

スマートフォンから Drag & Drop をちゃんと使えるウェブアプリケーションをを作りたかったのだが、色々やってもうまくいかなかった。が、この jquery.pep.js だとうまくいったので紹介。

jquery.pep.js のライセンスとかの情報

Copyright © Brian Gonzalez
Pep is licensed under the https://opensource.org/licenses/MIT

とりあえず試す

gihub リポジトリからコードを入手し、 src ディレクトリ内の jquery.pep.js を使う。

<div id="pep-js-try" style="width:20px;height:20px;background-color:red;"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
<script src="lib/jquery.pep.js" type="text/javascript"></script>
<script src="callPep.js" type="text/javascript"></script>
// callPep.js
$('#pep-js-try').pep();

内部の座標管理

内部の座標処理を調べた。どうも CSS の transform プロパティを使って実現しているようだ。そのため、例えば次のようにすると将棋のようなマス目にそってコマを動かすインタフェースのゲームを作るときに便利かもしれない。

function normalizePosition($pepedElement) {
  var blockSize = 32; // 例えば 1辺 30px+border 1px のマス目
  $pepedElement.pep({
    // stop を使うとドロップした際に発生するイベントを設定できる。
    // 他にもプロパティがあるので詳細は https://github.com/briangonzalez/jquery.pep.js#usage
    stop: function(event, object) {
      var $elem = this.$el; // this.$el にドラッグアンドドロップ対象のオブジェクトが格納されている
      var position = $elem.position(); // 親要素からの相対位置取得
      // 何番目のマスにいるのか計算
      var coordinateX = Math.floor((position.left + (blockSize / 2)) / blockSize);
      var coordinateY = Math.floor((position.top  + (blockSize / 2)) / blockSize);

      var normalizedX = (coordinateX * blockSize) - Number($elem.css("left").replace("px", ""));
      var normalizedY = (coordinateY * blockSize) - Number($elem.css("top").replace("px", ""));
      $elem.css("transform", "matrix(1, 0, 0, 1," + normalizedX + "," + normalizedY +")");
    }
  });
}

こんな感じのコードを実際に過去に作ったアプリケーションで使っている。
http://sy17.sakura.ne.jp/shunshun/tofChatProto.html

関係するページ

PR

コメント

ただいまコメントを受けつけておりません。

ブログ内検索

P R