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

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

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

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

Q&A

0回答

1816閲覧

matter.js 特定要素の削除

cheche0830

総合スコア187

JavaScript

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

0グッド

0クリップ

投稿2016/09/02 02:01

###前提・実現したいこと
matter.jsで特定の要素を削除したいのですが、うまくいきません。個別にWorldに追加したground1,2などは
現状のコードのようにドラッグを開始すると
削除できるのですが、(床が抜ける)stackの方の特定の要素を
削除する場合はどうしたらよいでしょうか?

とりあえず、ドラッグした物体を(this.body)を
削除したいです。

###該当のソースコード

<!doctype html> <html> <head> <meta charset="utf-8"> <title>無題ドキュメント</title> </head> <body> <main id="stage"></main> <script src="../matter.js" type="text/javascript"></script> <script> (function() { var Engine = Matter.Engine, Events = Matter.Events; Common = Matter.Common; World = Matter.World, Mouse = Matter.Mouse, MouseConstraint = Matter.MouseConstraint, Bodies = Matter.Bodies Composites = Matter.Composites; // Matter.js エンジン作成 var engine = Engine.create(document.getElementById("stage")); var world = engine.world; var stack = Composites.stack(20, 20, 15, 4, 0, 0, function(x, y) { var sides = Math.round(Common.random(1, 8)); // triangles can be a little unstable, so avoid until fixed sides = (sides === 3) ? 4 : sides; // round the edges of some bodies var chamfer = null; if (sides > 2 && Common.random() > 0.7) { chamfer = { radius: 10 }; } switch (Math.round(Common.random(0, 1))) { case 0: if (Common.random() < 0.8) { return Bodies.rectangle(x, y, Common.random(25, 50), Common.random(25, 50), { chamfer: chamfer }); } else { return Bodies.rectangle(x, y, Common.random(80, 120), Common.random(25, 30), { chamfer: chamfer }); } break; case 1: return Bodies.polygon(x, y, sides, Common.random(25, 50), { chamfer: chamfer }); } }); World.add(world, stack); // マウスドラッグ追加 var mousedrag = MouseConstraint.create(engine); World.add(engine.world, mousedrag); Events.on(mousedrag, "startdrag", function(e) { World.remove(engine.world, ground1);//削除 }); // 地面固定 var ground1 = Bodies.rectangle(400, 600, 800, 10, { isStatic: true }); var ground2 = Bodies.rectangle(0, 300, 10, 600, { isStatic: true }); var ground3 = Bodies.rectangle(800, 300, 10, 600, { isStatic: true }); World.add(engine.world, [ground1, ground2, ground3]); Engine.run(engine); })(); </script> </body> </html>

###試したこと

World.remove(engine.world, this.body);//削除

World.remove(engine.world, stack.bodies[1]);//削除

など、stack内の物体の特定はできてるので、
指定していろいろ入れてはいるのですが・・・

ご教授のほどよろしくお願いいたします。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問