3

基本的に、タッチが検出されたらすぐにボタンを拡大しようとしています。これが私のシーンです:


@implementation HomeScene

-(id) init
{
  if((self = [super init])) {
    ...
    // sp_btn_story is retained...
    sp_btn_story = [[CCSprite spriteWithFile:@"main_menu_btn.png"] retain];
    sp_btn_story.position = ccp(size.width - 146, 110);
    [self addChild: sp_btn_story];
    ...
  }
  return self;
}

-(void) onEnter
{
  [[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];
}

-(void) onExit
{
  [[CCTouchDispatcher sharedDispatcher] removeDelegate:self];
}

- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
  NSLog(@"tapped!");
  sp_btn_story.scaleX = 2;

  [sp_btn_story stopAllActions];
  [sp_btn_story runAction: [CCScaleTo actionWithDuration:0.5f scale:1.2f]];
  return YES;
}

...

@end

予想どおり、Xを適切にスケーリングします。(テストのためにそこに投げました。)しかし、何らかの理由でアクションが実行されていません。:(誰かアイデアはありますか?

編集:cocos2d0.99btwを使用します。

4

2 に答える 2

1

この質問への回答(より見やすくするために、質問者自身のコメントから再投稿されました):

呼び出すことは非常に重要です

[super onEnter];

このメソッドをサブクラスで上書きすると、奇妙なことが起こる可能性があります。Cocos2Dは幸せではありません。

これは、他の(すべてではないにしても)メソッドにも適用されます。

[super onExit];

同じように。

于 2011-09-02T14:59:37.787 に答える
0

何が起こっているのか完全にはわかりません。正常に機能するように見えますが、sp_btn_storyフェードインまたはフェードアウトなどの別のアクションを適用して、少なくともいずれかのアクションが機能するかどうかを確認することをお勧めします。それができない場合は、コードの別の部分にアクションを適用してみることもできます。これらは解決策ではありませんが、正確に何が起こっているかを示す証拠を提供する可能性があります。

于 2010-03-01T22:31:57.157 に答える