hir*_*oki 6 scroll map cocos2d-iphone sliding
我有一个我根本想不通的问题; 可能是因为我没有正确的知识.
我有一个用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);
}
Run Code Online (Sandbox Code Playgroud)
为了说明当我使用上面的代码滑动屏幕时我在屏幕上看到的问题:似乎如果我触摸屏幕的中心,地图的左下角将跳转到触摸的坐标并随着我移动触摸,直到我的触摸解除.地图的左下角将始终移动到我开始触摸的位置.此外,当地图被移动时,它会像疯了一样闪烁,如果过度移动,则完全消失.
再次感谢所有,非常感谢.最好的和亲切的问候,hiro
我找到了问题的解决方案.在Cocos2D社区中有一个非常聪明的人,他编写了一个控制器,不仅可以有机地平移,还可以放大和缩小.
你不需要编写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];
Run Code Online (Sandbox Code Playgroud)