0

私は、ボディが中心点を周回する processing.js デモに取り組んでいます。s更新ごとにキーが押されているかどうかをチェックする入力用のリスナーを追加しようとしています。

例はjsfiddleにあります。

基本的に、キーの押下をリッスンするコードを update() メソッドに配置しました。

 void update()
    {
        //detect input
        if(keyPressed)
        {
            debugger; //debug

            if(key == 's' || key == 'S')
            {
                //shrink orbit
                ShrinkOrbit(planets,.9);
            }

        }    
    }

メソッドを呼び出すShrinkOrbit(ArrayList <OrbitingBody> orbs, float reductionFactor)もの:

/*
* Reduces size of orbit for specified group of orbiting bodies
*/
void ShrinkOrbit(ArrayList<OrbitalBody> orbs, float reductionFactor)
{   
    for(OrbitalBody b:orbs)
    {
        b.x *= reductionFactor;
        b.y *= reductionFactor
    }
}

ただし、現在、デバッグ ブレークポイントがトリガーされないだけでなく、Chrome 開発者ツールでいくつかのエラーが表示されます。

Uncaught SyntaxError: Unexpected reserved word 
Uncaught TypeError: Cannot read property 'reason' of null Actions.js:333
(anonymous function) Actions.js:333
(anonymous function) moo-clientcide-1.3.js:212
Array.implement.each moo-clientcide-1.3.js:329
(anonymous function) moo-clientcide-1.3.js:212
Class.JSLintValidate Actions.js:330
wrapper.extend.$owner moo-clientcide-1.3.js:3798
Class.jsLint Actions.js:277
wrapper.extend.$owner moo-clientcide-1.3.js:3798
(anonymous function) moo-clientcide-1.3.js:1027
defn

update()それがグローバルなメソッドであり、それに相当するものsetupを任意のスケッチで呼び出すことができると仮定するのは間違っていましたか? 別の機能している jsFiddle でそのように使用されているのを見たことがあり、そこから結論を導き出しました。それが助けになるなら、私はProcessing.js 1.4.1をターゲットにしています。

4

1 に答える 1

1

そうしないでください。1)updateは実際にはグローバル関数ではなく、取得するのはProcessing API関数だけです。2つの主要な呼び出しは、開始時に1回呼び出されるsetup()と、すべてのフレームで呼び出されるdraw()です(noLoopを発行した場合を除く)。 ()、その後、redraw()を手動で呼び出した場合にのみ実行され、2)イベントハンドラーを使用します。これが目的です=)

boolean reduce = false;

void keyPressed() {
  if(str(key).equals("s")) reduce = true;
}

void keyReleased() {
  if(str(key).equals("s")) reduce = false;
}

void draw() {
  if(reduce) { doWhateverYouNeedToDo(); }
  drawStuff();
}
于 2013-03-16T02:19:34.210 に答える