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

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

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

HTML5の<canvas>要素用のタグです。CanvasはHTML5から導入された、二次元の図形描写が可能な要素です。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

4308閲覧

上からイメージが落下してきて溜まっていくようなJSを組んだサイト

sasanohasarasar

総合スコア12

canvas

HTML5の<canvas>要素用のタグです。CanvasはHTML5から導入された、二次元の図形描写が可能な要素です。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2017/11/29 06:15

編集2017/11/29 06:41

html5、jQueryを勉強中の初心者です。
とあるサイトの動きが楽しくて、自分のサイトで表現できないかと悪戦苦闘中の為
教えていただけると幸いです・・・。

リンク内容
こちらのサイトを参考にし、上から画像(お菓子)がぽろぽろと降ってきてその後停滞する動きをつけたく、
一旦ソースを見ながらコードを組んでいっているのですが自分のサイトだとお菓子の動きの部分だけが表示されません。
ディペロッパーツールでエラーを吐いている所も確認しましたが、js部分が難しく・・・
どこがどういった理由でエラーになっているのか、何かが足りなくて反映されないのでしょうか・・・。
また、お菓子が降ってこない理由がわかる方何卒お力添えを頂きたく思います。

###発生している問題・エラーメッセージ

Uncaught ReferenceError: Box2D is not defined at physics.js:2 (anonymous) @ physics.js:2

Javascript

