cpp11:

  1. 支持了auto标识符,这样可以大大简化了声明变量的类型
  2. auto标识符: 泛类定义
  3. nullptr 代替 NULL,NULL只代表内存地址位为0,这样做有时会出问题,cpp11后尽量用nullptr
  4. static_cast< Class >obj相当于c语言的(Class)obj,dynamic_cast更智能,无法转换会返回nullptr
  5. 设置指针型布尔 std::shared_ptr<bool> enable(new bool(true));
    1. 获取和赋值 (*enable) = false;
  6. 7.

创建工程

  1. 下载最新的cocos2dx 3.x版本,解压缩
  2. 打开terminal,cd 找到3.x解压缩的路径位置/tools/cocos2d-console/bin
  3. 执行 ./cocos new ProjectName -l cpp -p PackageName -d ~/Desktop
  4. 自行替换上面的ProjectName和PackageName内容,以及对应语言,我使用c++语言,保存到桌面上
  5. std::nothrow 在内存不足时,new (std::nothrow)并不抛出异常,而是将指针置NULL

[相对cocos2dx2.x来看待]

基础

  1. 设置z层级 setLocalZOrder(0);
  2. 获得z层级 getGlobalZOrder();
  3. 层级参考链接
    1. globalZOrder 是用于 渲染器 中用来给“绘制命令”排序的
    2. localZOrder 是用于父节点的子节点数组中给 节点 对象排序的
  4. 设置颜色 setColor(Color3B::RED);
  5. 清空颜色 setColor(Color3B::WHITE);
  6. 获取锚点对应坐标 Vec2::ANCHOR_BottOM_LEFT
  7. 菜单按钮绑定 CC_CALLBACK_1(MyClass::func,this)
  8. 获取屏幕大小 Director::getInstance()->getWinSize()
  9. 获取屏幕可视区域 Director::getInstance()->getopenGLView()->getVisibleRect()

ActionManager:

  1. VisibleRect 屏幕可以获得屏幕的指定位置点,可以获得屏幕的大小
  2. 同时可并行执行多条 action
  3. CC_CALLBACK_0 调用函数指针,执行参数为0的函数
  4. CC_CALLBACK_1 执行参数为1的函数
  5. removeChild 可以remove 自身
  6. Director::getInstance()->getActionManager()->addAction(action,target,true); 另外一种添加动作的方式,第三个参数为不自动执行
  7. Director::getInstance()->getActionManager()->resuMetarget(target); 回复执行对象动作
  8. Director::getInstance()->getActionManager()->pauseTarget(target); 设置后对象即使添加新的动作也无法执行
  9. schedule(CC_SCHEDULE_SELECTOR(MyClass::funct),3); 每三秒执行一次
    8.unschedule(CC_SCHEDULE_SELECTOR(MyClass::funct)); 停止循环执行函数
  10. 在执行动作的过程中调用函数,并终止动作,不会导致crash
  11. action的tag可以重复,可通过sprite->stopAllActionsByTag(kTag); 删除多个动作,而且可以保留其他动作继续执行

Action

  1. actionBy->reverse() 可以创建相对运动的逆运动
  2. target->setPosition3D(Vec3(40,40,0)); 伪3d,z负责缩放,moveBy moveto 同样支持
  3. SkewTo可以创造3d翻转
  4. target->ignoreAnchorPointForPosition(false); 不忽略锚点
  5. JumpBy::create(time,targetPosition,high,jumpTimes);
  6. PointArray->addControlPoint(Vec2(0,0)); 点数组存储点
  7. DrawNode->drawCardinalSpline(pointArray,100,Color4F(1.0,0.0,1.0,1.0));
  8. CardinalSplineBy::create(3,array,1); 按照点以及点的张力运动
  9. CatmullRomBy::create(3,array); 非封闭点运动
  10. CallFunc::create(std::bind(&TargetClass::funct,this,param) ) 绑定函数,这样可以传递参数,也支持数值类型
    CallFuncN::create( CC_CALLBACK_1(ActionCallFuncN::callback,this))
    CallFunc::create( std::bind(&ActionCallFunction::callback1,this) )
    CallFunc::create( std::bind(&ActionCallFunction::callback2,_tamara) )
    CallFunc::create( std::bind(&ActionCallFunction::callback3,_kathia,42) )
  11. CallFuncND 不再需要,已经被std::bind()替代
  12. sequence 序列 可以支持reverse翻转
  13. OrbitCamera 轨道动作
  14. this->runAction(Follow::create(target,Rect(0,s.width * 2 - 100,s.height))); 舞台镜头跟踪对象
  15. TargetedAction::create(target,jump2) 混合其他对象动作到当前动作中,支持reverse
  16. this->schedule([&](float dt) { log(“dealing”);},5,false,“key”); 延迟函数(函数内容,周期间距,重复次数,延迟,key)
  17. scheduleOnce([&](float dt) { log(“dealing”);},2,”key”);
  18. auto actionFloat = ActionFloat::create(2.f,3,[this](float value) { target->setScale(value); }); 无需自定义变量,设置临时数值变化
  19. action->clone() 再也不需要去写autorelease,已经被包含在clone内部,非常方便
  20. Scheduler 的 timeScale 可以正倒放动作

