p5.jsとProcessingは大体似てるんですが、ちょっとだけ違いがあります。
size()
はcreateCanvas()
。frameRate(num)
でフレームレートは設定できるけど、frameRate
という変数は無くなりました。代わりにframeRate()
を引数なしで使ってください。- Javascriptは常に同期してものを読み込みません。(読み込みを始めた時点で次の動作に移る、すなわちその行で読み込む命令を書いたとしても、次の行の実行時で読み込まれているとは限らない)いくつか対策が設けてあるので利用できます。
- すべてのロードメソッドはコールバック関数をオプションで引数に取ります。これは、そのファイルが読み込まれた時に呼ばれます。
setup()
が呼ばれる前にpreload()
が呼ばれるので、それを使ってしまうのも手です。preloadメソッドがある場合、setupメソッドはpreload内で指定したファイルのすべてがロードされるまで呼ばれません。詳しくはimage exampleを見てください。
mousePressed
変数はisMousePressed
変数になりました。- マウスイベントに加えて、タッチイベントも取れるようになっています。対応はこんな感じです。
mouseX
~touchX
mouseY
~touchY
mousePressed()
~touchStarted()
mouseDragged()
~touchMoved()
mouseReleased()
~touchEnded()
- 複数の指がタッチされている場合には、
touches[]
にタッチしている点が入っています。
push/popMatrix()
とpush/popStyle()
はそれぞれpush()
とpop()
にまとまりました。- defaultでは、すべてがグローバルのネームスペースに置かれるので、Processingと同じように書くことができます。グローバルな関数として書きたくない場合は、"instance mode"というモードも用意してあるので、こちらを使ってください。Exampleはこちら。
- Processingでできることのすべてがp5.jsで実装されていませんが、それに取り組んでいるところです。現在は3DやPShape, PFontなどが使えません。詳しくはリファレンスを参照してください。
JSが同期して読み込まない件について補足: https://twitter.com/mactkg/status/497056521537064960