1//box2dクラスの短縮変数 2var b2Vec2 = Box2D.Common.Math.b2Vec2, b2AABB = Box2D.Collision.b2AABB, b2BodyDef = Box2D.Dynamics.b2BodyDef, b2Body = Box2D.Dynamics.b2Body, b2FixtureDef = Box2D.Dynamics.b2FixtureDef, b2Fixture = Box2D.Dynamics.b2Fixture, b2World = Box2D.Dynamics.b2World, b2MassData = Box2D.Collision.Shapes.b2MassData, b2PolygonShape = Box2D.Collision.Shapes.b2PolygonShape, b2CircleShape = Box2D.Collision.Shapes.b2CircleShape, b2DebugDraw = Box2D.Dynamics.b2DebugDraw, b2MouseJointDef = Box2D.Dynamics.Joints.b2MouseJointDef; 3 4//クッキーの画像URLと頂点の座標 5var cookieImages = { 6 'logo': { 7 'width': 420, 8 'height': 211, 9 'src': './images/cookies/logo.png', 10 'vertices': [ 11 [0, -106], 12 [160, -71], 13 [211, 0], 14 [122, 83], 15 [0, 106], 16 [-156, 73], 17 [-209, 0], 18 [-155, -73] 19 ] 20 }, 21 'cookies': [ 22 { 23 'width': 83, 24 'height': 48, 25 'src': './images/cookies/01.png', 26 'vertices': [ 27 [42, -11], 28 [31, 17], 29 [-37, 24], 30 [-37, 24], 31 [-41, -12], 32 [0, -24], 33 [26, -21] 34 ] 35 }, 36 { 37 'width': 86, 38 'height': 109, 39 'src': './images/cookies/02.png', 40 'vertices': [ 41 [0, -55], 42 [23, -30], 43 [43, 39], 44 [0, 54], 45 [-42, 44], 46 [-28, 5] 47 ] 48 }, 49 { 50 'width': 79, 51 'height': 55, 52 'src': './images/cookies/03.png', 53 'vertices': [ 54 [32, -24], 55 [37, 23], 56 [-38, 26], 57 [-25, -20], 58 [-7, -25] 59 ] 60 }, 61 { 62 'width': 65, 63 'height': 71, 64 'src': './images/cookies/04.png', 65 'vertices': [ 66 [-6, -34], 67 [29, 10], 68 [32, 29], 69 [3, 36], 70 [-31, 23], 71 [-23, -8] 72 ] 73 }, 74 { 75 'width': 151, 76 'height': 94, 77 'src': './images/cookies/05.png', 78 'vertices': [ 79 [-74, -29], 80 [-17, -46], 81 [48, -17], 82 [74, 37], 83 [-49, 41], 84 [-69, 0] 85 ] 86 }, 87 { 88 'width': 107, 89 'height': 60, 90 'src': './images/cookies/06.png', 91 'vertices': [ 92 [54, -12], 93 [37, 24], 94 [-18, 27], 95 [-52, -6], 96 [7, -29], 97 [31, -25] 98 ] 99 }, 100 { 101 'width': 181, 102 'height': 82, 103 'src': './images/cookies/07.png', 104 'vertices': [ 105 [0, -40], 106 [56, -23], 107 [91, 29], 108 [-27, 41], 109 [-90, 24], 110 [-54, -24] 111 ] 112 } 113 ] 114}; 115 //ロゴを再生成 116 Physics.prototype.recreateLogo = function () { 117 if (this.logoExist) { 118 this.destroyLogo(); 119 this.createLogo(); 120 } 121 }; 122 123 //クッキーを創る 124 Physics.prototype.createCookie = function () { 125 var random = (Math.random() + Math.random()) / 2; 126 var cookieNum = Math.floor(random * (cookieImages['cookies'].length - 0.000001)); 127 var cookie = cookieImages['cookies'][cookieNum]; 128 var canvasWidth = this.canvas.width; 129 var applyForce; 130 if (this.canvas.width < 769) { 131 applyForce = (10 * Math.random()) - 5; 132 } else { 133 applyForce = (30 * Math.random()) - 15; 134 } 135 this.createBody({ type: 'dynamic', x: (canvasWidth * Math.random()), y: -30, width: cookie['width'], height: cookie['height'], angle: 360 * Math.random(), force: [applyForce, 0], image: cookie }); 136 }; 137 //すべてのオブジェクトを消す 138 Physics.prototype.destroyAll = function () { 139 for (var bodyItem = this.world.GetBodyList(); bodyItem; bodyItem = bodyItem.GetNext()) { 140 this.world.DestroyBody(bodyItem); 141 } 142 }; 143 144 //box2dのbodyを生成 145 Physics.prototype.createBody = function (opts) { 146 //オプションのデフォルト値 147 var defaults = { 148 type: 'static', 149 x: 0, 150 y: 0, 151 width: 10, 152 height: 10, 153 angle: 0, 154 restitution: 0.2, 155 friction: 0.7, 156 density: 2.65, 157 force: [0, 0], 158 image: null 159 }; 160 161 //デフォルト値を上書き 162 $.extend(defaults, opts); 163 164 var type; 165 switch (defaults['type']) { 166 case 'static': 167 type = b2Body.b2_staticBody; 168 break; 169 case 'dynamic': 170 type = b2Body.b2_dynamicBody; 171 break; 172 default: 173 type = b2Body.b2_staticBody; 174 break; 175 } 176 var x = this.pixelToMeter(defaults['x']); 177 var y = this.pixelToMeter(defaults['y']); 178 var width = this.pixelToMeter(defaults['width']); 179 var height = this.pixelToMeter(defaults['height']); 180 var angle = this.degreeToRadians(defaults['angle']); 181 var restitution = defaults['restitution']; 182 var friction = defaults['friction']; 183 var density = defaults['density']; 184 var force = defaults['force']; 185 var image = defaults['image']; 186 187 //bodyを生成 188 var body = this.world.CreateBody(bodyDef); 189 body.CreateFixture(fixDef); 190 191 //物体に力を作用させる 192 body.ApplyForce(new b2Vec2(force[0], force[1]), body.GetWorldCenter()); 193 194 return body; 195 }; 196 197 //描く 198 Physics.prototype.draw = function () { 199 for (var bodyItem = this.world.GetBodyList(); bodyItem; bodyItem = bodyItem.GetNext()) { 200 //if ( bodyItem.GetType() == b2Body.b2_dynamicBody ) { 201 var position = bodyItem.GetPosition(); 202 var userData = bodyItem.GetUserData(); 203 204 this.context.save(); 205 if (userData && userData.img && userData.img.complete) { 206 if (userData.shape_type && userData.shape_type == 'circle') { 207 var slideX = position.x * this.worldScale; 208 var slideY = position.y * this.worldScale; 209 210 this.context.translate(slideX, slideY); 211 this.context.rotate(bodyItem.GetAngle()); 212 this.context.drawImage(userData.img, -userData.radius, -userData.radius); 213 } 214 if (userData.shape_type && userData.shape_type == 'box') { 215 var slideX = position.x * this.worldScale; 216 var slideY = position.y * this.worldScale; 217 218 this.context.translate(slideX, slideY); 219 this.context.rotate(bodyItem.GetAngle()); 220 this.context.drawImage(userData.img, -userData.width / 2.0, -userData.height / 2.0, userData.width, userData.height); 221 } 222 } 223 this.context.restore(); 224 //} 225 } 226 }; 227 228 //重力加速度を変える 229 Physics.prototype.setGravity = function (gravity) { 230 if (typeof gravity === "undefined") { gravity = [0, 9.8]; } 231 this.world.SetGravity(new b2Vec2(gravity[0], gravity[1])); 232 }; 233 234 //座標の配列をb2Vec2の配列で出力 235 Physics.prototype.getB2Vec2 = function (array) { 236 var b2Vec2Array = new Array(array.length); 237 for (var i = 0; i < array.length; i++) { 238 b2Vec2Array[i] = new b2Vec2(this.pixelToMeter(array[i][0]) * this.getViewScale(), this.pixelToMeter(array[i][1]) * this.getViewScale()); 239 } 240 return b2Vec2Array; 241 }; 242 243 244

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2017/11/29 06:21