ProgressBar

  1. 已支持SpriteFrame方式进度条
auto s = Director::getInstance()->getWinSize();
    auto to = Sequence::createWithTwoActions(Progressto::create(6,100),Progressto::create(0,0));
    SpriteFrameCache::getInstance()->addSpriteFramesWithFile("zwoptex/grossini.plist");
    auto left = Progresstimer::create(Sprite::createWithSpriteFrameName("grossini_dance_01.png"));
    //Progresstimer::Type::RADIAL/BAR
    left->setType(Progresstimer::Type::BAR);
    //radial模式设置为逆时针旋转
    //left->setReverseProgress(true);
    left->setMidpoint(Vec2(0.5f,0.5f));
    left->setBarChangeRate(Vec2(1,0));
    addChild(left);
    left->setPosition(100,s.height/2);
    left->runAction(RepeatForever::create(to->clone()));

sound & music

  1. 我能了解到的是v2.x版本的苦恼,原因是2.x版本的sfx在loop的时候100%无法回收停止音效,应该在v3.x版本里面有所修正,待证实

camera

  1. 创建camera: auto camera = Camera::create();
    camera->setCameraFlag(CameraFlag::USER1);
    addChild(camera);
  2. 默认当前场景会有一个defaultCamera
  3. camera对象虽然也是被添加在node环节中,但是他的层级关系只跟设置的CameraFlag有关系,数值越大越在前端显示
  4. 在设置一个node节点整体为一个camera的内容时,如果想把子节点都设置为此camera的内容,则最好在所有addchild完成后再设置setCameraMask((unsigned short)CameraFlag::USER1)
  5. 参考链接

cocos2d 信息

  1. 读取plist信息 Configuration::getInstance()->loadConfigFile("configs/config-test-ok.plist")
  2. 获取信息 Configuration::getInstance()->getInfo()
  3. cocos2dx版本 Configuration::getInstance()->getValue("cocos2d.x.version") //cocos2d-x-3.7
  4. openGL版本 Configuration::getInstance()->getValue("gl.version") //OpenGL ES 2.0 IMGSGX543-113.3.1
  5. 获取无效值后会得到默认值 Configuration::getInstance()->getValue("invalid.key",Value("defaultStrValue"))
  6. 获取国家 Application::getInstance()->getCurrentLanguage() //LanguageType::CHInesE
  7. 获取国家码 Application::getInstance()->getCurrentLanguageCode() //zh

