昨天,上传了官方更新的 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();
- //设置根Layer
- COCOUISYSTEM->resetSystem(this);
- //利用根Layer Scene配置json 1 还有是否开启高清模式.来初始化一个场景
- COCOUISYSTEM->replaceUISceneWithFile(this, "CocoGUISample.json", 1, true);
这里就是用来初始化我们的COCO模块。注释可能是根据个人理解哈,不懂的同学可以留言。这里其实有个不影响运行的BUG 其实第二句代码是可以去掉的,因为第三句中,也进行了一次这样的操作,不知道是不是大拿们太辛苦给遗漏了。
- //创建一个CocoButton
- CocoGUI::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来初始化BatchNodeManager Layer名为"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
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。