cocos2dx 音频-x3.11.1怎么载入音频

#include &cocos2d.h&#include &extensions/cocos-ext.h&//包含TableView的头文件#include &ItemAdapter.h&//适配类USING_NS_CC;//事件回调函数typedef std::function&void(Ref*,cocos2d::ui::Widget::TouchEventType)& menuCallB//继承类class MenuTableView : public cocos2d::Layer, public cocos2d::extension::TableViewDataSource, public cocos2d::extension::TableViewDelegate{public: CREATE_FUNC(MenuTableView); virtual bool init();
virtual void scrollViewDidScroll(cocos2d::extension::ScrollView* view) {};//滑动 virtual void scrollViewDidZoom(cocos2d::extension::ScrollView* view) {};//放大 virtual void tableCellTouched(cocos2d::extension::TableView* table, cocos2d::extension::TableViewCell* cell);//触摸事件 virtual cocos2d::Size tableCellSizeForIndex(cocos2d::extension::TableView *table, ssize_t idx);//Cell大小 virtual cocos2d::extension::TableViewCell* tableCellAtIndex(cocos2d::extension::TableView *table, ssize_t idx);//添加Cell virtual ssize_t numberOfCellsInTableView(cocos2d::extension::TableView *table);//设置Cell个数 void touchEvent(cocos2d::Ref *pSender, cocos2d::ui::Widget::TouchEventType type);//触摸事件 void addMenuTouchEvent(const menuCallBack& callback);//回调函数
Size winS cocos2d::Ref* _pS cocos2d::ui::Widget::TouchEventType _ menuCallBack _menuCallB
std::vector&std::string& std::vector&std::string& itemI};#include &MenuTableView.h&#include &ui/CocosGUI.h&#include &HomeLayer.h&USING_NS_CC;USING_NS_CC_EXT;//包含cocos-ext.h头文件的声明bool MenuTableView::init(){ bool bRet = do {
CC_BREAK_IF(!Layer::init());
log(&MenuTableView&);
//item must be defined first//设置Item名称和背景
item.push_back(&进度&);
item.push_back(&同比&);
item.push_back(&环比&);
item.push_back(&产品线&);
item.push_back(&排名&);
itemIcon.push_back(&home_list_bg_jindu.png&);
itemIcon.push_back(&home_list_bg_tongbi.png&);
itemIcon.push_back(&home_list_bg_huanbi.png&);
itemIcon.push_back(&home_list_bg_chanpinxian-.png&);
itemIcon.push_back(&home_list_bg_paiming-.png&);
winSize = Director::getInstance()-&getWinSize();
//创建TableView对象
TableView* tableView = TableView::create(this,Size(winSize.width,winSize.height*6/7));
tableView-&setDirection(cocos2d::extension::ScrollView::Direction::VERTICAL);//设置TableView方向
tableView-&ignoreAnchorPointForPosition(false);
tableView-&setAnchorPoint(Vec2::ZERO);//设置锚点
tableView-&setPosition(Vec2::ZERO);//设置位置
tableView-&setVerticalFillOrder(TableView::VerticalFillOrder::TOP_DOWN);//设置TableView的属性
tableView-&setDelegate(this);//设置委托
this-&addChild(tableView);
tableView-&reloadData();//更新数据
this-&setTouchEnabled(true);//可触摸
bRet = }while(0); return bR}//Item触摸事件void MenuTableView::tableCellTouched(cocos2d::extension::TableView *table, cocos2d::extension::TableViewCell *cell){ log(&cell touched at index %zd&, cell-&getIdx());}//设置Cell大小Size MenuTableView::tableCellSizeForIndex(cocos2d::extension::TableView *table, ssize_t idx){ return Size(winSize.width,winSize.height/6);}//添加CellTableViewCell* MenuTableView::tableCellAtIndex(cocos2d::extension::TableView *table, ssize_t idx){ TableViewCell* cell = table-&dequeueCell(); if(!cell) {
cell = new TableViewCell();
cell-&autorelease(); } cell-&removeAllChildrenWithCleanup(true); log(&idx = %zd&,idx);
auto menu = ItemAdapter::create();//适配类 menu-&itemIcon-&loadTexture(itemIcon.at(idx));//添加Icon menu-&itemName-&setString(item.at(idx));//添加Text menu-&touchBtn-&setTag(10+idx);
menu-&setContentSize(Size(winSize.width,winSize.height/8));//设置视图大小 log(&menu.width = %lf,menu.height = %lf&,menu-&getContentSize().width,menu-&getContentSize().height);
menu-&setSize(Size(winSize.width,winSize.height/8));//设置大小 menu-&setLayoutType(cocos2d::ui::Layout::Type::RELATIVE);//设置布局类型 menu-&ignoreAnchorPointForPosition(false); menu-&setAnchorPoint(Vec2::ZERO);//设置锚点 menu-&touchBtn-&addTouchEventListener(CC_CALLBACK_2(MenuTableView::touchEvent, this));//设置Item触摸事件 cell-&addChild(menu); }//设置Cell个数ssize_t MenuTableView::numberOfCellsInTableView(cocos2d::extension::TableView *table){ return 5;}void MenuTableView::touchEvent(cocos2d::Ref *pSender, cocos2d::ui::Widget::TouchEventType type)//回调函数,执行HelloWorld.cpp的touch事件{ if(_menuCallBack)
_menuCallBack(pSender,type);}//给_menuCallBack赋值,callback是HelloWorld.cpp中的touchEvent事件void MenuTableView::addMenuTouchEvent(const menuCallBack &callback){ _menuCallBack =}2、工具类:适配#include &cocos2d.h&#include &ui/CocosGUI.h&USING_NS_CC;class ItemAdapter : public Layout{public: CREATE_FUNC(ItemAdapter); virtual bool init();
void touchEvent(cocos2d::Ref *pSender, cocos2d::ui::Widget::TouchEventType type);
ui::Text* itemN ui::ImageView* itemI ui::ImageView* bgI ui::Button* touchB};#include &ItemAdapter.h&#include &VisibleRect.h&bool ItemAdapter::init(){bool bRet =do { CC_BREAK_IF(!Layout::init()); auto winSize = Director::getInstance()-&getWinSize(); itemIcon = ui::ImageView::create();//Icon itemIcon-&setScaleY(VisibleRect::getImageScaleY()); itemIcon-&setScaleX(VisibleRect::getImageScale()); itemIcon-&ignoreAnchorPointForPosition(false); itemIcon-&setAnchorPoint(Vec2(0.5,0.5));// itemIcon-&setPosition(VisibleRect::center());
auto rIcon = RelativeLayoutParameter::create(); rIcon-&setAlign(cocos2d::ui::RelativeLayoutParameter::RelativeAlign::CENTER_IN_PARENT); itemIcon-&setLayoutParameter(rIcon); addChild(itemIcon);
itemName = ui::Text::create();//Text itemName-&ignoreAnchorPointForPosition(false); itemName-&setAnchorPoint(Vec2(0.5,0.5)); itemName-&setFontSize(80 * VisibleRect::getImageScale()); itemName-&setColor(Color3B(128,128,128));
auto rprogress = RelativeLayoutParameter::create(); rprogress-&setAlign(cocos2d::ui::RelativeLayoutParameter::RelativeAlign::PARENT_LEFT_CENTER_VERTICAL); rprogress-&setMargin(Margin(90*VisibleRect::getImageScale(),0,0,0)); itemName-&setLayoutParameter(rprogress); addChild(itemName);
bgImage = ui::ImageView::create(&home_list_jiantou.png&); bgImage-&setScaleY(VisibleRect::getImageScaleY()); bgImage-&setScaleX(VisibleRect::getImageScale()); bgImage-&ignoreAnchorPointForPosition(false);// into-&setTag(PrograssBtn_Tag+i); bgImage-&setAnchorPoint(Vec2(0.5,0.5));
auto rinto = RelativeLayoutParameter::create(); rinto-&setAlign(cocos2d::ui::RelativeLayoutParameter::RelativeAlign::PARENT_RIGHT_CENTER_VERTICAL); rinto-&setMargin(Margin(0,0,90*VisibleRect::getImageScale(),0)); bgImage-&setLayoutParameter(rinto); addChild(bgImage,0);
auto stencil = ui::ImageView::create(&home_list_bg_jindu.png&);
touchBtn = Button::create(&touming.png&); log(&itemsize.w = %lf,itemsize.h = %lf&,stencil-&getSize().width,stencil-&getSize().height ); log(&touchBtn.x = %lf,touchBtn.y = %lf&,touchBtn-&getSize().width,touchBtn-&getSize().height ); auto width = stencil-&getSize().width * VisibleRect::getImageScale(); auto height = stencil-&getSize().height * VisibleRect::getImageScaleY();
touchBtn-&setScaleX(width / touchBtn-&getSize().width); touchBtn-&setScaleY(height / touchBtn-&getSize().height); touchBtn-&ignoreAnchorPointForPosition(false); // into-&setTag(PrograssBtn_Tag+i); touchBtn-&setAnchorPoint(Vec2(0.5,0.5)); // touchBtn-&setEnabled(true);
auto rtouchBtn = RelativeLayoutParameter::create(); rtouchBtn-&setAlign(cocos2d::ui::RelativeLayoutParameter::RelativeAlign::CENTER_IN_PARENT); rtouchBtn-&setMargin(Margin(0,0,0,0)); touchBtn-&setLayoutParameter(rtouchBtn); addChild(touchBtn,1);
bRet =}while(0);return bR}HelloWorld.cpp中添加如下代码auto menuTableView = MenuListView::create(); menuTableView-&ignoreAnchorPointForPosition(false); menuTableView-&setAnchorPoint(Vec2::ZERO); menuTableView-&setContentSize(Size(winSize.width, winSize.height/7*6)); menuTableView-&setPosition(Vec2::ZERO); addChild(menuTableView);
menuTableView-&addMenuTouchEvent(CC_CALLBACK_2(HomeWorld::touchEvent,this));void HomeLayer::touchEvent(Ref *pSender,cocos2d::ui::Widget::TouchEventType type){ auto* btn = dynamic_cast&ui::ImageView*&( pSender); switch (type) {
case cocos2d::ui::Widget::TouchEventType::ENDED:
switch (btn-&getTag()) {
case DayReport_Tag:
case PrograssBtn_Tag:
case SameBtnCompare_Tag:
{&pre name=&code& class=&cpp&&
log(&3&);} case RingCompare_Tag: {log(&4&);} case ProductLine_Tag: {log(&5&);} default: } } default: }}Cocos2d-x环境搭建-W...
之前教程用的是cocos2d-x3.0版的,我们现在下的3.1版本建立不来工程啊。。。cocos2d-x-3.1.1toolscocos2d-consolebincocos 双击打开之后是一个一闪而过的dos界面,视频里的那种输入类名,地址的UI都没有
解决了,还是用dos自己写了一遍,但是用VS2010编译时候报错 fatal error C1083: 无法打开包括文件:“thread”: No such file or directoryfatal error C1083: 无法打开包括文件:“mutex”: No such file or directoryerror C2236: 意外的“class”“cocos2d::LanguageType”。是否忘记了“;”?2&F:cocos2d_exHelloCCcocos2dcocosplatform/CCCommon.h(52): error C3381: “cocos2d::LanguageType”: 只有在用 /clr 选项编译的代码中才有程序集访问说明符2&F:cocos2d_exHelloCCcocos2dcocosplatform/CCCommon.h(53): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int2&F:cocos2d_exHelloCCcocos2dcocosplatform/CCCommon.h(53): error C2864: “cocos2d::LanguageType::ENGLISH”: 只有静态常量整型数据成员才可以在类中初始化2&F:cocos2d_exHelloCCcocos2dcocosplatform/CCCommon.h(54): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int如果换成VS2012就不会有问题了吗?
Cocos2d-x环境搭建-W...
服务热线:400-678-8266Cocos2d-x3.1 HttpClient封装与使用 - 推酷
Cocos2d-x3.1 HttpClient封装与使用
1、首先给出封装后的工具类:HttpManager
#include &cocos2d.h&
#include &../cocos2d/extensions/cocos-ext.h&
#include &network/HttpClient.h&
USING_NS_CC;
USING_NS_CC_EXT;
HTTPManagerDelegate
virtual void onHttpManagerRequestCompleted(cocos2d::network::HttpClient *sender, cocos2d::network::HttpResponse *response) = 0;
class HTTPManager:public Ref
HTTPManager();
~HTTPManager();
CC_SYNTHESIZE(HTTPManagerDelegate*, _httpManagerDelegate, HttpDelegate);
//Http Response Callback
void onHttpRequestCompleted(cocos2d::network::HttpClient *sender, cocos2d::network::HttpResponse *response);
void getFormData(std::string parameter);
void sendGetRequest(std::string url,std::string requestTag);
void writeFileFromRequest(cocos2d::network::HttpResponse *response,std::string filename);
typedef std::function&void(cocos2d::network::HttpClient *sender, cocos2d::network::HttpResponse *response)& ccHttpManagerC
void addHttpListener(ccHttpManagerCallback& callback);
ccHttpManagerCallback _eventC
#include &HTTPManager.h&
#include &iostream&
//#include &../UnZip/DJZipArchive.h&
#define HTTPHeader &.cn/QrDmzBastionNB/BastionServlet&
HTTPManager::HTTPManager()
HTTPManager::~HTTPManager()
void HTTPManager::sendGetRequest(std::string url,std::string requestTag)
HttpRequest* request = new HttpRequest();//使用HttpRequest无参的构造函数,提供了一个很好的默认设置
request-&setRequestType(cocos2d::network::HttpRequest::Type::GET);//设置连接方式,常用GET和POST
request-&setUrl(url.c_str());//设置连接地址
//设置回调,在onHttpRequestCompleted中读取数据
request-&setResponseCallback(CC_CALLBACK_2(HTTPManager::onHttpRequestCompleted, this));
request-&setTag(requestTag.c_str());//设置Tag
network::HttpClient::getInstance()-&send(request);//添加到HttpClient任务队列
request-&release();//释放连接
void HTTPManager::getFormData(std::string parameter)
HttpRequest* request = new HttpRequest();
request-&setUrl(HTTPHeader);
request-&setRequestType(HttpRequest::Type::POST);
request-&setResponseCallback(CC_CALLBACK_2(HTTPManager::onHttpRequestCompleted, this));
//write the post data
const char* postData = StringUtils::format(&parameter=%s&,parameter.c_str()).c_str();
log(&postData = %s&,postData);
request-&setRequestData(postData, strlen(postData));
request-&setTag(&getFormData&);
log(&url = %s&,request-&getUrl());
HttpClient::getInstance()-&send(request);
request-&release();
void HTTPManager::onHttpRequestCompleted(cocos2d::network::HttpClient *sender, cocos2d::network::HttpResponse *response)
if (!response) {
if (0 != strlen(response-&getHttpRequest()-&getTag())) {
log(&%s compeled&,response-&getHttpRequest()-&getTag());
long statusCode = response-&getResponseCode();
char statusString[64] = {};
sprintf(statusString, &HTTP Status Code:%ld , tag = %s&,statusCode,response-&getHttpRequest()-&getTag());
log(&response code:%s&,statusString);
if (!response-&isSucceed()) {
log(&response failed&);
log(&error buffer:%s&,response-&getErrorBuffer());
if (_httpManagerDelegate) {
_httpManagerDelegate-&onHttpManagerRequestCompleted(sender, response);
const char* resTag = response-&getHttpRequest()-&getTag();
void HTTPManager::writeFileFromRequest(cocos2d::network::HttpResponse *response,std::string filename)
std::vector&char&* buffer = response-&getResponseData();
printf(&Http Test,dump data:&);
std::string path= FileUtils::getInstance()-&getWritablePath();
std::string fullPath =
FILE* fp = fopen(fullPath.c_str(), &wb&);
log(&将文件写入本地 %s&,fullPath.c_str());
for (unsigned int i
= 0; i & buffer-&size(); i++) {
bf = buffer-&at(i);
fwrite(&bf, 1, 1, fp);
fclose(fp);
void HTTPManager::addHttpListener(ccHttpManagerCallback &callback)
_eventCallback =
为提高代码可用性,此处一些方法接口并没用到,但是以防以后用到,还是贴了出来,下面看看使用实例。
2、使用实例
使用类需继承HttpManagerDelegate,用来委托事件。
#include &cocos2d.h&
#include &HTTPManager.h&
USING_NS_CC;
class HelloWorld : public cocos2d::Layer,public HTTPManagerDelegate
// there's no 'id' in cpp, so we recommend returning the class instance pointer
static cocos2d::Scene* createScene();
// Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
virtual bool init();
// a selector callback
void menuCloseCallback(cocos2d::Ref* pSender);
virtual void onHttpManagerRequestCompleted(cocos2d::network::HttpClient *sender, cocos2d::network::HttpResponse *response) ;
void writeFileFromRequest(cocos2d::network::HttpResponse *response,std::string filename);
// implement the &static create()& method manually
CREATE_FUNC(HelloWorld);
#include &HelloWorldScene.h&
#include &HTTPManager.h&
USING_NS_CC;
Scene* HelloWorld::createScene()
// 'scene' is an autorelease object
auto scene = Scene::create();
// 'layer' is an autorelease object
auto layer = HelloWorld::create();
// add layer as a child to scene
scene-&addChild(layer);
// return the scene
// on &init& you need to initialize your instance
bool HelloWorld::init()
//////////////////////////////
// 1. super init first
if ( !Layer::init() )
Size visibleSize = Director::getInstance()-&getVisibleSize();
Vec2 origin = Director::getInstance()-&getVisibleOrigin();
/////////////////////////////
// 2. add a menu item with &X& image, which is clicked to quit the program
// you may modify it.
// add a &close& icon to exit the progress. it's an autorelease object
auto closeItem = MenuItemImage::create(
&CloseNormal.png&,
&CloseSelected.png&,
CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));
closeItem-&setPosition(Vec2(origin.x + visibleSize.width - closeItem-&getContentSize().width/2 ,
origin.y + closeItem-&getContentSize().height/2));
// create menu, it's an autorelease object
auto menu = Menu::create(closeItem, NULL);
menu-&setPosition(Vec2::ZERO);
this-&addChild(menu, 1);
auto httpManager = new HTTPManager();
httpManager-&retain();
httpManager-&setHttpDelegate(this);
httpManager-&sendGetRequest(&localhost:8080/qwe.json&, &update_time&);
void HelloWorld::onHttpManagerRequestCompleted(cocos2d::network::HttpClient *sender, cocos2d::network::HttpResponse *response)
if (strcmp(response-&getHttpRequest()-&getTag(), &update_time&) == 0)
writeFileFromRequest(response,&qwe.json&);
log(&下载更新包&);
std::string version = &version&;
std::string table = &version&;
if (!(strcmp(version.c_str(), table.c_str()) == 0))
log(&下载更新包&);
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
if (strcmp(response-&getHttpRequest()-&getTag(), &update_mobile&) == 0)
log(&update_mobile&);
void HelloWorld::writeFileFromRequest(cocos2d::network::HttpResponse *response,std::string filename)
std::vector&char&* buffer = response-&getResponseData();
printf(&Http Test,dump data:&);
std::string path= FileUtils::getInstance()-&getWritablePath();
std::string fullPath =
FILE* fp = fopen(fullPath.c_str(), &wb&);
log(&将文件写入本地 %s&,fullPath.c_str());
// auto size = buffer-&size();
// unsigned char bf[size];
// fwrite(bf, size, 1, fp);
for (unsigned int i
= 0; i & buffer-&size(); i++) {
bf = buffer-&at(i);
fwrite(&bf, 1, 1, fp);
fclose(fp);
void HelloWorld::menuCloseCallback(Ref* pSender)
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT)
MessageBox(&You pressed the close button. Windows Store Apps do not implement a close button.&,&Alert&);
Director::getInstance()-&end();
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
只要继承HttpManagerDelegate委托,即可实现函数的回调。关于函数的委托回调,前面有研究。
(1)设置两个参数setHttpManagerDelegate(this),方便回调该HelloWorld类的onHttpManagerRequestCompleted函数
(2)设置setGetRequest();第一个参数是URL,第二个是Tag。
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致cocos2d-x3.1.1的软件 在win7下装了vs2012,然后用vs打开了cocos2d目录下的cocos2d-_百度知道

我要回帖

更多关于 cocos2d x3.13安装 的文章

 

随机推荐