Touch 触摸绑定

  1. EventListenerTouch 触摸事件侦听
  2. EventListenerKeyboard 键盘事件侦听
  3. EventListeneracceleration 加速器事件侦听
  4. EventListenMouse 鼠标事件侦听
  5. EventListenerCustom 自定义事件侦听
  6. 回调函数
    1. lambda方式cpp11
      1. [](int x,int y) { return x + y; } // 隐式返回类型
      2. [](int& x) { ++x; } // 没有return语句 -> lambda 函数的返回类型是'void'
      3. []() { ++global_x; } // 没有参数,仅访问某个全局变量
      4. []{ ++global_x; } // 与上一个相同,省略了()
      5. [] //未定义变量.试图在Lambda内使用任何外部变量都是错误的.
      6. [x,&y] //x 按值捕获,y 按引用捕获.
      7. [&] //用到的任何外部变量都隐式按引用捕获
      8. [=] //用到的任何外部变量都隐式按值捕获
      9. [&,x] //x显式地按值捕获. 其它变量按引用捕获
      10. [=,&z] //z按引用捕获. 其它变量按值捕获
      11. 以上参考链接
      12. listener->onTouchBegan = [=](Touch* touch,Event* event){
        return true;
        };
        listener->onTouchEnded = [=](Touch* touch,Event* event){
        };
    2. CC_CALLBACK_N宏回调方式
        10.
  7. 事件侦听器派发
    1. _eventdispatcher是Node的一个属性,使用它来管理当前节点(Scene,Layer和Sprite)不同事件的分配
    2. 使用clone()方法是因为每一个事件监听器只能被添加一次
    3. 如果是固定优先值的监听器添加到一个节点(addEventListenerWithFixedPriority),那当这个节点被移除时必须同时手动移除这个监听器,但是添加场景图优先监听器到节点(addEventListenerWithSceneGraPHPriority)就不用这么麻烦,监听器和节点是绑定好的,一旦节点的析构函数被调用,监听器也会同时被移除
    4. _eventdispatcher->addEventListenerWithSceneGraPHPriority(listener1,sprite1);
      _eventdispatcher->addEventListenerWithSceneGraPHPriority(listener1->clone(),sprite2);
      _eventdispatcher->addEventListenerWithSceneGraPHPriority(listener1->clone(),sprite3);
    5. FixedPriority和SceneGraPHPriority
      1. FixedPriority 整形值。低权值的事件监听器将优于高权值的事件监听器
      2. SceneGraPHPriority Node的指针。Node的z顺序高的(绘制于顶部的)节点将优于z顺序低的节点。这将保证了诸如触碰事件的自顶向下传播
  8. 键盘

    1. `auto listener = EventListenerKeyboard::create();
      listener->onKeypressed = CC_CALLBACK_2(KeyboardTest::onKeypressed,this);
      listener->onkeyreleased = CC_CALLBACK_2(KeyboardTest::onkeyreleased,this);

    _eventdispatcher->addEventListenerWithSceneGraPHPriority(listener,this);

    // Implementation of the keyboard event callback function prototype
    void KeyboardTest::onKeypressed(EventKeyboard::KeyCode keyCode,Event* event)
    {
    log(“Key with keycode %d pressed”,keyCode);
    }

    void KeyboardTest::onkeyreleased(EventKeyboard::KeyCode keyCode,Event* event)
    {
    log(“Key with keycode %d released”,keyCode);
    } `

  9. 加速计事件

    1. `auto listener = EventListeneracceleration::create(CC_CALLBACK_2(AccelerometerTest::onacceleration,this));
      _eventdispatcher->addEventListenerWithSceneGraPHPriority(listener,this);

    // Implementation of the accelerometer callback function prototype
    void AccelerometerTest::onacceleration(acceleration* acc,Event* event)
    {
    // Processing logic here
    }`

  10. 鼠标事件(v3新增)

    1. `_mouseListener = EventListenerMouse::create();
      _mouseListener->onMouseMove = CC_CALLBACK_1(MouseTest::onMouseMove,this);
      _mouseListener->onmouseup = CC_CALLBACK_1(MouseTest::onmouseup,this);
      _mouseListener->onMouseDown = CC_CALLBACK_1(MouseTest::onMouseDown,this);
      _mouseListener->onMouseScroll = CC_CALLBACK_1(MouseTest::onMouseScroll,this);

    _eventdispatcher->addEventListenerWithSceneGraPHPriority(_mouseListener,this);`

  11. 自定义事件
    1. _listener = EventListenerCustom::create("game_custom_event1",[=](EventCustom* event){
      std::string str("Custom event 1 received,");
      char* buf = static_cast<char*>(event->getUserData());
      str += buf;
      str += " times";
      statusLabel->setString(str.c_str());
      });
      _eventdispatcher->addEventListenerWithFixedPriority(_listener,1);
    2. 事件触发
      1. static int count = 0;
        ++count;
        char* buf = new char[10];
        sprintf(buf,"%d",count);
        EventCustom event("game_custom_event1");
        event.setUserData(buf);
        _eventdispatcher->dispatchEvent(&event);
        CC_SAFE_DELETE_ARRAY(buf);
    3. 事件移除
      1. 移除单独侦听器 _eventdispatcher->removeEventListener(listener);
      2. 移除所有侦听起,如果在同一语句下新增了新的事件,那么全部删除语句并不会影响到下一步操作 _eventdispatcher->removeAllEventListeners();
  12. 创建单一事件侦听器
    1. EventListenerTouchOneByOne::create()
  13. 其他
    1. 触碰点转换为位置点
    2. Vec2 locationInNode = this->convertToNodeSpace(touch->getLocation());
    3. 检测是否点击区域
    4. Size s = target->getContentSize();
      Rect rect = Rect(0,s.width,s.height);
      if (rect.containsPoint(locationInNode))
    5. 拖动物体跟随移动
    6. auto target = static_cast<Sprite*>(event->getCurrentTarget());
      target->setPosition(target->getPosition() + touch->getDelta());
  14. 事件优先级
    1. 如果设置了优先级,那么这个触碰就和addchild层级没关系了,不设置是默认随层级走的,层级越高,越靠近camera越容易被触碰,而如果设置了优先级,不管你child层级如何,都按照指定优先级来,优先级priority是按照从小到大数字来排列先后点击的
    2. 使用优先级调用的是addEventListenerWithFixedPriority方法,所以必须手动回收
    3. //使用优先级
      _eventdispatcher->addEventListenerWithFixedPriority(listener,_fixedPriority);
      //不使用优先级
      _eventdispatcher->addEventListenerWithSceneGraPHPriority(listener,this);
  15. 移除和添加事件
    1. 移除 _eventdispatcher->removeEventListener(listener1);
    2. 移除指定类型 _eventdispatcher->removeEventListenersForType(EventListener::Type::TOUCH_ONE_BY_ONE);
    3. 添加 _eventdispatcher->addEventListenerWithSceneGraPHPriority(listener1,sprite1);
  16. 在添加事件后,对象retain并移除,再次出现时是可以继续执行触碰操作的. 给的例子来看,在隐藏后显示,未松开手指拖动,还是会直接触碰touchmove事件,这点需要注意
  17. direct事件
    1. 更新 Director::EVENT_AFTER_UPDATE
    2. 访问 Director::EVENT_AFTER_VISIT
    3. 绘制 Director::EVENT_AFTER_DRAW
    4. 投影 Director::EVENT_PROJECTION_CHANGED
    5. 通过 Director::getInstance()->getEventdispatcher() 的 addCustomEventListener 方式来添加事件
    6. 绑定函数 std::bind(&DirectorEventTest::onEvent1,std::placeholders::_1)
    7. 绑定匿名函数 [&](EventCustom *event) {}
  18. 多点触摸
    1. EventListenerTouchAllAtOnce
    2. 获得第一个点击的点 touches[0]
  19. 暂停和恢复事件
    1. 暂停
    2. _eventdispatcher->pauseEventListenersForTarget(this,true); //参数2为是否递归
    3. 恢复
    4. _eventdispatcher->resumeEventListenersForTarget(this,true); //参数2为是否递归
  20. 一次性事件 removeListenerOnTouchEnded(true); //触摸结束不再接收触摸

