0

class1 "init"メソッド(下のコード)で記述された2つのoverLappingボタンがありますが、2つのボタンは(addChild)別のクラス(class2)に追加されました

ボタン(ボタン)を押すと。2つのボタンは2つのイベントに同時に応答できますか?

そして私はbutton1がclass1メソッドに応答することを望みます

button2から応答class2メソッドへ

それを行うための優れた方法は何ですか?

-(id)initWithPosition:(CGPoint)aPoint Mene:(CCMenu *)menu Fun:(SEL)fun
{

id aTarget = [menu parent];

NSString * imageName = @"light.png";


CCSprite* sprite1 = [CCSprite spriteWithSpriteFrameName:imageName];
CCSprite* sprite2 = [CCSprite spriteWithSpriteFrameName:imageName];
self.flashitemSprite=[CCMenuItemSprite itemWithNormalSprite:sprite1 selectedSprite:sprite2 target:aTarget selector:fun];
sprite1.visible=YES;
_flashitemSprite.position  = _flashSprite.position;
[menu addChild:self.flashitemSprite];


CCSprite* sprite3 = [CCSprite spriteWithSpriteFrameName:imageName];
CCSprite* sprite4 = [CCSprite spriteWithSpriteFrameName:imageName];
self.aItemSprite =[CCMenuItemSprite itemWithNormalSprite:sprite3 selectedSprite:sprite4 target:self selector:@selector(distroy)];
sprite3.visible=YES;
_aItemSprite.position  = _flashSprite.position;
[menu addChild:self.aItemSprite];


return self;
}
4

1 に答える 1

1

2 つのボタンが同じサイズで 100% 重なっている場合、明らかに 2 つのボタンは必要ありません。別のメソッドを呼び出す 1 つのアクション セレクターを使用するか、実際に 2 つのアクション セレクターを 1 つのコントロール イベントに割り当てることによって、2 つのアクションを呼び出す 1 つのボタンを用意します。

UIControl の Apple のドキュメントから - (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents メソッド:

このメソッドは複数回呼び出すことができ、特定のイベントに対して複数のターゲットとアクションのペアを指定できます。アクション メッセージには、必要に応じて送信者とイベントを > パラメータとしてこの順序で含めることができます。

2 つのボタンが完全に重なっておらず、次の 3 つの動作が必要な場合:ユーザーが触れた場所に基づいて、ボタン2(重複部分に触れた場合)。. .

次に、タッチをテストして他のボタンの内側にあるかどうかを確認するコードを一番上のボタンに配置する必要があります。このようなもの:

- (IBAction)buttonPressed:(id)sender forEvent:(UIEvent*)event
{
    UIView *button = (UIView *)sender;
    UITouch *touch = [[event touchesForView:button] anyObject];
    CGPoint location = [touch locationInView:button];
    CGPoint otherButtonLocation = [location locationInView:otherButton];

    if ([otherButton pointInside:otherButtonLocation withEvent:nil]) {

         [self otherButtonAction:otherButton];

    }

}

上記のコードはテストされておらず、おそらく最適ではありませんが、アイデアを提供するための出発点にすぎません。

于 2012-08-20T15:06:24.073 に答える