-
-
Save qrw/5788210 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "HelloWorldScene.h" | |
#include "SimpleAudioEngine.h" | |
using namespace cocos2d; | |
using namespace CocosDenshion; | |
CCScene* HelloWorld::scene() | |
{ | |
CCScene *scene = CCScene::create(); | |
HelloWorld *layer = HelloWorld::create(); | |
scene->addChild(layer); | |
return scene; | |
} | |
bool HelloWorld::init() | |
{ | |
if ( !CCLayer::init() ) | |
{ | |
return false; | |
} | |
srand((unsigned)time(NULL)); | |
//usingSprite(); | |
//usingSpriteFrameCache(); | |
//usingTextureCache(); | |
usingTextureCache2(); | |
return true; | |
} | |
void HelloWorld::usingSprite() | |
{ | |
CCSize winSize = CCDirector::sharedDirector()->getWinSize(); | |
start = clock(); | |
for (int i = 0; i < 100; i++) { | |
int random = rand(); | |
// ふつうの表示 | |
CCString* fileName = CCString::createWithFormat("cat%02d.png", i); | |
CCSprite* cat = CCSprite::create(fileName->getCString()); | |
cat->setPosition(ccp(random % (int)winSize.width, | |
random % (int)winSize.height)); | |
this->addChild(cat); | |
} | |
CCLog("%f", (double)(clock() - start) / CLOCKS_PER_SEC); | |
} | |
void HelloWorld::usingSpriteFrameCache() | |
{ | |
CCSize winSize = CCDirector::sharedDirector()->getWinSize(); | |
start = clock(); | |
// キャッシュへ読込み | |
CCSpriteFrameCache* cache = CCSpriteFrameCache::sharedSpriteFrameCache(); | |
cache->addSpriteFramesWithFile("cats1.plist"); | |
cache->addSpriteFramesWithFile("cats2.plist"); | |
for (int i = 0; i < 100; i++) { | |
int random = rand(); | |
// キャッシュから表示 | |
CCString* fileName = CCString::createWithFormat("cat%02d.png", i); | |
CCSprite* cat = CCSprite::createWithSpriteFrameName(fileName->getCString()); | |
cat->setPosition(ccp(random % (int)winSize.width, | |
random % (int)winSize.height)); | |
this->addChild(cat); | |
} | |
CCLog("%f", (double)(clock() - start) / CLOCKS_PER_SEC); | |
} | |
void HelloWorld::usingTextureCache() | |
{ | |
start = clock(); | |
for (int i = 0; i < 100; i++) | |
{ | |
CCString* fileName = CCString::createWithFormat("cat%02d.png", i); | |
CCTextureCache* cache = CCTextureCache::sharedTextureCache(); | |
//キャッシュへ非同期で読込み | |
cache->addImageAsync(fileName->getCString(), this, callfuncO_selector(HelloWorld::loadedImage)); | |
} | |
CCLog("%f", (double)(clock() - start) / CLOCKS_PER_SEC); | |
} | |
void HelloWorld::loadedImage(cocos2d::CCObject* object) | |
{ | |
CCSize winSize = CCDirector::sharedDirector()->getWinSize(); | |
//キャッシュから表示 | |
CCTexture2D* texture = (CCTexture2D*)object; | |
int random = rand(); | |
CCSprite* cat = CCSprite::createWithTexture(texture); | |
cat->setPosition(ccp(random % (int)winSize.width, random % (int)winSize.height)); | |
this->addChild(cat); | |
static int i = 0; | |
if (++i == 100) | |
{ | |
CCLog("%f", (double)(clock() - start) / CLOCKS_PER_SEC); | |
} | |
} | |
void HelloWorld::usingTextureCache2() | |
{ | |
start = clock(); | |
for (int i = 1; i <= 2; i++) | |
{ | |
CCString* fileName = CCString::createWithFormat("cats%d.png", i); | |
CCTextureCache* cache = CCTextureCache::sharedTextureCache(); | |
//キャッシュへ非同期で読込み | |
cache->addImageAsync(fileName->getCString(), this, callfuncO_selector(HelloWorld::loadedImage2)); | |
} | |
CCLog("%f", (double)(clock() - start) / CLOCKS_PER_SEC); | |
} | |
void HelloWorld::loadedImage2(cocos2d::CCObject* object) | |
{ | |
static int i = 0; | |
// 危険なコードなので絶対にマネしないでください | |
CCString* fileName = CCString::createWithFormat("cats%d.plist", i + 1); | |
CCSpriteFrameCache* cache = CCSpriteFrameCache::sharedSpriteFrameCache(); | |
cache->addSpriteFramesWithFile(fileName->getCString(), (CCTexture2D*)object); | |
CCSize winSize = CCDirector::sharedDirector()->getWinSize(); | |
for (int j = 0; j < 50; j++) | |
{ | |
int random = rand(); | |
//キャッシュから表示 | |
CCString* fileName = CCString::createWithFormat("cat%02d.png", j + i * 50); | |
CCSprite* cat = CCSprite::createWithSpriteFrameName(fileName->getCString()); | |
cat->setPosition(ccp(random % (int)winSize.width, | |
random % (int)winSize.height)); | |
this->addChild(cat); | |
} | |
if (++i == 2) | |
{ | |
CCLog("%f", (double)(clock() - start) / CLOCKS_PER_SEC); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//#ifndef __HELLOWORLD_SCENE_H__ | |
//#define __HELLOWORLD_SCENE_H__ | |
#include "cocos2d.h" | |
class HelloWorld : public cocos2d::CCLayer | |
{ | |
private: | |
clock_t start; | |
void usingSprite(); | |
void usingSpriteFrameCache(); | |
void usingTextureCache(); | |
void loadedImage(cocos2d::CCObject* object); | |
void usingTextureCache2(); | |
void loadedImage2(cocos2d::CCObject* object); | |
public: | |
virtual bool init(); | |
static cocos2d::CCScene* scene(); | |
CREATE_FUNC(HelloWorld); | |
}; | |
//#endif // __HELLOWORLD_SCENE_H__ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment