CCScrollLayerを使用しており、プレーヤーがステージを選択するときに画像を準備したいと思います。シンプルですが、ステージをスクロールすると、時間(画像の読み込みの遅延)が発生します。
そこで、NSThreadを使用することにしました。cocos2dから「cocos2d:CCSpriteFrameCache:ファイル'Level3.png'をテクスチャとして使用しようとしています」というメッセージが表示されました。その後、それが表示されることになっています。しかし、スレッドにロードしたこれらの画像は、希望どおりに表示されません。何もありません。
-(void) moveToStagePage:(int)page
{
...
[NSThread detachNewThreadSelector:@selector(prepareTexture:) toTarget:self withObject:[NSNumber numberWithInt:page]];
...
}
以下のソースは、画像を準備するコードです。(スレッド)
-(void) prepareTexture:(NSNumber*)number
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
int _page = [number intValue];
NSLog(@"%d Thread start", _page);
if(loadingTexNum != 0 && (_page + 1) != loadingTexNum)
{
[[CCSpriteFrameCache sharedSpriteFrameCache] removeSpriteFramesFromFile:[NSString stringWithFormat:@"Level%d.plist", loadingTexNum]];
loadingTexNum = _page + 1;
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:[NSString stringWithFormat:@"Level%d.plist", loadingTexNum]];
}
if(loadingTexNum == 0 && (_page + 1) != loadingTexNum)
{
loadingTexNum = _page + 1;
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:[NSString stringWithFormat:@"Level%d.plist", loadingTexNum]];
}
[NSThread sleepForTimeInterval:10.0];
NSLog(@"%d Thread release", _page);
[pool release];
}