質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

2842閲覧

matter.jsのマウスドラッグ機能を機能させないようにしたい

matilda007

総合スコア12

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2017/09/20 14:24

matter.jsを使って物理演算のテストをしています。
worldに四角いBodiesを追加し、それをクリックしたら、Bodiesのlabelをみて、ログを出すようにしています。
やりたいこととしては、

##ドラッグ機能を機能させないこと
##スクロール機能を機能させること

です。

Events.on(---, "mousedown", (e) => {}

マウスダウンにすると、Bodiesのラベルを参照することはできません。
Bodiesを参照できるのはstartdragだけのようです…
ご教示のほど、よろしくお願いします。。

module() { const Engine = Matter.Engine; const Render = Matter.Render; const Runner = Matter.Runner; const Body = Matter.Body; const World = Matter.World; const Bodies = Matter.Bodies; const Common = Matter.Common; const Events = Matter.Events; const Mouse = Matter.Mouse; const MouseConstraint = Matter.MouseConstraint; const engine = Engine.create(); const world = engine.world; const runner = Runner.create(); const render = Render.create({ element: this.element, canvas: this.view, engine: engine, options: { width: this.canvasWidth, height: this.canvasHeight, pixelRation: 1, background: '#000000', hasBouse: false, wireframes: true } }); Render.run(render); Runner.run(runner, engine); engine.world.gravity.y = 2; //重力を0に設定 デフォルトは1 //落ちてくる要素 const facebook = Bodies.rectangle(this.canvasWidth / 2, 200, 200, 200, { chamfer: { radius: 5 //角丸 }, density: 5, frictionAir: 0.001, //空気抵抗 restitution: 0.3, // 弾力性 friction: 8, // 摩擦 label: 'facebook', angle: Math.random() * 10, }); World.add(world, facebook); var startdrag = MouseConstraint.create(engine, { element: this.element, }); World.add(world, startdrag); Events.on(startdrag, "startdrag", (e) => { console.log(e); if(e.body.label == "facebook") { console.log('俺がfacebookだ'); } }); //壁 const wall = [ Bodies.rectangle(this.canvasWidth / 2, -25, this.canvasWidth, 50, {isStatic: true}), Bodies.rectangle(this.canvasWidth / 2, this.canvasHeight + 25, this.canvasWidth, 50, {isStatic: true}), Bodies.rectangle(-25, this.canvasHeight / 2, 50, this.canvasHeight, {isStatic: true}), Bodies.rectangle(this.canvasWidth + 25, this.canvasHeight / 2, 50, this.canvasHeight, {isStatic: true}) ]; World.add(world, wall); Render.lookAt(render, { min: { x: 0, y: 0 }, max: { x: this.canvasWidth, y: this.canvasHeight } }); return { engine: engine, runner: runner, render: render, canvas: this.view, stop: function() { Matter.Render.stop(render); Matter.Runner.stop(runner); } } } };

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

const mouse = Mouse.create(this.element);
this.element.addEventListener('click', () => {
const query = Query.point(Composite.allBodies(world), mouse.position)
console.log(mouse.position);
console.log(query);
});

投稿2017/09/22 01:54

matilda007

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問