2017-08-25 6 views
1

私はSwiftにさまざまなシーンがあります。各シーンは、いくつかのオブジェクトを短時間アニメーション化します。これらのオブジェクトは異種で、すべて独自の方法でアニメートされます。Swiftでアニメーションを整理する

問題は、シーンごとに異なるSKActionを管理する行と行のコードが追加されたことです。この種のコードを細かくしたり、コードを再構成して1つの場所に配置したり、どこからでも引き出したりする方法はありますか?

私の考えの1つは、アニメーションノードのすべてをAnimatedNodeのような特定のクラスにして、そこにすべてのアニメーションを入れることです。別々の機能として。これにより、scene.swiftファイルからコードが効果的に削除されます。これは私ができる最善の策ですか、それとも私には見えない他のアプローチがありますか?

EDIT:私のアニメーションコードはあらゆるシーン全体で100の+の行を実行しますが、アニメーションはそのようなノード上で実行される方法の一例として、これはそれがどのように見えるかです:

// can 
     let can = bgNode.childNode(withName: "can") 
     let tip = SKAction.rotate(byAngle: CGFloat(GLKMathDegreesToRadians(10)), duration: 0.5) 
     let tipSound = SKAction.playSoundFileNamed("pot", waitForCompletion: false) 
     can?.run(SKAction.sequence([tip, tipSound, tip.reversed()])) 
+0

「ミニ化」するコードを表示してください。 –

+0

コードを小さくしないでください。しかし、アニメーションルーチンを '拡張子'に入れることができます。コードを論理的に整理しておくだけでなく、コードの他の部分に集中しているときにその拡張を "崩壊"させることができます。または、別のクラスに入れることができます(特に再利用がある場合)。私は、いくつかのサンプルルーチンを見て、それらの関数で何を提案しているのかを見なければならないと思います。 – Rob

+0

上記の情報を追加しました。 – illuminatedtype

答えて

0

SKActionsがあることを意味していました再使用されるか、または少なくとも予め装填される。あなたのアイデアは良いです。何度も同じコードでシーンを乱雑にすると、デザインが貧弱になるからです。

実行する各アクションのプロパティがプロパティとして事前にロードされているActionManagerを作成できます。これは、特に複数回使用している場合は、ゲームのパフォーマンスが向上します。

これを行うには複数の方法がありますが、単純な関数(プロパティと同じではありませんが)は、少なくともあなたのコードを整理する良い方法です。

+0

ありがとうございます。 ActionManagerでは、ゲームシーンファイルに取り込まれるさまざまな機能を持つ別のクラスまたはライブラリを意味しますか? – illuminatedtype

+0

"ActionManager"は実際には不要です。単純な拡張クラスであれば、SKActionsの実装方法の全体的な振る舞いに沿うだけで十分です。 – Knight0fDragon

+0

@ Knight0fDragonこれがどのように行われるかの例を教えてください。私は何を伸ばすのですか? – illuminatedtype

関連する問題