溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

[Cocos2D-X] CocoStudio Test 解密

發布時間:2020-08-01 17:54:19 來源:網絡 閱讀:9028 作者: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

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女