温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

[Cocos2D-X] CocoStudio Test 解密

发布时间:2020-08-01 17:54:19 来源:网络 阅读:9014 作者:s13039962531 栏目:游戏开发

CocoStudio Test 解密

    昨天,上传了官方更新的 CocoStudio Test。今天看了下,CocoStudio 的功能还真是我们现在所需要的,因为是第一版嘛,瑕疵是在所难免的。不过还是很期待这个工具未来会有多强大。好了,废话少说,今天我们来介绍下 Test 中所用到的 CocoStudio 代码。

    工程昨天我已经上传完毕了,地址:http://down.51cto.com/data/751925

    下载完毕解压到任意位置。我们会看到下图,我们打开CocoStuioTestCPP.sln

                      

                         [Cocos2D-X] CocoStudio Test 解密

    这个工程最低需要 VS2010 所以,还在坚守 2008 的同学们要熟悉一下新工具了。打开后,我们会发现下图,而我们需要用到的是红框内的工程。

                           [Cocos2D-X] CocoStudio Test 解密

    我们可以试着先运行下。

          [Cocos2D-X] CocoStudio Test 解密

    很有爱的 Test,是不是很流畅,大家可以试着动动界面上的控件,这里我就不做过多介绍了哈,我们今天的目的是要知道,如何去加载这些东西。

    我们点开source,然后打开其中的HelloWorldScene.cpp,Test 中进行操作的代码全部都在这里了。

    下面,我们来看一下HelloWorldScene 中的 init() 方法。

    if ( !CCLayer::init())
    {
        return false;   //这句就不介绍了哈,大家都懂。不懂先去学习Cococs2D-X吧。
    }

  1. //初始化CocoStudioUI模块  
  2. COCOUISYSTEM->init();  
  3.      
  4. //设置根Layer  
  5. COCOUISYSTEM->resetSystem(this); 
  6. //利用根Layer Scene配置json 1 还有是否开启高清模式.来初始化一个场景 
  7. COCOUISYSTEM->replaceUISceneWithFile(this"CocoGUISample.json", 1, true);  

    这里就是用来初始化我们的COCO模块。注释可能是根据个人理解哈,不懂的同学可以留言。这里其实有个不影响运行的BUG 其实第二句代码是可以去掉的,因为第三句中,也进行了一次这样的操作,不知道是不是大拿们太辛苦给遗漏了。

  1. //创建一个CocoButton 
  2. CocoGUI::CocoButton* closeButton =CocoGUI::CocoButton::create();   
  3. //为CocoButton指定贴图 
  4. closeButton->setTextures("CloseNormal.png""CloseSelected.png"""); 
  5. //设置位置 
  6. closeButton->setPosition(ccp(430, 40));    
  7. //设置按钮是否可以触摸 
  8. closeButton->setBeTouchAble(true);  
  9. //添加按钮弹起时的事件 
  10. closeButton->addReleaseEvent((CCObject*)this, coco_releaseselector(HelloWorld::menuCloseCallback)); 
  11. //把这个按钮添加到当前场景中 
  12. COCOUISYSTEM->getCurScene()->addWidget(closeButton); 

    这段代码,就是如何在程序中创建一个CocoStduio的控件,这里是创建的Button,在下面又给他指定了相应的事件相应方法。

  1. //获得ScrollView这个对象 
  2. CocoGUI::CocoScrollView* sc = (CocoGUI::CocoScrollView*)(COCOUISYSTEM->checkWidgetByName(COCOUISYSTEM->getCurScene()->getRootWidget(), "scrollview")); 
  3. //开启更新 就是滑动后惯性滑动 
  4. sc->setUpdateEnable(true); 

    这里我们就可以用代码,来获取界面上的控件,来对他们操作了。这一点比CocosBuilder犀利多了吧。

  1. //获得scrollview上面的返回按钮 
  2. CocoGUI::CocoTextButton* bt = (CocoGUI::CocoTextButton*)(COCOUISYSTEM->checkWidgetByName(COCOUISYSTEM->getCurScene()->getRootWidget(), "backtotopbutton")); 
  3. //添加按钮抬起事件 
  4. bt->addReleaseEvent(this 
  5. ,coco_releaseselector(HelloWorld::backToTop)); 
  1. //获得滑动条 
  2. CocoGUI::CocoSlider* sld = (CocoGUI::CocoSlider*)(COCOUISYSTEM->checkWidgetByName(COCOUISYSTEM->getCurScene()->getRootWidget(), "slider")); 
  3. //指定滑动条值改变的时候调用的方法 
  4. sld->addPercentChangedEvent(this, coco_percentchangedselector(HelloWorld::sliderPercentChanged)); 
  5. //获得点击可以播放动画的按钮 
  6. CocoGUI::CocoButton* anib = (CocoGUI::CocoButton*)(COCOUISYSTEM->checkWidgetByName(COCOUISYSTEM->getCurScene()->getRootWidget(), "animationbutton")); 
  7. //设置他的抬起事件 
  8. anib->addReleaseEvent(this, coco_releaseselector(HelloWorld::playUIAnimation)); 

    大家发现了,按钮事件的包装方法是不一样的。所以,这里大家要注意,控件不好使的时候先检查下你事件的包装方法

  1. //利用layer来初始化BatchNodeManager Layer名为"TEST_LAYER1"  
  2. cs::BatchNodeManager::sharedBatchNodeManager()->initWithLayer(this"TEST_LAYER");     
  3. //利用动画名,已经存在的信息,图片路径,plist文件的路径,还有动画的配置json 来添加一个动画到动画数据管理器中    
  4. cs::ArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfo("TestBone""""TestBone0.png""TestBone0.plist""TestBone.json");  
  5. //利用之前加载的TestBone.json (其中包含动画名) 然后用这个动画名进行初始化.  
  6. armature = cs::Armature::create("TestBone");  
  7. //使用文件中动画序列编号  
  8. armature->getAnimation()->playByIndex(0);    
  9. //缩放比例  
  10. armature->setScale(0.35);    
  11. //设置放置的位置  
  12. armature->setPosition(300, 0);    
  13. //添加到界面上  
  14. addChild(armature);  

    这个就是加载那个会动的牛仔,这个牛仔是用骨骼动画做的,我们终于可以不用那蛋疼的序列帧了。

    好了,Test中加载的代码就介绍到这里,有一些功能还需要自己去理解,自己去实践。虽然,这个工具现在有很多BUG,但是,我们还是可以看见它的强大之处的,希望大拿们会在日后慢慢修复这些问题,也感谢触控的无私奉献。

    CocoStudio 讨论学习群:141444261

    Cocos2D-X  讨论学习群:244959010

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI