具体的には、下記のようなソースコードでは、
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> <script type="text/javascript" src="jquery.js"></script> <script src="processing-1.4.1.js" type="text/javascript"></script> <script type="text/processing" data-processing-target="mycanvas"> void setup() { size(200, 200); colorMode(RGB, 100); noLoop(); } void draw() { fill(90); ellipse(70, 70, 100, 100); } void addEllipse() { fill(60); ellipse(90, 90, 70, 70); } </script> <script type="text/javascript"> $(document).ready(function(){ var p= Processing.getInstanceById("mycanvas"); p.addEllipse(); }) </script> </head> <body> <p> <canvas id="mycanvas"></canvas> </p> </body> </html>次のようなエラーメッセ―ジが表示されてしまう。
$(document).ready イベントでは、画面上のオブジェクトの読み込みがすべて完了した時点ではなく、画面上のDOM(Document Object Model)の読み込みが完了した時点、つまり、HTMLのソースコードの読み込みが完了した時点となる。
このタイミングでは、Processingの画面描画が完了していないので、Processingの関数を呼ぼうとしても、エラーになってしまうようだ。
$(document).ready の代わりに、$(window).load を使ったらうまくいった。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> <script type="text/javascript" src="jquery.js"></script> <script src="processing-1.4.1.js" type="text/javascript"></script> <script type="text/processing" data-processing-target="mycanvas"> void setup() { size(200, 200); colorMode(RGB, 100); noLoop(); } void draw() { fill(90); ellipse(70, 70, 100, 100); } void addEllipse() { fill(60); ellipse(90, 90, 70, 70); } </script> <script type="text/javascript"> $(window).load(function(){ var p= Processing.getInstanceById("mycanvas"); p.addEllipse(); }) </script> </head> <body> <p> <canvas id="mycanvas"></canvas> </p> </body> </html>
0 件のコメント:
コメントを投稿