7

Apples SpriteKit フレームワークを使用して、A(100,50) から B(250,450) までの線を引きたいと思います。

これまでのところ、 a を使用してこの線を描画しSKShapeNode、パス プロパティを設定することができました。

私が達成したいのは、この線をアニメーションで描くことです。点 A から点 B まで線を引くのに 2 秒かかるとしましょう。

クラスを調べましたSKActionが、デフォルトでこの機能をサポートするメソッドはないようです。

これは、行を作成するために使用するコードです:

CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, 100, 50);
CGPathAddLineToPoint(path, NULL, 250.0, 450.0);

SKShapeNode *line = [SKShapeNode node];
line.path = path;
[line setStrokeColor:[UIColor whiteColor]];
[self addChild:line];

誰かが私を正しい方向に向けることができますか?

4

1 に答える 1

4

あなたが望むものを達成する可能性が高いSKActionのいくつかのメソッドがあります:

SKAction performSelector: onTarget:

SKAction waitForDuration:

SKShapeNode をサブクラス化すると、これら 2 つのメソッドを使用しSKAction sequenceて時間の経過とともに線を描画できます。

もちろん、各反復で描画する新しい位置を手動で計算し、線が完成しているかどうかを判断し、時間をかけて描画プロセスを終了する必要があります。

SpriteKit を介してこの機能を実現する別の方法があるかどうかは間違いなく興味がありますが、そうでない場合はこれでうまくいくはずです。

申し訳ありませんが、これをコーディングする時間はありませんが、ロジックによって目的が達成されるはずです。

アップデート :

個人的にはもう少し簡単だと思う別のオプションを考えました。

  1. 始点と終点の間の角度を計算します。
  2. 始点と終点からの距離を計算します。
  3. 円またはピクセルの形状ノードを作成します。これは、描画に使用する鉛筆のポイントと考えてください。
  4. 計算した角度を使用して、形状ノードを回転させて、終点に向かって角度を付けます。
  5. 計算した距離に基づいてシェイプ ノードの幅をスケーリングする SKAction を作成します。
  6. SKAction を実行します。

これは比較的簡単に思えますが、色パラメータを追加するなど、より柔軟にしたい場合はサブクラス化できます。

于 2013-11-01T01:55:28.097 に答える