私はこれをどうやってやっているのだろうと思っています。指が画面上に残っているのでスプライトが拡大するようにしたいと思います。どのようなヒント、一般的なガイドライン、または私が見ることができる方法が評価されます。Cocos2d:スプライトがタッチされているときのスケーリング
答えて
実行するアクションを定義します。この場合は... ScaleBy(最終スケールではなく、現在のスケールに比例します)。タッチが受信されると、タッチが終了するまでこのアクションを繰り返して、アクションを停止します。
アイテムが特定のポイントを超えて拡大しないように上限を実装する場合、ScaleByはScaleToになり、上限はターゲットスケールとして設定されます。しかし、あなたが探している気分を得るためには、期間を周りに遊ばなければなりません。あまりにも速く、遅すぎる、など...それらはあなた次第です。
- (void)ccTouchesBegan:(NSSet*)touches withEvent:(UIEvent*)event
{
UITouch* touch = [touches anyObject];
CGPoint location = [[[Director sharedDirector] convertCoordinate: touch.location];
CGRect particularSpriteRect = CGMakeRect(particularSprite.position.x, particularSprite.position.y, particularSprite.contentSize.width, particularSprite.contentSize.height);
if(CGRectContainsPoint(particularSpriteRect, location)) {
// scale by 1.25 every 0.25 second while finger touching
id a = [RepeatForever actionWithAction: [ScaleBy actionWithDuration: 0.25 scale: 1.25];
[a setTag: YOUR_TAG];
[particularSprite runAction: a];
return kEventHandled;
}
}
- (void)ccTouchesEnded:(NSSet*)touches withEvent:(UIEvent*)event {
// code to determine correct finger/touch releases omitted
[particularSprite stopActionByTag: YOUR_TAG];
}
まあ...スプライトクラスには、デフォルトの( "ネイティブ")スケールである浮動小数点値として、そのスケールを設定できるscaleメソッドがあるようです。
スプライトの縮尺を変えたい場合、タッチの「追従」、つまりドラッグすることによってスプライトのサイズを変更できるようになっている場合や、たとえば、タッチが登録されたことをユーザーに通知するために、スケールを変更します。あなたはこれらのことを理解し、あなたが望むスケールを計算する必要があります。
私はあなたが正しく動くことなく同じ場所に指が残っている間にスプライトをスケールしたいのですか?
私は次の方法でLayer
を使用することをお勧めします:あなたはあなたのスプライトの規模を高めるためにccTouchesBegan
に間隔ベースのアクション/メソッドをスケジュールすることができ
- (BOOL)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
- (BOOL)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
- (BOOL)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
(例えば毎秒0.1を大きくする)とccTouchesEnded
でそのアクションをキャンセルし、スケールを元の値(1.0など)に戻します。スケジューリングのための
は(CocosNode
を拡張する任意のクラスで見つかった)その方法を見てみましょう:
- (無効)スケジュール:(SEL)■;
私は、cocos2DとSpaceManagerを使用してタッチでズームイン/ズームアウトを実装しました。すでに受け入れられている回答はうまく見えますが、すでにSpaceManagerを使用している場合は、どうすればこのようにできるかを示したかったのです。
注:このスニペットは、1回のスワップでズームイン/ズームアウトします。既に承認されている回答は、リリース時に縮小のみを行うようにこれを修正する方法を見てみることができます。
これは、私はそれをやった方法です:
#pragma mark touch
- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
NSLog(@"Touched began");
CGPoint position = [touch locationInView: [touch view]];
CGPoint positionLocal =[[CCDirector sharedDirector] convertToGL: position];
cpShape *touchedShape = [smgr getShapeAt:positionLocal];
if (touchedShape != nil) {
NSLog(@"something was touched");
cpCCSprite *cpCCSOwner = (cpCCSprite *) touchedShape->data;
// Let's do 'pulse' special effect on whatever we just touched, just to give the user some feedback
cpFloat originalScale_ = cpCCSOwner.scale;
CCFiniteTimeAction *zoomAction = [CCScaleTo actionWithDuration:0.1f scale:originalScale_ * 1.2f];// zoom in
CCFiniteTimeAction *shrinkAction = [CCScaleTo actionWithDuration:0.1f scale:originalScale_];// zoom out
CCSequence *actions = [CCSequence actions:zoomAction, shrinkAction, nil];// zoom in, then zoom out
[cpCCSOwner runAction:actions];// now
// Since I just grabbed the object, it should stop moving
cpCCSOwner.shape->body->v = cpvzero;
// Let's keep track of what we are touching.
cpCCSpriteTouched = cpCCSOwner; //<- I just added this to the class, you'll need something more sophisticated from non-trivial cases
} else {
NSLog(@"nothing was actually touched - you missed");
cpCCSpriteTouched = nil;
}
return YES;
}
- 1. Cocos2dでのスプライトのスケーリング
- 2. Cocos2dのタッチ可能なスプライト
- 3. スプライトをタッチして回転させる方法Cocos2d
- 4. スプライトをcocos2dアンドロイドのタッチに反応させるには?
- 5. タッチでベジェパス上のスプライトを回転する - Cocos2D/Box2D
- 6. 視差付きのcocos2dタッチ
- 7. cocos2d - スプライトが正しく表示されない
- 8. cocos2dスプライトの爆発
- 9. iPadのcocos2Dと(?)Box2dをタッチするとホイールアニメーションが表示されますか?
- 10. cocos2dのスケーリングされたスプライトでピクセルの完全な衝突を見つける方法は?
- 11. 遷移時にCocos2dスプライトが画面外に描画される
- 12. デバイス上でのみ移動するとCCAnimationがスキップされるCocos2dスプライト
- 13. 回転する、スケーリングする2つのスプライトを子として持つCocos2dの継承レイヤ
- 14. iPhone Cocos2D - スプライトを回転させる指
- 15. 多角形を描き、それをcocos2dのスプライトとして使用するjs
- 16. スプライトのアニメーションを中止したいときCocos2d
- 17. タッチしているものがタッチされていません
- 18. 軸がスケーリングされているときにグラフが表示されない
- 19. 色を変えるスプライトCocos2d
- 20. cocos2dは別のスプライトにスプライトを追加できません
- 21. スプライトをユニティでスケーリングする
- 22. AS3:スライダを変更したときのマトリックス付きスプライトのスケーリング?
- 23. cocos2Dのタッチでの問題
- 24. どのように私はcocos2dを使用してタッチでスプライトを移動できますか?
- 25. 「スプライトのテクスチャが無効です」Cocos2dタイルマップエラー
- 26. パイゲームに別のスプライトが追加されたときにスプライトが削除されています
- 27. メニューレイヤがポップされた後にcocos2dレイヤーがタッチに反応しない
- 28. スケーリングされた親のスケーリングされていないコントロール
- 29. Cocos2D - 効率的なスプライトシートと転置スプライト
- 30. Cocos2D:スプライトの明るさを向上させる