void TileMapEditTest::updateMap(float dt) { // IMPORTANT // The only limitation is that you cannot change an empty, or assign an empty tile to a tile // The value 0 not rendered so don't assign or change a tile with value 0 TileMapAtlas* tilemap = (TileMapAtlas*) getChildByTag(kTagTileMap); // // For example you can iterate over all the tiles // using this code, but try to avoid the iteration // over all your tiles in every frame. It's very expensive // for(int x=0; x < tilemap.tgaInfo->width; x++) { // for(int y=0; y < tilemap.tgaInfo->height; y++) { // ccColor3B c =[tilemap tileAt:CCSizeMake(x,y)); // if( c.r != 0 ) { // ////----CCLOG("%d,%d = %d", x,y,c.r); // } // } // } // NEW since v0.7 ccColor3B c = tilemap->tileAt(ccp(13,21)); c.r++; c.r %= 50; if( c.r==0) c.r=1; // NEW since v0.7 tilemap->setTile(c, ccp(13,21) ); }
NS_CC_BEGIN // implementation TileMapAtlas TileMapAtlas * TileMapAtlas::create(const std::string& tile, const std::string& mapFile, int tileWidth, int tileHeight) { TileMapAtlas *ret = new (std::nothrow) TileMapAtlas(); if (ret->initWithTileFile(tile, mapFile, tileWidth, tileHeight)) { ret->autorelease(); return ret; } CC_SAFE_DELETE(ret); return nullptr; }
NS_CC_BEGIN // implementation TileMapAtlas TileMapAtlas * TileMapAtlas::create(const char *tile, const char *mapFile, int tileWidth, int tileHeight) { TileMapAtlas *pRet = new TileMapAtlas(); if (pRet->initWithTileFile(tile, mapFile, tileWidth, tileHeight)) { pRet->autorelease(); return pRet; } CC_SAFE_DELETE(pRet); return NULL; }
//------------------------------------------------------------------ // // TileMapEditTest // //------------------------------------------------------------------ TileMapEditTest::TileMapEditTest() { TileMapAtlas* map = TileMapAtlas::create(s_TilesPng, s_LevelMapTga, 16, 16); // Create an Aliased Atlas map->getTexture()->setAliasTexParameters(); Size CC_UNUSED s = map->getContentSize(); CCLOG("ContentSize: %f, %f", s.width,s.height); // If you are not going to use the Map, you can free it now // [tilemap releaseMap); // And if you are going to use, it you can access the data with: schedule(schedule_selector(TileMapEditTest::updateMap), 0.2f); addChild(map, 0, kTagTileMap); map->setAnchorPoint( ccp(0, 0) ); map->setPosition( ccp(-20,-200) ); }
//------------------------------------------------------------------ // // TileMapTest // //------------------------------------------------------------------ TileMapTest::TileMapTest() { TileMapAtlas* map = TileMapAtlas::create(s_TilesPng, s_LevelMapTga, 16, 16); // Convert it to "alias" (GL_LINEAR filtering) map->getTexture()->setAntiAliasTexParameters(); Size CC_UNUSED s = map->getContentSize(); CCLOG("ContentSize: %f, %f", s.width,s.height); // If you are not going to use the Map, you can free it now // NEW since v0.7 map->releaseMap(); addChild(map, 0, kTagTileMap); map->setAnchorPoint( ccp(0, 0.5f) ); ScaleBy *scale = ScaleBy::create(4, 0.8f); ActionInterval *scaleBack = scale->reverse(); Sequence* seq = Sequence::create(scale, scaleBack, NULL); map->runAction(RepeatForever::create(seq)); }