readcookiemap ()map 括号里怎么添

&2003-, All Rights Reserved.  本站发布的所有内容,未经许可,不得转载,详见。> 求助了,malloc函数调试模式下能够正常执行,直接运行就会报错了intread_map(MAP*
求助了,malloc函数调试模式下能够正常执行,直接运行就会报错了intread_map(MAP*
jiangangzhao & &
发布时间: & &
浏览:1 & &
回复:1 & &
悬赏:0.0希赛币
求助了,malloc函数调试模式下能够正常执行,直接运行就会报错了!  int&read_map(MAP&*FIRST)
MAP&*TEMP&=&(MAP&*)malloc(sizeof(MAP));
long&size_
MAP&*NOW&=&FIRST;
NOW&-$>$NEXT&=&NULL;
if(open_map()==0)
if(fseek(fp,0,2)==0)
size_file&=&ftell(fp);
fseek(fp,0,0);
MAP&*NEXT&=&NULL;
NEXT&=&(MAP&*)malloc(sizeof(MAP));
if(fread(&TEMP-&size,2,1,fp)==0)
free(NEXT);
if(fread(&TEMP-&LINK,4,1,fp)==0)
free(NEXT);
if(fread(&TEMP-&namesize,2,1,fp)==0)
free(NEXT);
if(fread(&TEMP-&information,4,1,fp)==0)
free(NEXT);
STRUCT_exchange(TEMP,NEXT);
if(NEXT-&size&-&12&0)
string&=&(char&*)malloc(sizeof(NEXT-&size&-&12));
if(fread(string,NEXT-&size&-&12,1,fp)==0)
free(NEXT);
NEXT-&string&=&
NOW-&NEXT&=&NEXT;
NEXT-&NEXT&=&NULL;
NOW&=&NEXT;
printf("%d\t%d\t",NEXT-&size,NEXT-&LINK);
if(ftell(fp)&==&size_file)
printf("文件读取完整\n");
printf("文件读取不完整\n");
fclose(fp);
求分析,人多力量大啊,大家帮忙分析分析,在调试模式下就能够正常执行完并且最后得出“文件读取完整”的字符串,without&debug运行的话程序就挂了,蛋疼0&0,这个是程序出问题的部分,实在调不出来了,求帮助,有好心人可以加我QQ。。。。
string&=&(char&*)malloc(sizeof(NEXT-&size&-&12));
申请NEXT-&size-12个字节的内存,sizeof不需要。jiangbaoyu & &
18:07:26 & &
& & (0)(0)
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&Pages: 1/2
主题 : cocos2d-x3.2总结(三)TMXTileMap::getContentSize与getMapSize*getTileSize的积的异同
级别: 新手上路
可可豆: 190 CB
威望: 145 点
在线时间: 188(时)
发自: Web Page
来源于&&分类
cocos2d-x3.2总结(三)TMXTileMap::getContentSize与getMapSize*getTileSize的积的异同&&&
   当你在图层中导入瓦片地图后,要计算触摸点在瓦片中的GID时,要使用公式1,还是公式2?接下来,我将讲解他们的异同和我们最终使用的公式。   Point  position=convertToNodeSpace(touch-&getLocation());    公式1:x=position.x/map-&getContentSize().width * map-&getMapSize().                  y=map-&getMapSize().height  -   position.y/map-&getContentSize*map-&getMapSize().                  bgLayer-&getTileGIDAt(Point(x,y));   公式2:x=position.x / map-&getTileSize().                 y=(map-&getMapSize().height * map-&getTileSize().height - position.y) /  map-&getTileSize().                bgLayer-&getTileGIDAt(Point(x,y));   我以cocos2d-x官网上的一个原创教程--《Cocos2d-x塔防游戏 -- 贼来了》为讲解的实例,这是因其代码有我讲解所需要的全部影响因素,我集中精力讲解计算公式的异同而不是花更多的时间在写出例子上。     下载地址:    我们要清楚瓦片地图GID坐标系和cocos2d-x位置的坐标系是不同的。其中瓦片地图GID是以左上角为原点,向下为y轴正方向,向右为x轴正方向,且以你建立地图时的每一块高度和宽度的乘积为一个计算单位。瓦片地图GID坐标系如图1,cocos2d-x位置坐标系如图2。       图1:      
       图2:      
    从图1和图2中可以看出,cocos2d-x坐标中的y轴和瓦片地图中的y轴方向相反,且cocos2d-x中的坐标要转换为GID要分别除以瓦片中块的宽度和高度,得出以块为单位的位置。    接着,我们来看看TMXTileMap中的函数用法。getTileSize().width/height分别以像素为单位得出一块的宽度和高度。getMapSize().width/height分别得出在x轴方向上总的块数,在y轴方向上总的块数。所以,getTileSize().width/height * getMapSize().width/height分别得出在x轴上原始地图的总宽度和在y轴上原始地图的总高度。    接下来我们来看看getContentSize()在cocos2d-x中源代码的注释“Returns the untransformed size of the node&,中文意思就是返回没有被转变前的节点大小。但是,我在”贼来了“源码中调试得出getContentSize()意思是转变后的大小。我想是cocos2d-x中的注释是错的,估计是在transformed前面多加了un。这个调试过程在后面有讲解。    现在,我们在PlayLayer.cpp中的init()函数中添加代码1进行调试,调试结果如图3。    代码1:    //得到转换后的宽度大小      float testContentSizeWidth=map-&getContentSize().            //得到转换后的高度大小       float testContentSizeHeight=map-&getContentSize().            //地图在x轴上总块数乘以每块在x轴上的宽度      float primarySizeWidth=map-&getMapSize().width * map-&getTileSize().      /地图在y轴上总块数乘以每块在y轴上的高度      float primarySizeHeight=map-&getMapSize().height * map-&getTileSize().      图3:         从图3中可以看出,testContentSize.Width/Height与primarySizz.Width/Height的值都不同。这里有两个问题。问题1,我们怎么就知道primarySize.Width/Height的值就是原始地图的宽度和高度?问题2,为什么testContentSize.Width/Height与primarySizz.Width/Height的值都不同。  对于问题1,我们可以打开Resources\height_864\map.tmx,在这个文件中有一下的信息。
&map version=&1.0& orientation=&orthogonal& width=&16& height=&9& tilewidth=&96& tileheight=&96&&  也就是说这个地图x轴方向上有16块,y轴方向上有9块。每块的宽度为96,高度为96。所以16*96=1536,也就是primarySizeWidth的值了。9*96=864,也就是primarySizeHeight的值了。  对于问题2,如果你对cocos2d-x分辨率适配不了解的话,理解起来有点困难。你可以先阅读《Cocos2d-x 多分辨率适配完全解析》。现在我们可以在AppDelegate.cpp中的applicationDidFinishLaunching()看到代码2。   代码2:         glview-&setDesignResolutionSize(480.0f, 320.0f, ResolutionPolicy::FIXED_HEIGHT);          std::vector&std::string& searchP          searchPath.push_back(&height_864&);          CCFileUtils::getInstance()-&setSearchPaths(searchPath);          director-&setContentScaleFactor(864.0f / 320.0f);    从代码2中可以看出源码设置了设计分辨率为(480.0f,320.0f),且ResolutionPolicy为FIXED_HEIGHT,也就说要保持传入的设计分辨率高度不变,根据屏幕分辨率修正设计分辨率的宽度。所以就有变化因子为地图高度除以设计分辨率的高度,即864.0 / 320.0=2.7。那我们又怎么样知道是放大还是缩小?由于地图原高度为864.0,而设计分辨率的高度320.0,明显为缩小,也就是说scalefactor大于0则为缩小,小于0则为放大。所以地图的原始宽度和高度都要除以这个比例,; /  2.7=568.; , 864 / 2.7=320,以上这两个值分别是getContentSize().width/height,所以说getContentSize得到的值是地图原始大小转变后的值,所以我说cocos2d-x的注释是错的。具体的转换过程如图4。    图4:    
    在图4中,是怎么得出来的?如果你看了《Cocos2d-x 多分辨率适配完全解析》大概就明白了。这里直接给出计算过程1536/ (864/320)  / (320/640) =37.7778是cocos2d-x最终把地图按比例绘制屏幕上的宽度。而getContentSize.width/height得到的是Design solution下的大小。    那什么情况下getContentSize会得到地图原始的大小?如果你没有设置设计分辨率和变化因子,getContentSize得到的则是地图原始的大小。我们将代码2中的glview-&setDesignResolutionSize(480.0f, 320.0f, ResolutionPolicy ::FIXED_HEIGHT)和director-&setContentScaleFactor(864.0f / 320.0f)注释。再次调试,结果如图5。没有设置分辨率效果如图6,设置分辨率效果如7。   图5:  
   图6:  
   图7:        从图5中可以看出,如果没有设置设计分辨率和变化因子,则getContentSize得到的值就是地图原始的大小。coco2d-x在屏幕上显示的地图也是原始的大小即没有按比例放大或缩小绘制。  从图6和7中可以看出,设置分辨率后,瓦片地图上的图形经过比例上的缩小以保持地图原始高度能完全呈现出来,地图原始宽度则有些超出了屏幕的范围,屏幕上的显示就是图4中screen resolution。转换的过程如图4所示。   有了以上的讲解后,现在我们回到公式1和公式2的分析来。公式1中,position.x除以getcontentSize.width,得出的是position.x相对于转换或者转换的比例为1的地图宽度的比例,再乘以x轴方向上的块数就可以得出以块为单位的x坐标。公式2中position.x直接除以每一块的宽度得出以块为单位的x坐标,注意getTileSize().width是地图原始的宽度,而position.x的值是相对于地图按比例缩放后的值。如果没有设置设计分辨率和变化因子,则公式1和公式2得出的x的值都准确且相等的。如果设置了,则公式1得出的值是准确,而公式2得出的值是不准确的。   对于y轴上的分析如上,不过要注意瓦片坐标的y轴和cocos2d-x坐标的y轴方向相反。   经过以上的分析,最后得出总结。无论我们有没有设置分辨率,公式1得出的结果都是准确的。公式2在设置分辨率的情况下得出的结果是错误的(排除设置的分辨率就是地图的宽高)。所以,我们最好在计算GID时要使用公式1。  如需转载,请标明出处:[ 此帖被lostjobs在 21:41重新编辑 ]
级别: 禁止发言
UID: 353310
可可豆: 314 CB
威望: 284 点
在线时间: 37(时)
发自: Web Page
用户被禁言,该主题自动屏蔽!
级别: 新手上路
可可豆: 190 CB
威望: 145 点
在线时间: 188(时)
发自: Web Page
回 1楼(wawapl) 的帖子
厉害个毛,大三找不实习,才学了一个半月,半路出家,看9月校招能否找个工作。cocos2d-x官网提供的例子和教程已经很好了,你把教程都看了,学了,几乎对cocos2d-x都很了解了。
级别: 侠客
UID: 219202
可可豆: 414 CB
威望: 361 点
在线时间: 352(时)
发自: Web Page
回 2楼(lostjobs) 的帖子
1楼是打广告的,在好多帖子里看到他复制粘贴这些话
级别: 侠客
可可豆: 460 CB
威望: 460 点
在线时间: 215(时)
发自: Web Page
公式1 中 为什么是乘以,x=position.x/map-&getContentSize().width * map-&getMapSize().&&&&&&&&&&&&&&&&&&&&&&&& 不是除以 : x=position.x/map-&getContentSize().width / map-&getMapSize().
共你那雅别。。
级别: 新手上路
可可豆: 190 CB
威望: 145 点
在线时间: 188(时)
发自: Web Page
回 4楼(110440) 的帖子
首先,你有没有明白getContentSize代表什么意思?它已经是块的总数和每块的宽或高的乘积。不是每块的宽度或高度。然后,你看看文中”公式1中,position.x除以getcontentSize.width,得出的是position.x相对于转换或者转换的比例为1的地图宽度的比例,再乘以x轴方向上的块数就可以得出以块为单位的x坐标&的讲解。
级别: 新手上路
可可豆: 158 CB
威望: 148 点
在线时间: 107(时)
发自: Web Page
图一有误,鉴定完毕!
级别: 新手上路
可可豆: 158 CB
威望: 148 点
在线时间: 107(时)
发自: Web Page
并且getContentSize()在cocos2d-x中源代码的注释没错,你作者理解错了,getContentSize是指获得节点未经缩放的原始的大小,它也是适配过后的大小。
图片:7043AAB8-FA5B-41B1-B902-FBA73479F79C.png
级别: 新手上路
可可豆: 190 CB
威望: 145 点
在线时间: 188(时)
发自: Web Page
回 7楼(renshan) 的帖子
图一坐标,确实表错了。你后面说&getContentSize是指获得节点未经缩放的原始的大小...&,我明白你的意思,但是缩放的英文单词是scale而不是transform,所以现在我只能认为它那个英文标识得不够准确,而且Cocos2-x源码很多注释有等于没有。
级别: 新手上路
可可豆: 158 CB
威望: 148 点
在线时间: 107(时)
发自: Web Page
回 8楼(lostjobs) 的帖子
英语翻译这个东东。。。之博大精深。只有你想不到,没有它做不到,一切在于自己的理解。
Pages: 1/2
关注本帖(如果有新回复会站内信通知您)
苹果公司现任CEO是谁?2字 正确答案:库克
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版

我要回帖

更多关于 parcelable readmap 的文章

 

随机推荐