1

cocos2d アプリで CCScrollLayer を動作させようとしていますが、スクロールしません。

これが私がしたことです:

  1. cocos2d テンプレートを使用して、iOS cocos2d プロジェクトを作成しました。CCScrollLayer ファイルを追加し、HelloWorldLayer クラスにインポートしました。レイヤーを作成するメソッド「layerWithLevelName」を追加しました。

  2. 初期化では、テスト用にいくつかのレイヤーを作成しました。以下は、私の HelloWorldLayer 実装のコードです。いくつかのレイヤーをスクロールさせようとしているだけなので、これは非常に基本的なものです。

#

// HelloWorldLayer implementation
#import "HelloWorldLayer.h"
#import "CCScrollLayer.h"
@implementation HelloWorldLayer


+(CCScene *) scene
{
    CCScene *scene = [CCScene node];    
    HelloWorldLayer *layer = [HelloWorldLayer node];    
    [scene addChild: layer];

    // return the scene
    return scene;
}

-(CCLayer*) layerWithLevelName:(NSString*)name number:(int)number screenSize:(CGSize)screenSize
{
    CCLayer *layer = [[[CCLayer alloc] init]autorelease];

    int largeFont = [CCDirector sharedDirector].winSize.height / 9;
    CCLabelTTF *layerLabel = [CCLabelTTF labelWithString:name fontName:@"Marker Felt" fontSize:largeFont];
    layerLabel.position =  ccp( screenSize.width / 2 , screenSize.height / 2 + 10 );
    layerLabel.rotation = -6.0f;
    layerLabel.color = ccc3(95,58,0);
    [layer addChild:layerLabel];

    return layer;
}

// on "init" you need to initialize your instance
-(id) init
{
    // always call "super" init
    // Apple recommends to re-assign "self" with the "super" return value
    if( (self=[super init])) 
    {

        // ask director the the window size        
        NSMutableArray* _layers = [[NSMutableArray alloc]init];
        CGSize screenSize = [CCDirector sharedDirector].winSize;  

        for (int i=0; i<3; i++)
        {
            int number = i;
            NSString* name = [[NSString alloc]initWithFormat:@"level%d",i];
            CCLayer* layer = [self layerWithLevelName:name number:number screenSize:screenSize];
            [_layers addObject:layer];

            [name release];
        }

        // Set up the swipe-able layers
        CCScrollLayer *scroller = [[CCScrollLayer alloc] initWithLayers:_layers 
                                                            widthOffset:230];
        [self addChild:scroller];
//        [scroller selectPage:0];

        [scroller release];
        [_layers release];

    }
    return self;
}

- (void) dealloc
{
    [super dealloc];
}
@end

コードを実行すると、レベル/スクロールレイヤーが表示されることがわかります->適切にロードされたようです。しかし、スクロールすることはできません。私は何をするのを忘れましたか?私は何を間違っていますか?

編集: cocos2d-iphone 1.1beta2 を使用しています

4

1 に答える 1

1

これは 1.1beta2 の問題のようです。

一時的な回避策は、scroller.stealTouches = NO; を設定することです。

これが他にどのような副作用があるかはわかりません。

編集:

修正: 更新された CCTouchDispatcher ファイルを使用します。

https://github.com/cocos2d/cocos2d-iphone/blob/develop/cocos2d/Platforms/iOS/CCTouchDispatcher.m および対応する .h ファイル https://github.com/cocos2d/cocos2d-iphone/blob/develop/ cocos2d/プラットフォーム/iOS/CCTouchDispatcher.h

于 2012-04-20T09:35:04.903 に答える