[Cocos2D-X] CocoStudio Test 解密

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吧。
    }

  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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章