2016-04-20 2 views
0

私はこのようなキャンバスの四角形を持っています:draw.fillRect(sq); 、それ以前にはsq = "400, 400, 0, 0";です。コンソールには、JsキャンバスのfillRect()座標が変数として機能しない

"CanvasRenderingContext2D.fillRectの引数が不十分です"と表示されます。

sqを1つの引数として扱うためです。これを避ける方法はありますか? 1つの変数に4つの引数をすべて格納するには?

ありがとうございます。

答えて

0

あなたは正しいです、あなたのsqは単一の文字列であり、そのために単一の変数として扱われます。代わりのような配列を使用するようにしてください:

var sq = [400, 400, 0, 0]; 

そして

draw.fillRect.apply(draw, sq); 

applysqに渡された引数を使用して関数を呼び出します。さらに については、MDNのDocumentation for Function.prototype.applyをご覧ください。


注:あなたがwidth = heigth = 0x = y = 400で四角形を描画しようとしています。だからあなたは長方形のサイズが0であることをとても気にしません。あなたはあなたのパラメータを変更したいかもしれません。 documentation of the .fillRect()メソッドを見てください。

0

あなたの前提は正しく、「fillRect」には4つの引数が必要です。

ここに1つの変数に保存する方法についての提案:ところで

draw.fillRect(rectData.x,rectData.y, rectData.width, rectData.height); 

Var rectData = { 
"x": 400, 
"y": 400, 
"width": 0, 
"height": 0 
}; 

そして、それはそのように使うよりも0の幅/高さを使用して、おそらくされあなたが望むものではありません。どの矩形も表示されません:)まず、コードスニペットをテストします。 Mozilla Developer Networkにあります。

'apply'ソリューションと比較すると、オブジェクトリテラルを使用するとコードが読みやすくなり、デバッグが簡単になります。

+0

固定。私はJSのMDNをquess私はJSをプログラミングしていた時は存在しませんでした。しかし、私は含意を好まないと言ってはいけませんが、URLの名前は「w3fools」です。 w3schoolsは初心者のために作られているので、長期的にはMDNがより良い選択であると言えば十分です。 – Alex

+0

私はあなたに同意します。私は、W3Schoolが過去数年間でより良くなったと思います(MDNと同じように)。とにかく1つは常にいくつかのソースをチェックする必要があります:) – Fidel90

関連する問題