图层定位仅适用于4.3目标

时间:2013-04-23 21:55:39

标签: ios uiscrollview cocos2d-iphone

我基于Cocos层滚动机制制作了UIScrollView,这里是UIScrollView派生类的代码的一部分:

- (id)initWithFrame:(CGRect)scrollFrame contentFrame:(CGRect)contentFrame layer:(CCNode*)layer anchor:(int)anchor_
{
    self = [super initWithFrame:scrollFrame];
    if (self) {
        self.contentSize = contentFrame.size;
        self.delegate = self;
        self.bounces = YES;
        self.delaysContentTouches = NO;
        self.pagingEnabled = YES;
        self.scrollsToTop = NO;
        self.showsVerticalScrollIndicator = NO;
        self.showsHorizontalScrollIndicator = NO;

        self.alwaysBounceHorizontal = YES;
        self.alwaysBounceVertical = YES;
        self.decelerationRate = UIScrollViewDecelerationRateNormal;

        [self setUserInteractionEnabled:TRUE];
        [self setScrollEnabled:TRUE];
        self.targetLayer = layer;
        anchor = anchor_;
    }
    return self;
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    CGPoint dragPt = [scrollView contentOffset];
    dragPt = [[CCDirector sharedDirector] convertToGL:dragPt];
    dragPt.y = targetLayer.position.y;
    dragPt.x = dragPt.x * -1 + anchor;
    CGPoint newLayerPosition = CGPointMake(dragPt.x, dragPt.y);
    [targetLayer setPosition:newLayerPosition];
}

它需要新的偏移并移动目标层。很奇怪,我使用4.3作为目标iOS版本启动了这个项目,并且图层滚动得很好。今天我试过5.0 /以上...我在调试器中看到新的偏移但是图层在滚动期间根本不会改变它在屏幕上的位置。只有当页面改变时,我才能立即看到图层的新部分。我怀疑与Cocos 2.0有什么关系。

更新: 这就是我在4.3

上所做的工作

http://www.youtube.com/watch?feature=player_embedded&v=xp6bPyAVShk

同样,这在iOS 5或更高版本上不起作用。我不知道在哪里寻找问题,搜索什么......请帮助一下。

1 个答案:

答案 0 :(得分:0)

您可以使用CCBReader库中的 CCScrollView

这里我添加了github存储库 https://github.com/cocos2d/CCBReader

此libs是关于Cocos Builder的读者,Cocos Builder是Cocos2D的图形界面构建器,它是免费的

Cocos2D不推荐在cocos层上使用uikit,CCScrollView易于实现,适用于最新版本的cocos2D和目标4.3及以上版本。

编辑:
CCScrollLayer 支持分页 这里是GitHub存储库

https://github.com/cocos2d/cocos2d-iphone-extensions/tree/master/Extensions/CCScrollLayer

也许你需要在新版本的cocos2D中修改一下这个类的触摸委托