0

我制作了UIScrollView基于 Cocos 层的滚动机制,下面是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/above 并且...我在调试器中看到了新的偏移量,但是图层在滚动期间根本不会改变它在屏幕上的位置。只有当页面发生变化时,我才能立即看到图层的新部分。我怀疑与 Cocos 2.0 有关。

更新:这就是我在 4.3 上所做的工作

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

同样,这不适用于 iOS 5 或更高版本。我不知道在哪里寻找问题,搜索什么......请帮忙。

4

1 回答 1

0

您可以使用CCBReader库中的CCScrollView

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

这个库是关于 Cocos Builder 的阅读器,Cocos2D 的图形界面构建器,它是免费的

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

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

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

也许你需要在新版本的 cocos2D 中为 touch delegate 稍微修改一下这个类

于 2013-04-24T05:04:59.573 回答