問題タブ [swift4.1]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
swift - SwiftのflatMapとcompactMapの違い
Swift 4.1 flatMap
では廃止されたようです。しかし、同じことをしているSwift 4.1 の新しいメソッドがありますか? コレクション内の各オブジェクトを変換してから、nil だったアイテムを削除できます
compactMap
。flatMap のようにflatMap
コンパクトマップのように
compactMap
同じことをしています。
これら2つの方法の違いは何ですか? Apple がメソッドの名前を変更したのはなぜですか?
ios - 1 本の指で「タッチ アンド ドラッグ」して SpriteNode を回転させるにはどうすればよいですか
SpriteNode を 1 本の指で「タッチ アンド ドラッグ」して回転させるには、次のようにします。
- ぐるぐるしない
- 円を描くように移動します (この部分は、コードのみのソリューションと SKS ファイルの両方を使用して数回成功しました)
- 意味のある値を生成します (物理的なコントロール ノブのように)
- 指を置いている間は動きますが、指を離すと動きません
私が試したこと:
CGAffineTransform の CGAffineTransformMakeRotationを使用して、SpriteKit のノブを回転させます。しかし、SpriteNode で CGAffineTransformMakeRotation を使用する方法がわかりません。シーン内またはその上に別の種類のオブジェクトを配置することもできますが、それは正しくありません。
たとえば、Matthijs Hollemans の MHRotaryKnob https://github.com/hollance/MHRotaryKnob
です。Hollemans ノブを Objective C から Swift 4 に変換しましたが、SpriteKit でそれを使用してスプライトを回転させようとすると問題が発生しました。knobImageView.transform = CGAffineTransformMakeRotation (newAngle * M_PI/180.0);
SpriteKit で Swiftを使用する方法がわからなかったので、わかりませんでした。Hollemans Objective C クラスを使用して UIImage をシーンの上にプッシュできることはわかっていますが、それは最善の解決策でも最も洗練された解決策でもないようです。
また、コードの CGAffineTransform 部分の処理に関するAllan Weirの提案 を使用して、Objective C から Wexのソリューションを Swift Rotate image on centerに翻訳しまし た。動作しません。
.physicalBody を使用せずに、スプライトに直接zRotationを設定しようとしましたが、役に立ちませんでした。同じぎくしゃくした動きで、止めたいところで止まらない。ラジアン角の前に「-」を付けても、指でドラッグした方向とは反対の方向に移動します。
また、スタック オーバーフローで 0x141Eのソリューションを試しました:固定点を中心にノードをドラッグして回転 させます。 )。この解決策はぎくしゃくし、指にスムーズに追従せず、ノブを特定のポイントに一貫して動かすことができません。摩擦、質量、angularDamping と linearDamping、または SKSpriteNode の速度を下げるためにphysicsBody 属性を設定するかどうかは問題ではありません。
また、SpriteKit を使用して Swift 4 で適切なソリューションを探してインターネットを精査しましたが、これまでのところ役に立ちませんでした。
編集: 度への変換を削除し、 SKAction の期間を 1.0 に変更すると、SKAction.rotate(toAngle:duration: 1.0, shortestUnitArc:)
ほとんど機能します。レバーは方向をうまく変えません。つまり、移動していた方向と反対に動かそうとすると、ドラッグしている新しい方向ではなく、アンカーポイントの周りの古い方向に進み続けることがあります。
編集 2: GreatBigBoreと私は、SKAction ローテーションと self.zRotation の両方について説明しました。上記のコードと以下のコードです。
編集 3: sicvayneは SKScene のコードをいくつか提案し、私は SKSpriteNode (以下) に適応しました。一貫して移動したり、特定の場所で停止したりできません。