Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?

Processingとp5.js

おおまかな違い

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などが使えません。詳しくはリファレンスを参照してください。

JavaScriptのこと

  • 変数は型を持ちません。floatやint、doubleにlong, char, String, 配列にだってなれます。関数に対して、具体的に戻り値の型を書く必要はありません。
  • varは何にだってなれます。さっき話した型だけではなく、関数にだってなれます。
  • Arrayはなんでも詰め込めて、非常にシンプルです(なのでArrayListのようなものは不必要です)。さらにいくつかの内蔵した機能を持っています。ArrayのExampleはこちらで、JSのArrayについてはこちらを参照してください。
@mactkg

This comment has been minimized.

Copy link
Owner Author

mactkg commented Aug 6, 2014

JSが同期して読み込まない件について補足: https://twitter.com/mactkg/status/497056521537064960

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.