0

cocos2d 2.1 バージョンを使用して、iOS で簡単なボード ゲームをコーディングしています。このロジックでは、事前定義された期間、個々のレイヤーでタッチ検出を無効にする必要があります。個々のレイヤーでタッチ検出を無効にしても問題なく機能しますが、タッチ検出を再度有効にするのに多くの問題があります。

touchEnabled プロパティを使用してタッチ検出を無効にします

layer.touchEnabled = NO;

後で同じプロパティを使用してこれを逆にしようとします

layer.touchEnabled = YES;

しかし、これはまったく機能していないようで、タップイベントはレイヤーに伝播されなくなりました..

ここで何が間違っていますか?足りないものはありますか??

4

2 に答える 2

0

ディスパッチャーデリゲートを再度指定する必要があります。これが役立つ場合があります

-(void)touchActive
{
    if (self.touchEnabled)
    {
        return;
    }

    [[[CCDirector sharedDirector] touchDispatcher] addTargetedDelegate:self
                                                          priority:0
                                                   swallowsTouches:YES];
    self.touchEnabled = YES;

}
于 2014-02-24T13:56:02.713 に答える
0

解決しました。

初期の touchEnabled を YES に設定する前に、レイヤーの初期化子で touchMode を kCCTouchesOneByOne に設定する必要があることがわかりました。そうしないと、間違ったディスパッチャーが CCLayer 内にインストールされ、混乱していました。飲み込むタッチがYESに設定されたものが必要でした。

layer.touchMode = kCCTouchesOneByOne;
layer.touchEnabled = YES;
于 2014-02-27T07:37:46.383 に答える