引擎扩展

  1. 动态下载 参照 AssetsManagerExTest 事例
  2. 滑动条 参照 CCControlSliderTest 事例
  3. 取色器 参照 ControlColourPickerTest 事例
  4. 开关 参照 ControlSwitchTest 事例
  5. 色彩文字按钮 参照 ControlButtonTest 事例
  6. 音量旋钮 参照 ControlPotentiometerTest 事例
  7. 加减按钮 参照 CCControlStepperTest 事例
  8. ccbi界面 参照 CocosBuilderTest 事例
  9. 滚动界面 参照 TableViewTest 事例
  10. 图片加密 参照 Texure Atlas Encryption 事例

材质特效

  1. 创建滤镜
    1. auto properties = Properties::createNonRefCounted("Materials/2d_effects.material#sample");
      Material *mat1 = Material::createWithProperties(properties);
  2. 模糊特效
    1. spriteBlur->setnormalizedPosition(Vec2(0.2f,0.5f));
      spriteBlur->setGLProgramState(mat1->getTechniqueByName("blur")->getpassByIndex(0)->getGLProgramState());
  3. 外发光
    1. spriteOutline->setnormalizedPosition(Vec2(0.4f,0.5f));
      spriteOutline->setGLProgramState(mat1->getTechniqueByName("outline")->getpassByIndex(0)->getGLProgramState());
  4. 噪点
    1. spriteNoise->setnormalizedPosition(Vec2(0.6f,0.5f));
      spriteNoise->setGLProgramState(mat1->getTechniqueByName("noise")->getpassByIndex(0)->getGLProgramState());
  5. 边缘检测
    7.spriteEdgeDetect->setnormalizedPosition(Vec2(0.8f,0.5f));
    spriteEdgeDetect->setGLProgramState(mat1->getTechniqueByName("edge_detect")->getpassByIndex(0)->getGLProgramState());
  6. 效果拖尾
    1. 参考 Node: MotionStreak 支持色彩和贴图拖尾
  7. 物理引擎 参考 Node: Physics / 3D
    1. 屋里引擎 关节 参考 Joints
    2. action和物理引擎的互相影响 Actions
    3. 只处理单面碰撞 One Way Platform
    4. 切割 Slice

