2 frosen lu frosen_lu 于 2013.12.04 13:08 提问

cocos2dx新手的几个问题,用vs2012,求解答

各位好,我刚学cocos2dx,学编程也不久,有几个问题想问下:
1. helloWorld中的精灵都在init()中,但init执行以后,所有的精灵不会因为超出作用域而delete吗?那屏幕上还会显示这些精灵是为什么?

  1. 我看所有的类的init中都要先调用父类的init 这是为什么?

  2. cocos2d中所有的资源都在一个rescource文件夹中,我想在这个文件夹中建立新文件夹,用于分类管理资源,但是发现程序就不能正常读取到资源了。一定要放在这个文件夹中吗?可以调整吗?可以同步文件夹和vs中的筛选器吗?

  3. 我用vs2012,想在class中添加新的类,也就是.cpp 和.h,我只能添加新项,如果添加新类的话,就会直接建立在外部依赖项,而且会把文件建立在win32文件夹下。这个外部依赖项是什么意思?怎么才能把新的类直接放在classes中呢?

2个回答

zhangdell
zhangdell   2013.12.13 11:12
已采纳

init的时候 不是把你创建的sprite addchild到当前的layer中么?cocos2d-x 是用引用计数来管理内存的,建议你先去了解这个

调用父类的init():因为cocos2d-x是按照cocos2d-iphone来改的,一般的c++中初始化都是放在构造函数来的,但是cocos2d-x没有这么做而是单独做了一个init***初始化函数,父类的初始化函数在父类构造执行时是没有调用的,所以要手动调用,不然有些类是会有问题的

资源路劲:可以新建文件夹,但是你要在程序中把这个路劲加入到 程序的searchpath中,不然肯定找不到

新建文件的时候 不是可以选择文件存放的位置么?直接指定class就行了

d87025284
d87025284   2014.05.09 15:53
  1. 你可以把精灵的创建理解成是堆中分配内存的,出了init()函数依然存在,依然可以使用。
  2. 因为你的类继承自CCLayer,重写了父类的虚函数init(),而父类中的init函数中可能也有一些初始化的代码,所以需要我们自己调用CCLayer::init()。
  3. resource文件夹下可以新建文件夹,但是代码中的路径也要改,比如新建了Image文件夹,那么精灵的创建要写成这样:CCSprite::create("Image/test.png");
  4. 你先在class目录下新建.cpp/.h文件,然后在vs项目中添加现有项,引入进来就行了噢。
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!