ユーザーがカードに触れるとゆっくりとめくり、数字が表示されるゲームを開発しています。そのために、どのcocos2d APIを使用できますか?
または、フリップを示すフレームを使用してアニメーションを作成する必要がありますか?
ユーザーがカードに触れるとゆっくりとめくり、数字が表示されるゲームを開発しています。そのために、どのcocos2d APIを使用できますか?
または、フリップを示すフレームを使用してアニメーションを作成する必要がありますか?
に似たものを作成できますCCTransitionFlipX
。ただし、CCSceneの代わりに、カードノード(スプライト)で動作させます。
このクラス(CCTransition.m)の実装は次のとおりです。
//
// FlipX Transition
//
@implementation CCTransitionFlipX
-(void) onEnter
{
[super onEnter];
CCActionInterval *inA, *outA;
[inScene_ setVisible: NO];
float inDeltaZ, inAngleZ;
float outDeltaZ, outAngleZ;
if( orientation == kOrientationRightOver ) {
inDeltaZ = 90;
inAngleZ = 270;
outDeltaZ = 90;
outAngleZ = 0;
} else {
inDeltaZ = -90;
inAngleZ = 90;
outDeltaZ = -90;
outAngleZ = 0;
}
inA = [CCSequence actions:
[CCDelayTime actionWithDuration:duration_/2],
[CCShow action],
[CCOrbitCamera actionWithDuration: duration_/2 radius: 1 deltaRadius:0 angleZ:inAngleZ deltaAngleZ:inDeltaZ angleX:0 deltaAngleX:0],
[CCCallFunc actionWithTarget:self selector:@selector(finish)],
nil ];
outA = [CCSequence actions:
[CCOrbitCamera actionWithDuration: duration_/2 radius: 1 deltaRadius:0 angleZ:outAngleZ deltaAngleZ:outDeltaZ angleX:0 deltaAngleX:0],
[CCHide action],
[CCDelayTime actionWithDuration:duration_/2],
nil ];
[inScene_ runAction: inA];
[outScene_ runAction: outA];
}
@end
基本的に、指定された期間で両方のシーンで一連のCCActionを実行します。アクションは CCOrbitCamera
、球座標を使用して画面の中心を中心にカメラを周回します。
ビューを反転するために、uはこのようにそれを行うことができます、
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.6];
[UIView setAnimationDelegate:self];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:myview cache:YES];
[UIView commitAnimations];
アニメーションを実行する前に、ラベルを作成し、それをサブビューとしてUIViewに追加するだけです。テキストをアニメーションの後に表示する番号uに設定します。このラベルを非表示にします。commitAnimationsの後のアニメーションの最後で、ラベルの非表示プロパティをNOに設定します。あなたはあなたが望むアニメーションスタイルを達成するでしょう、私は推測します..これが役立つことを願っています....ハッピーコーディング... :)
GeekGameBoardは、たくさんのゲームが含まれているMacアプリです。また、フリップなどを処理するカードクラスもあります。お役に立てば幸いです。
私はそのようなcocs2d-android-1で行います
CCSprite sprite=CCSprite.sprite("icon.png");
CCIntervalAction a = (CCIntervalAction)CCOrbitCamera.action(2, 1, 0, 0, 360, 0, 0);
addChild(sprite,1);
sprite.runAction(CCRepeatForever.action(a));