【问题标题】:Scrolling a Tiled Map in Cocos2D在 Cocos2D 中滚动平铺地图
【发布时间】:2011-12-03 18:32:32
【问题描述】:

我遇到了一个我根本想不通的问题;可能是因为我没有正确的知识。

我有一张用 Tiled 制作的 TMX 地图。地图大于屏幕尺寸(图块为 32x32 像素,图块为 100x100)。 我想做的是能够通过滑动屏幕来移动地图。

我查看了各种在线教程并检查了 paddle.m 示例,但仍然无法使其正常工作。 我遇到的所有教程都集中在围绕地图移动一个固定的居中精灵...... 同样,我想做的是能够通过滑动/滑动屏幕来移动地图;就像滚动 iPod 或移动图片时一样。

谁能帮忙?

这是我的 ccTouchMoved 代码

-(void) ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event
{
    CGPoint touchPointMap = [touch locationInView: [touch view]];
    touchPointMap = [[CCDirector sharedDirector] convertToGL: touchPointMap];
    touchPointMap = [self convertToNodeSpace: touchPointMap];
    CCLOG(@"Touch Point Map %lf, %lf", touchPointMap.x, touchPointMap.y);

    self.position = CGPointMake(touchPointMap.x, touchPointMap.y);
}

为了说明我在使用上面的代码滑动屏幕时在屏幕上看到的问题: 似乎如果我触摸屏幕的中心,地图的左下角会跳到那个触摸的坐标,并且会随着我的触摸移动,直到我的触摸被解除。 地图的左下角将始终移动到我开始触摸的位置。 此外,在移动地图时,它会疯狂地闪烁,如果移动过度,则会完全消失。

再次感谢大家,非常感谢。 最好和亲切的问候, 广

【问题讨论】:

    标签: map scroll cocos2d-iphone sliding


    【解决方案1】:

    我找到了问题的解决方案。 Cocos2D 社区中有一个非常聪明的人,他编写了一个控制器,不仅可以自然地平移,还可以放大和缩小。

    Link to Controller, example and preview movie

    您不需要编写 touchBegan、Moved 和 End 方法;这个控制器会为你做这一切。

    我的初始化

    self.theMap = [CCTMXTiledMap tiledMapWithTMXFile: @"city_map.tmx"];
            self.bgLayer = [theMap layerNamed:@"bg"];
    
            // boundingRect is the area you wish to pan around
            CGRect boundingRect = CGRectMake(0, 0, 32*50, 16*50);
    
            theMap.anchorPoint = ccp(0,0);
            [self addChild: theMap z: -1];
    
            // _controller is declared in the @interface as an object of CCPanZoomController
            _controller = [[CCPanZoomController controllerWithNode:self] retain];
            _controller.boundingRect = boundingRect;
            _controller.zoomOutLimit = _controller.optimalZoomOutLimit;
            _controller.zoomInLimit = 2.0f;
    
            [_controller enableWithTouchPriority:0 swallowsTouches:YES];
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-14
    相关资源
    最近更新 更多