CocoStudio Test 解密

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

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

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

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

我们可以试着先运行下。

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

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

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

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

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

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

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

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

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

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

//获得scrollview上面的返回按钮CocoGUI::CocoTextButton*bt=(CocoGUI::CocoTextButton*)(COCOUISYSTEM->checkWidgetByName(COCOUISYSTEM->getCurScene()->getRootWidget(),"backtotopbutton"));//添加按钮抬起事件bt->addReleaseEvent(this,coco_releaseselector(HelloWorld::backToTop));

//获得滑动条CocoGUI::CocoSlider*sld=(CocoGUI::CocoSlider*)(COCOUISYSTEM->checkWidgetByName(COCOUISYSTEM->getCurScene()->getRootWidget(),"slider"));//指定滑动条值改变的时候调用的方法sld->addPercentChangedEvent(this,coco_percentchangedselector(HelloWorld::sliderPercentChanged));//获得点击可以播放动画的按钮CocoGUI::CocoButton*anib=(CocoGUI::CocoButton*)(COCOUISYSTEM->checkWidgetByName(COCOUISYSTEM->getCurScene()->getRootWidget(),"animationbutton"));//设置他的抬起事件anib->addReleaseEvent(this,coco_releaseselector(HelloWorld::playUIAnimation));

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

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

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

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

CocoStudio 讨论学习群:141444261

Cocos2D-X 讨论学习群:244959010