3

私はまだUIAnimationsについて学んでいますが、それを始めたばかりで、解決方法がわからない問題に遭遇しました。新しいハイ スコアを取得し、古いハイ スコアに新しいハイ スコアを追加して、数字が上下に動くゲームを見たことがあります。それは非常にクールで視覚的に魅力的に見えます。

これがどのように行われるかを誰かに説明できますか?この質問が簡単に解決できる場合はお詫び申し上げます。私はまだアニメーションを学習/完成させようとしていると言ったように。

前もって感謝します

4

3 に答える 3

10

セルジオが提案した投稿からコードを取得しましたが、フェードイン/フェードアウトアニメーションではなく、上下に移動するアニメーションが必要であるというAnshuの言及に注意したので、必要に応じてコードを変更しました. どうぞ:

// Add transition (must be called after myLabel has been displayed)
CATransition *animation = [CATransition animation];
animation.duration = 1.0;   //You can change this to any other duration
animation.type = kCATransitionMoveIn;     //I would assume this is what you want because you want to "animate up or down"
animation.subtype = kCATransitionFromTop; //You can change this to kCATransitionFromBottom, kCATransitionFromLeft, or kCATransitionFromRight
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
[myLabel.layer addAnimation:animation forKey:@"changeTextTransition"];

// Change the text
myLabel.text = newText;

お役に立てれば!

于 2012-07-25T23:43:26.220 に答える
2

ここで私が間違っていれば、人々は私を訂正することができますが、このアニメーションを手動でコーディングする必要があると確信しています. よく調べれば、オンラインのどこかでオープン ソース バージョンを見つけることができるかもしれません。

a の画像を取得し、各文字の幅を決定するためにUILabel使用sizeWithFont:してから、各数字に基づいて画像をセクションに切り分けることができる場合があります。UILabelまたは、各桁に複数の s を指定することもできます。

数字画像の配列を取得したら、移行中にどの数字が変化するか、およびそれらが増加または減少するかどうかを計算し、上/下から押し込んで次の数字に移行する必要があります(これを行うためのトランジションが組み込まれていると思います。コア アニメーションのドキュメントを参照してください)。

おそらく、それらがどれだけ増加/減少するかを判断し、それを使用してアニメーションにかかる時間を把握したいと思うでしょう。そうすれば、5 から 900 に変更する場合、最後の桁は非常に速くアニメートする必要があり、最後から 2 番目の数字は 1/10 の速さでアニメートし、3 番目の数字は 1/100 などになります。

于 2012-07-25T22:12:45.263 に答える