本文整理汇总了C++中CCTMXLayer::removeTileAt方法的典型用法代码示例。如果您正苦于以下问题:C++ CCTMXLayer::removeTileAt方法的具体用法?C++ CCTMXLayer::removeTileAt怎么用?C++ CCTMXLayer::removeTileAt使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CCTMXLayer
的用法示例。
在下文中一共展示了CCTMXLayer::removeTileAt方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getEnemiesListFromLayer
CCArray* LoadLevelEnemies::getEnemiesListFromLayer(CCTMXTiledMap *tilemap,
Player *player) {
CCTMXLayer* layer = tilemap->layerNamed("enemies");
CCSize layersize = layer->getLayerSize();
CCLOG("%s \n", "setEnemiesTilesInformation");
CCArray *enemieArray = CCArray::create();
CCDictionary* enemiesDictionary = PersistenceAux::getEnemyData();
CCLOG("Enemy data loaded");
for (int x = 0; x < layersize.width; x++) {
for (int y = 0; y < layersize.height; y++) {
unsigned int tmpgid = layer->tileGIDAt(ccp(x, y));
if (tmpgid != 0) {
CCSprite* tile = layer->tileAt(ccp(x, y));
CCRect box = tile->boundingBox();
CCPoint boxsize = ccp(box.size.width, box.size.height);
CCPoint tilePosition = ccpAdd(tile->getPosition(),
ccpMult(boxsize, 0.5));
layer->removeTileAt(ccp(x, y));
// create the enemy directly
CCDictionary* tileProperties = tilemap->propertiesForGID(
tmpgid);
CCLOG("%s \n", "dictionary for enemies properties");
CCString* enemyName = (CCString*) tileProperties->objectForKey(
"name");
CCLOG("Enemy name %s \n", enemyName->getCString());
CCDictionary* enemyProperties =
(CCDictionary *) enemiesDictionary->objectForKey(
enemyName->getCString());
CCLOG("Enemy prop. Dictionary size %d \n",
enemyProperties->count());
CCLOG("Enemy Position x %d \n", tilePosition.x);
CCLOG("************** PLIST ****************** \n");
CCLOG("SPEED %s",
((CCString*) enemyProperties->objectForKey("speed"))->getCString());
CCLOG("JUMPFORCE %s",
((CCString*) enemyProperties->objectForKey("jump"))->getCString());
CCLOG("SIGHT %s",
((CCString*) enemyProperties->objectForKey("sight"))->getCString());
CCLOG("DIFICULT %s",
((CCString*) enemyProperties->objectForKey("dificult"))->getCString());
CCLOG("DEFAULT IMAGE %s",
((CCString*) enemyProperties->objectForKey(
"defaultimage"))->getCString());
CCLOG("************** PLIST END ****************** \n");
MeeleEnemy* enemy = MeeleEnemy::create(
(CCString*) enemyProperties->objectForKey(
"defaultimage"),
(CCString*) enemyProperties->objectForKey("dificult"),
(CCString*) enemyProperties->objectForKey("jump"),
(CCString*) enemyProperties->objectForKey("sight"),
(CCString*) enemyProperties->objectForKey("speed"),
tilePosition, enemyName,
(CCString*) enemyProperties->objectForKey("damage")
);
CCLOG("%s \n", "Initializing enemies");
enemy->initMeeleEnemy(player);
CCLOG("%s \n", "Add enemies to enemy array");
enemieArray->addObject(enemy);
}
}
}
return enemieArray;
}
示例2: ccTouchesBegan
void HelloWorld::ccTouchesBegan(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent)
{
CCNode* node = this->getChildByTag(TileMapNode);
//NSAssert([node isKindOfClass:[CCTMXTiledMap class]], @"not a CCTMXTiledMap");
CCTMXTiledMap* tileMap = (CCTMXTiledMap*)node;
// get the position in tile coordinates from the touch location
CCPoint touchLocation = this->locationFromTouch((cocos2d::CCTouch *)pTouches->anyObject());
CCPoint tilePos = this->tilePosFromLocation(touchLocation, tileMap);
//// move tilemap so that touched tiles is at center of screen
this->centerTileMapOnTileCoord(tilePos, tileMap);
// Check if the touch was on water (eg. tiles with isWater property drawn in GameEventLayer)
bool isTouchOnWater = false;
CCTMXLayer* eventLayer = tileMap->layerNamed("GameEventLayer");
int tileGID = eventLayer->tileGIDAt(tilePos);
//
if (tileGID != 0) {
CCDictionary* properties = tileMap->propertiesForGID(tileGID);
if (properties) {
//CCLOG(@"NSDictionary 'properties' contains:\n%@", properties);
const CCString * isWaterProperty = properties->valueForKey("isWater");
isTouchOnWater = isWaterProperty->boolValue();
}
}
// Check if the touch was within one of the rectangle objects
CCTMXObjectGroup* objectLayer = tileMap->objectGroupNamed("ObjectLayer");
//NSAssert([objectLayer isKindOfClass:[CCTMXObjectGroup class]],
// @"ObjectLayer not found or not a CCTMXObjectGroup");
bool isTouchInRectangle = false;
int numObjects = objectLayer->getObjects()->count();
for (int i = 0; i < numObjects; i++){
CCDictionary* properties = (CCDictionary*)objectLayer->getObjects()->objectAtIndex(i);
CCRect rect = this->getRectFromObjectProperties(properties, tileMap);
//
if (CCRect::CCRectContainsPoint(rect, touchLocation)) {
isTouchInRectangle = true;
break;
}
}
// decide what to do depending on where the touch was ...
if (isTouchOnWater) {
//[[SimpleAudioEngine sharedEngine] playEffect:@"alien-sfx.caf"];
CCLog("touchOnWater");
}
else if (isTouchInRectangle) {
CCLog("touchObject");
CCParticleSystem* system = CCParticleSystemQuad::particleWithFile("fx-explosion.plist");
system->setAutoRemoveOnFinish(true);
system->setPosition(touchLocation);
this->addChild(system, 1);
}
else {
#if 0
// get the winter layer and toggle its visibility
CCTMXLayer* winterLayer = tileMap->layerNamed("WinterLayer");
winterLayer->setVisible(!winterLayer->isVisible());
// other options you might be interested in are:
// remove the touched tile
winterLayer->removeTileAt(tilePos);
// add a specific tile
tileGID = winterLayer->tileGIDAt(CCPointMake(0, 19));
winterLayer->setTileGID(tileGID, tilePos);
#endif
}
}