日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数组与字符串三(Cocos2d-x 3.x _Array容器)

發(fā)布時(shí)間:2025/4/16 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数组与字符串三(Cocos2d-x 3.x _Array容器) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  "程序=數(shù)據(jù)結(jié)構(gòu)+算法"

在面向?qū)ο蟮恼Z言中,諸如數(shù)組、堆棧、隊(duì)列等的結(jié)構(gòu)都被封裝成了特定的類,按照特定數(shù)據(jù)結(jié)構(gòu)的算法設(shè)計(jì)起來,這就是容器類。

Cocos2d-x中,能使用的容器類:C++標(biāo)準(zhǔn)容器類、Cocos2d-x中定義的容器類。其中,列表容器類包括:_Array、Vector<T>和ValueVector;字典容器包括:_Dictionary、Map<K,V>、ValueMap和ValueMapIntKey。

_Array 繼承于Ref類,(2.x版本中是CCArray),通過引用計(jì)數(shù)管理內(nèi)存。容納的是Ref及子類所創(chuàng)建的對(duì)象指針。

實(shí)現(xiàn): 點(diǎn)擊按鈕,響應(yīng)事件為創(chuàng)建100個(gè)精靈。

主要實(shí)現(xiàn)代碼:

1、在Helloworld.h文件中聲明

#define MAX_COUNT 100??

即,所用到的_Array容器創(chuàng)建的成員變量的起始容量的值

2、在Helloworld.cpp文件中,

//增加菜單項(xiàng) 點(diǎn)擊之后出現(xiàn)精靈
?auto goItem = MenuItemImage::create(
??"go-down.png",
??"go-up.png",
??CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));
?//設(shè)置菜單圖片的位置
?goItem->setPosition(Vec2(origin.x + visibleSize.width - goItem->getContentSize().width/2 ,
??origin.y + goItem->getContentSize().height/2));

?auto menu = Menu::create(goItem, NULL);
?menu->setPosition(Vec2::ZERO);
?this->addChild(menu, 1);

?//創(chuàng)建 _Array* 類型的變量list,參數(shù)為它的初始容量
?this->list? = __Array::createWithCapacity(MAX_COUNT);
?//list的創(chuàng)建是通過靜態(tài)方法創(chuàng)建,如果不調(diào)用retain函數(shù),當(dāng)init函數(shù)結(jié)束時(shí),會(huì)自動(dòng)釋放,當(dāng)別的函數(shù)中再使用list時(shí),就會(huì)報(bào)錯(cuò)
?this->list->retain();

?//所要?jiǎng)?chuàng)建精靈的個(gè)數(shù)
?for(int i = 0;i < MAX_COUNT; ++i){
??Sprite* sprite = Sprite::create("Ball.png");
??this->list->addObject(sprite);

//觸摸菜單圖標(biāo)后觸發(fā)的函數(shù)
void HelloWorld::menuCloseCallback(Ref* pSender)
{
?Ref* obj = nullptr;
?log("list->count() = %d",this->list->count());
?Size visibleSize = Director::getInstance()->getVisibleSize();
?//循環(huán)遍歷 容器中的數(shù)據(jù)
?CCARRAY_FOREACH(this->list, obj) {
?//獲得精靈對(duì)象?
??Sprite* sprite = (Sprite*)obj;
??//隨機(jī)生成精靈的x、y坐標(biāo)
??int x = CCRANDOM_0_1() * visibleSize.width;
??int y = CCRANDOM_0_1() * visibleSize.height;

??sprite->setPosition( Vec2(x, y) );
??this->removeChild(sprite);
??this->addChild(sprite);
?}

}

HelloWorld::~HelloWorld()
{
?//前面說過手動(dòng)設(shè)置保持list的內(nèi)存,現(xiàn)在要手動(dòng)釋放
?//釋放list里面的所有對(duì)象
?this->list->removeAllObjects();
?//釋放list容器對(duì)象
?CC_SAFE_RELEASE_NULL(this->list);
}

結(jié)果:

?

轉(zhuǎn)載于:https://www.cnblogs.com/revenge/p/6089302.html

總結(jié)

以上是生活随笔為你收集整理的数组与字符串三(Cocos2d-x 3.x _Array容器)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。