数据存储

参考
cocos2d-x中几种存储数据的方式

向量等

参考:
总结数学类Vec2/Size/Rect

参考链接:

总结Cocos2d-x 3.x版本的一些变化

Value、Vector和Map的认识

ps: v4都出了泪奔了~~~

ValueMap的一般使用

认识 Cocos2dx 3.x的更多相关文章

  1. Html5 滚动穿透的方法

    这篇文章主要介绍了Html5 滚动穿透的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  2. HTML5 拖放(Drag 和 Drop)详解与实例代码

    本篇文章主要介绍了HTML5 拖放(Drag 和 Drop)详解与实例代码,具有一定的参考价值,有兴趣的可以了解一下

  3. 跨域修改iframe页面内容详解

    这篇文章主要介绍了跨域修改iframe页面内容详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  4. ios – Xcode找不到Alamofire,错误:没有这样的模块’Alamofire’

    我正在尝试按照github(https://github.com/Alamofire/Alamofire#cocoapods)指令将Alamofire包含在我的Swift项目中.我创建了一个新项目,导航到项目目录并运行此命令sudogeminstallcocoapods.然后我面临以下错误:搜索后我设法通过运行此命令安装cocoapodssudogeminstall-n/usr/local/bin

  5. ios – 暂停调度队列是否会暂停其目标队列?

    我想创建两个串行队列A&B.队列B是队列A的目标.我想在B上排队一些块,并暂停它直到我准备执行它们,但是我想继续在队列A上执行块.如果我暂停B,这还会暂停它的目标队列(队列A)吗?我的想法是,我想安排这些特定的块在稍后日期执行但是我不希望它们同时运行而我不这样做想要处理信号量.但我希望队列A继续处理它的块,而B则被暂停如果不清楚这里是一些示例代码解决方法queueB被挂起,但queueA未被挂起.queueA和queueB被挂起.

  6. ios – 使用CocoaPods post install hook将自定义路径添加到HEADER_SEARCH_PATHS

    解决方法在Podfile中定义一个方法:然后在post_install中调用该方法:

  7. ios – 链接点击监听器上的WKWebView?

    在WKWebView类中是否存在类似onLinkClickListener的东西?我试着谷歌搜索但没有发现任何东西,我也发现了一些关于simillar类型的stackoverflow的未解答的问题.我需要一个linkClickListener的原因是,当我点击链接并且页面尚未加载时,它不会加载网站.当页面加载了监听器时,我也可以创建一个花哨的加载屏幕.解决方法你可以这样做将WKNavigation

  8. ios – 在Swift中删除WKWebView Accesory栏

    我现在正试着将this转换成Swift而没有真正的背景.这是我到目前为止所得到的…而且我一直在寻找谷歌并不知道要搜索什么才能更具体.你能否详细说明我做错了什么?

  9. iOS,ld:framework没有找到适用于架构arm64的GoogleMaps

    Podfile看起来像这个Cocoapodsv1.0beta6):解决方法更新请检查您是否在架构中具有相同的构建设置,并仅构建活动体系结构中的目标键你的podfile应该是这样的在您启动ProjectTest目标之前结束项目目标,也是为什么添加继承!

  10. ios – 为CocoaPods的pod设置部署目标

    我使用CocoaPods来管理项目中的依赖关系.我写了Podfile:此文件与CocoaPods0.x配合使用,但在我更新到CocoaPods1.0之后,我无法编译项目.运行后我无法编译我的项目错误:/Users/

