Cocos2d iphone 为什么赢了';t[TMXLayer positionAt:CGPoint]对我有用吗?
我试图在我的.tmx贴图中找到特定分幅的像素位置。CCTMXLayer类的positionAt:方法应该可以做到这一点,但是每当我尝试使用它时,它都会返回一个带有坐标(0,0)的CGPoint。。这是我正在使用的代码的一部分Cocos2d iphone 为什么赢了';t[TMXLayer positionAt:CGPoint]对我有用吗?,cocos2d-iphone,position,cgpoint,tmx,Cocos2d Iphone,Position,Cgpoint,Tmx,我试图在我的.tmx贴图中找到特定分幅的像素位置。CCTMXLayer类的positionAt:方法应该可以做到这一点,但是每当我尝试使用它时,它都会返回一个带有坐标(0,0)的CGPoint。。这是我正在使用的代码的一部分 // CCTMXTiledMap Declaration using my class MapLayer //which inherits from CCTMXTiledMap MapLayer *tileMap = [MapLayer node];
// CCTMXTiledMap Declaration using my class MapLayer
//which inherits from CCTMXTiledMap
MapLayer *tileMap = [MapLayer node];
CCTMXLayer *myLayer = [tileMap layerNamed: @"Middle"];
NSLog(@"%i", [myLayer positionAt: CGPointMake(x,y)].x);
NSLog(@"%i", [myLayer positionAt: CGPointMake(x,y)].y);
无论CGPointMake的x和y值是多少,CGPoint(0,0)的值总是被记录下来,我不明白为什么
编辑:
我只是用地图声明我的图层错了吗?这是我的密码
//init method for MapLayer.m class file
@implementation MapLayer
-(id) init {
if( (self=[super initWithTMXFile: @"ZombearTilemap.tmx"])) {
}
return self;
}
//in my MainScene.m class init method
MapLayer *tileMap = [MapLayer node];
[self addChild: tileMap];
CCTMXLayer *tileMapLayer = [tileMap layerNamed: @"Middle"];
// (tileMapLayer == nil) returns false
//tileMap.mapSize.width returns 0
//[[tileMapLayer tileAt:ccp(x,y)] boundingBox].size.height returns 0
要检查的几件事
myLayer
是否有效(不是零)?如果为nil,则TMX文件中没有名为“Middle”的层,或者没有加载TMX文件李>
CCTMXTiledMap
的子类中的某些内容就非常糟糕CCTMXLayer
的-(CGPoint)位置的代码:(CGPoint)pos
,并了解其中的情况
编辑: 如果使用“平铺”创建TMX文件,请进入首选项并将“将平铺层数据存储为:”从“Base64(gzip压缩)”更改为“XML”。Cocos2d无法读取此TMX编码,但通过在任何类型的文本编辑器或web浏览器中打开TMX文件,您都可以轻松查看数据。
(如果您没有使用Tiled,我不知道您是如何创建TMX文件的,但请在此处获取它:) 更改首选项后,打开TMX文件并将其重新保存到其他位置。您可能应该将其重命名为-XML.tmx或其他名称,这样您就不会在以后意外地尝试将其馈送到cocos2d,并想知道为什么不加载它。;) 您的图层将从地图的
tileSize
属性中获取其mapTileSize
属性。此属性从TMX文件的元素中设置。这里有一个例子:
如果那里一切正常,那么您在代码的某个地方意外地将该值重置为0。如果它搞砸了,那么您需要手动调整这个xml文件,或者使用正确的tilesize值从头开始重新创建TMX文件
别忘了将“平铺”中的首选项更改回“Base64(gzip压缩)”,以cocos2d可以加载的格式保存您的工作。我的图层文件不是零。我用if语句检查了一下。不过,关于高度和宽度,你是对的。他们都是0,所以有些东西坏了,我不知道是什么。。在导出tmx文件时,是否有什么东西可能会丢失,从而导致文件损坏,因为tmx文件出现了,我只是无法使其属性正常工作。@user1371455您能编辑您原来的问题帖子并添加该代码吗?这对我来说毫无意义。我解决了我的问题。当我使用NSLog时,我把数字打错了。我使用了%I和%d,得到了奇怪的结果。当我使用%1.x时,数字开始正确显示。