A. cocos creator可以設置node邊框嗎
需要兩個node ,一個做邊框,用精靈節點sprite,一個做你正常的東西
B. cocos studio怎麼導入序列帖
使用Studio2.0發布的CSB資源更換了載入方式,需要用CSLoader來載入。CSLoader在Cocos2d-x3.3RC0開始提供。以下提供的是C++的代碼,lua、js的介面是一樣的。只有一點區別:CSLoader在lua中對應cc.CSLoader在js中對應ccs.csLoader(在2d-js3.1RC0中需要做點修改)#include"ui/CocosGUI.h"//UI相關的頭文件#include"cocostudio/CocoStudio.h"//在CocosStudio.h頭文件中已經包含了Studio所需要的各個頭文件(除CocosGUI)因此我們使用Studio僅需要包含他就可以usingnamespacecocos2d;//CSLoader位於cocos2d命名空間。usingnamespacecocostudio::timeline;//動畫相關的類位於cocostuio::timeline當中voidmyScene::initFunc(){//以下是載入相關的代碼:Node*rootNode=CSLoader::createNode("MainScene.csb");//傳入Studio2.x的資源路徑this->addChild(rootNode);//假設this是即將顯示的scene//載入動畫:ActionTimeline*action=CSLoader::createTimeline("MainScene.csb");rootNode->runAction(action);//注!!!:同一個文件創建的節點只能使用同一個文件創建的動畫。//嵌套節點的動畫會自動載入動畫,可以用嵌套節點->getActionByTag(嵌套節點->getTag())來獲取動畫//播放動畫:action->gotoFrameAndPlay(0,60,true);//從第0幀到60幀循環播放。還有其他重載函數,具體看源碼。//幀事件監聽action->setFrameEventCallFunc(CC_CALLBACK_1(myScene::onFrameEvent,this));//關於CC_CALLBACK_1需要點C++11的基礎才能知道是咋回事,這里只要照著寫就行。想了解可以查下std::Bind//幀事件是可以檢測到最後一幀的事件的,已測3.6//動畫結束偵聽action->setLastFrameCallFunc(CC_CALLBACK_0(myScene::AnimationEnd,this));//可以幀聽到,親測3.6。}voidmyScene::onFrameEvent(Frame*frame)//固定的格式{EventFrame*evnt=dynamic_cast(frame);if(!evnt)return;std::stringstr=evnt->getEvent();if(str=="xxoo"){CCLOG("comeonbaby");}}voidXXX::AnimationEnd(){CCLOG("animationend");}注:1.不會看源碼的碼農不是好程序猿啊。經常有人求某個API介面,這東西查查頭文件看介面名就能知道個大概啦。源碼就是最權威的API文檔啊有木有!!!2.2.x版本Studio導出的CSB資源需要與2d-x嚴格對應(具體看這里)(估計以後會提供與2d-x解耦的方法。)3.CocosStudiov2.x假定在編輯器里邊的資源目錄即游戲的最終的目錄結構,因而如果你修改了導出資源的目錄則需要編輯器目錄也需要跟著修改。也可以用addSearchPath來把你的路徑添加到FileUtils中,但要小心文件名沖突。
C. cocosjs 可不可以將一個事件添加給多個節點
在使用時,首先創建一個事件監聽器,事件監聽器包含以下幾種:
觸摸事件 (cc.EventListenerTouch)
鍵盤響應事件 (cc.EventListenerKeyboard)
加速記錄事件 (cc.EventListenerAcceleration)
滑鼠響應事件 (cc.EventListenerMouse)
自定義事件 (cc.EventListenerCustom)
以上事件監聽器統一由 cc.eventManager 來進行管理, 它是一個單例對象。它的工作需要三部分組成:
事件管理器 cc.eventManager
事件類型 cc.EventTouch, cc.EventKeyboard 等
事件監聽器 cc.EventListenerTouch, cc.EventListenerKeyboard 等
監聽器實現了各種觸發後的邏輯,在適當時候由 事件管理器分發事件類型,然後調用相應類型的監聽器。
使用方法
現在將要實現在一個界面中添加三個按鈕,三個按鈕將會互相遮擋,並且能夠觸發觸摸事件,以下是具體實現
首先創建三個精靈,作為三個按鈕的顯示圖片
var sprite1 = cc.Sprite.create("Images/CyanSquare.png");
sprite1.x = size.width/2 - 80;
sprite1.y = size.height/2 + 80;
this.addChild(sprite1, 10);
var sprite2 = cc.Sprite.create("Images/MagentaSquare.png");
sprite2.x = size.width/2;
sprite2.y = size.height/2;
this.addChild(sprite2, 20);
var sprite3 = cc.Sprite.create("Images/YellowSquare.png");
sprite3.x = 0;
sprite3.y = 0;
sprite2.addChild(sprite3, 1);
D. cocos studio怎樣建立節點
啟動,新建一個項目:
這樣就完成項目的創建。
在編輯之前,需要先給項目提供資源,一種是把資源拖到右邊的資源列表或都在資源列表打開選擇資源對話框。
插入結果
其它資源依此類推。
項目創建會默認創建一個畫布和一個容器panel:
在正式編輯UI之前,需要先設置畫面大小,這個跟據你項目的要求設置。
下面在畫面中,填加一個圖片。很不幸,你不能從資源列表直接拖到中間的畫布上只,只能在畫布或對象列表使用右鍵,彈出右鍵菜單,添加圖片對象。
然後,用滑鼠選這個對象。在畫面的右邊,會有一個對象的屬性面板。
屬性面版有尺寸和模式、常規、控制項布局、特性。大家可以嘗試設置,就知道他的作用了。添加完成後,把具體的圖片資源拖到屬性面版->特性->文件框內,就可以了。
結果
這樣就OK了。
在屬性面板有一個Tag屬性和名子屬性要注意一下,我面在載入UI後,可以通過這兩個屬性取得UI中的這個對象。
可能調整渲染層級達到調整顯示次序的效果。
按照上面的步驟,就可以很快的做出UI了。
做完後,就需要導出UI了,Cocos2d-x是不能直接使用UI工程的,需要使用導出的。
在導出資源這塊,要注意一下,使用大圖,會把用到的資源拼成一個大圖,可以提高效率。使用小圖,則把資源的圖原樣復制過去。這個看你的取捨了。
導出完成後,把導出的目錄復制到cocos2dx工程的Resource這個目錄下面,就可以在項目中使用了。
最後在需要使用這個UI的場景,增加下面代碼:
gui::TouchGroup* ul = gui::TouchGroup::create();
ul->addWidget(GUIReader::shareReader()->widgetFromJsonFile("NewUi_1/NewUi_1.ExportJson"));
this->addChild(ul, 2);
如果要訪問這個資源,就可以通過tag來操作。 ul->getWidgetByTag(42)。注意不是ui->getChildByTag(42),這個不會遍歷所有的子節點!這樣就完成一個完全的UI操作!
E. cocos creator 中怎麼讓一個節點在一塊區域循環轉動
一個動畫只能被一個精靈綁定,要多個用同一個動畫復制一份就好了。 starFrame2->runAction((CCActionInterval*)starAction ->());
F. cocos studio 圖層和節點的區別
美術層面上:
場景文件可視為一個屏幕,不能被嵌套到其他文件中。是游戲中必不可少的元素,可用來創建關卡、菜單等。
節點文件是界面的最基本元素,一般用來存儲控制項、及製作小動畫,以便在其他類型文件中復用。
圖層文件通常包含直接在屏幕上呈現的內容,我們需要在圖層中加入精靈、文本標簽或其他游戲元素,並設置這些元素的屬性,如位置、方向和大小以及設置游戲元素的動作等。
技術層面上:
Cocos Framework的界面對象以樹形式組織。
節點(Node)是構成樹的基本元素,所有能夠被掛載到樹上的對象都必須繼承節點,包括場景和圖層對象。
場景(Scene)對象在Framework中一般作為一個界面的入口,即樹的根。
圖層(Layer),節點的擴展,能夠監聽游戲的觸摸、重力感應、鍵盤事件。
G. cocos studio 怎麼合圖
#include」CocosStudio.h「
//節點
Node* node = CSLoader::createNode("ActionTest/MainScene.csb");
this->addChild(node);
//動畫
ActionTimeline* action = CSLoader::createTimeline("ActionTest/MainScene.csb");
node->runAction(action);
action->gotoFrameAndPlay(0, true);
我大概是按這個方法寫的,,但這樣寫會提示找不到#include」CocosStudio.h「 ,,然後,我把它改成#include"editor-support/cocostudio/ActionTimeline/CSLoader.h"
會在這個地方提示錯誤
ActionTimeline* action = CSLoader::createTimeline("ActionTest/MainScene.csb");
node->runAction(action);
H. ccscale9sprite怎麼替換 cocos
Scale9Sprite 這個庫呢,你是只引用了頭文件,沒有編譯相應的cpp代碼。所以你還是要添加 libExtensions.lib,裡面有代碼。或者呢,可以把Scale9Sprite相關的代碼都加到自己的工程里,自己編譯。
I. 如何使用Cocos Studio導出的LUA文件
首先導出的LUA文件是這樣的
這段代碼,首先判斷callBackProvider是否為空,然後呢,將他的返回值設置為Button_1的Click回調函數。
這樣就很明白了。create時候需要傳入的參數callBackProvider是一個函數,他的功能是根據傳入的3個參數進行判斷,最終返回一個函數最為Button(或者其他node)的回調函數!
callBackProvider的三個參數,分別是,當前LUA文件的路徑,所綁定的Node(可以通過name或者tag來判斷是哪個node),最後是回調函數的名字,通過這三個參數可以很容易的知道是哪個按鈕的回調事件,從而返回該按鈕所需要的回調函數。
所以,在create時候應該是這樣的:
localcallBackProvider=function(path,node,funcName)
ifpath=="Scene.lua"andnode:getName()=="Button_1"andfuncName=="bnt2"then
localfunctionbtnCallback(node,eventType)
--TODO
end
returnbtnCallback
end
end
localcsLuaScene=require("Scene.lua").create(callBackProvider)
也許大家看第一篇文章時候,注意到 我這里提示了一個錯誤,版本不兼容。是時候更新到3.5了!如果不想更新的話,就把3.5的UI的部分替換過來吧………