エラーの内容的にphysics.jsファイルの方に原因があるようなので、htmlソースだけでは判断できません。jsファイルも公開していただけますか?
退会済みユーザー

退会済みユーザー

2017/11/29 06:29

えーっと、長くても構わないのでここに貼り付けていただけますか?ソースだけ分割で載せるのはよろしくないです。
退会済みユーザー

退会済みユーザー

2017/11/29 06:31

あと、参考にしているscriptではなく、physics.jsそのものを載せてくれると幸いです。
sasanohasarasar

2017/11/29 06:42 編集

ありがとうございます。途方に暮れていたのでとても心強いです。よろしくお願いいたします。
退会済みユーザー

退会済みユーザー

2017/11/29 06:36

えーっと、質問を編集というボタンがありますよね?そこから直接編集していただけますか?
sasanohasarasar

2017/11/29 06:38

失礼致しました・・・;;サイトの仕様に慣れてなくもうしわけありません。
guest

回答1

0

ベストアンサー

HTMLソースが消えちゃってますが、今後質問する際は該当のソースを全て公開すると良いです。今回で言えばHTMLソースとjsソースですね。

続いて回答なのですが、おそらく質問者さんはこちらのサイトのソースをコピー&ペースして作っていると思われます。まぁ簡単な処理ならそれでもいいんですが、あのサイトははっきりいってコピペでどうになるような代物ではないです。私自身もかなり時間をかけないと作れないでしょうねw なのでまずはここで質問するより知識をつけた方が良いかと思います。

具体的にあのサイトでは何が使われているかというと、Box2Dという物理演算エンジンが使われています。なのでああいったサイトを作りたいのであればその辺を勉強しないといけません。

第28回 物理演算エンジンBox2Dでボールを落とす
http://gihyo.jp/design/serial/01/createjs/0028

例として参考になりそうなサイトを載せておきます。ちなみに今回のエラー自体は、そのBox2D本体のファイルが読み込まれていないのが原因です。

投稿2017/11/29 07:00

編集2017/11/29 07:03
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

sasanohasarasar

2017/11/29 07:17

ありがとうございます。 初心者の自分に何から何まで親身なって頂き、本当に助かりました。 h_3437さん程の方でも時間がかかるとのことで、自分はまだまだ知識不足すぎて難しいですね・・。 しかし、煮詰まってしまっていてどうにもならなかったので一旦は解決方法(?)がわかり良かったです。 物理演算エンジンというものは知っておりましたが、 知っているだけでまったくの無知なため、いちから勉強していきます。 本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問