私は、ユーザーがスライダーを動かすとイメージをアニメートする単純なアプリケーションを開発しています。これは個々の画像で簡単に行うことができますが、方法が非効率的であるという明らかな理由からです。Cocos2dなしでXcodeでスプライトシートをアニメーション化するにはどうすればよいですか?
現在のところ、アニメーションは14枚のスプライトシートに分割され、1枚に16枚の画像が含まれています。私は、CGImageCreateWithImageInRectを使ってスライダによって指示された現在のイメージを見つけ、そのイメージでイメージビューを更新するメソッドを作成しました。これは機能しますが、流動的ではありません。私は理由を理解していると思うが、そうでなければ何をすべきかわからない。私はCocos2dやOpenGL ESを使用することができますが、私は頑固であり、これがなければこれが可能であると確信しています。私はちょうど方法を知りたい。任意の助けを事前に
- (void)setUp{
NSString *string;
NSString *bundleString = [[NSBundle mainBundle] bundlePath];
dsRedPathArray = [[NSMutableArray alloc] initWithCapacity:15];
for (int i = 0; i < 14; i++)
{
string = [bundleString stringByAppendingFormat:@"/dsRedAni_%d.png", i];
[dsRedPathArray addObject:string];
}
//initial image starts at (0, 1) of image dsRedAni_9
currentImage = [UIImage imageWithContentsOfFile:[dsRedPathArray objectAtIndex:9]];
currentRef = CGImageCreateWithImageInRect(currentImage.CGImage, CGRectMake(495, 0, kModelWidth, kModelHeight));
modelView.image = [UIImage imageWithCGImage:currentRef];
}
- (IBAction)sliderMoved:(UISlider*)sender
{
[self animateModel:sender.value];
}
- (void)animateModel:(int)index
{
index += 1;
imageIndex = (index/16) + 9;
if (imageIndex > 13)
{
imageIndex = -14 + imageIndex;
}
currentX = kModelWidth * (index % 4);
currentY = kModelHeight * ((index/4) % 4);
currentRect = CGRectMake(currentX, currentY, kModelWidth, kModelHeight);
currentImage = [UIImage imageWithContentsOfFile:[dsRedPathArray objectAtIndex: (imageIndex)]];
currentRef = CGImageCreateWithImageInRect(currentImage.CGImage, currentRect);
modelView.image = [UIImage imageWithCGImage:currentRef];
}
ありがとう:
はここにいくつかのサンプルコードです。
あなたはそれぞれのpngファイルをループしていますが、私はあなたがスプライトシートメソッドを持っていると思いましたか? – mskw
これは、スプライトシートpngのグループです。アニメーションシーケンスが長すぎて1枚のシートに配置できず、iOSイメージサイズのしきい値内に留まりました。 – MyNameIsKo
@MyNameIsKoねえ、私はspritesheetに関連する同じ問題があります私の質問は私を助けてください私の質問です.http://stackoverflow.com/questions/33751146/how-to-differentiate-animation-from-single-sprite-sheet-in- ios – BHUMICA