随机推荐

  1. 【cocos2d-x 3.x 学习笔记】对象内存管理

    Cocos2d-x的内存管理cocos2d-x中使用的是上面的引用计数来管理内存,但是又增加了一些自己的特色。cocos2d-x中通过Ref类来实现引用计数,所有需要实现内存自动回收的类都应该继承自Ref类。下面是Ref类的定义:在cocos2d-x中创建对象通常有两种方式:这两中方式的差异可以参见我另一篇博文“对象创建方式讨论”。在cocos2d-x中提倡使用第二种方式,为了避免误用第一种方式,一般将构造函数设为protected或private。参考资料:[1]cocos2d-x高级开发教程2.3节[

  2. 利用cocos2dx 3.2开发消灭星星六如何在cocos2dx中显示中文

    由于编码的不同,在cocos2dx中的Label控件中如果放入中文字,往往会出现乱码。为了方便使用,我把这个从文档中获取中文字的方法放在一个头文件里面Chinese.h这里的tex_vec是cocos2dx提供的一个保存文档内容的一个容器。这里给出ChineseWords,xml的格式再看看ChineseWord的实现Chinese.cpp就这样,以后在需要用到中文字的地方,就先include这个头文件然后调用ChineseWord函数,获取一串中文字符串。

  3. 利用cocos2dx 3.2开发消灭星星七关于星星的算法

    在前面,我们已经在GameLayer中利用随机数初始化了一个StarMatrix,如果还不知道怎么创建星星矩阵请回去看看而且我们也讲了整个游戏的触摸事件的派发了。

  4. cocos2dx3.x 新手打包APK注意事项!

    这个在编译的时候就可以发现了比较好弄这只是我遇到的,其他的以后遇到再补充吧。。。以前被这两个问题坑了好久

  5. 利用cocos2dx 3.2开发消灭星星八游戏的结束判断与数据控制

    如果你看完之前的,那么你基本已经拥有一个消灭星星游戏的雏形。开始把剩下的两两互不相连的星星消去。那么如何判断是GameOver还是进入下一关呢。。其实游戏数据贯穿整个游戏,包括星星消除的时候要加到获得分数上,消去剩下两两不相连的星星的时候的加分政策等,因此如果前面没有做这一块的,最好回去搞一搞。

  6. 利用cocos2dx 3.2开发消灭星星九为游戏添加一些特效

    needClear是一个flag,当游戏判断不能再继续后,这个flag变为true,开始消除剩下的星星clearSumTime是一个累加器ONE_CLEAR_TIME就是每颗星星消除的时间2.连击加分信息一般消除一次星星都会有连击信息和加多少分的信息。其实这些combo标签就是一张图片,也是通过控制其属性或者runAction来实现。源码ComboEffect.hComboEffect.cpp4.消除星星粒子效果消除星星时,为了实现星星爆裂散落的效果,使用了cocos2d提供的粒子特效引擎对于粒子特效不了

  7. 02 Cocos2D-x引擎win7环境搭建及创建项目

    官网有搭建的文章,直接转载记录。环境搭建:本文介绍如何搭建Cocos2d-x3.2版本的开发环境。项目创建:一、通过命令创建项目前面搭建好环境后,怎样创建自己的Cocos2d-x项目呢?先来看看Cocos2d-x3.2的目录吧这就是Cocos2d-x3.2的目录。输入cocosnew项目名–p包名–lcpp–d路径回车就创建成功了例如:成功后,找到这个项目打开proj.win32目录下的Hello.slnF5成功了。

  8. 利用cocos2dx 3.2开发消灭星星十为游戏添加音效项目源码分享

    一个游戏,声音也是非常的重要,其实cocos2dx里面的简单音效引擎的使用是非常简单的。我这里只不过是用一个类对所有的音效进行管理罢了。Audio.hAudio.cpp好了,本系列教程到此结束,第一次写教程如有不对请见谅或指教,谢谢大家。最后附上整个项目的源代码点击打开链接

  9. 03 Helloworld

    程序都有一个入口点,在C++就是main函数了,打开main.cpp,代码如下:123456789101112131415161718#include"main.h"#include"AppDelegate.h"#include"cocos2d.h"USING_NS_CC;intAPIENTRY_tWinMain{UNREFERENCED_ParaMETER;UNREFERENCED_ParaMETER;//createtheapplicationinstanceAppDelegateapp;return

  10. MenuItemImage*图标菜单创建注意事项

    学习cocos2dx,看的是cocos2d-x3.x手游开发实例详解,这本书错误一大把,本着探索求知勇于发现错误改正错误的精神,我跟着书上的例子一起调试,当学习到场景切换这个小节的时候,出了个错误,卡了我好几个小时。

返回
顶部