CCTexture2D* Sky::generateTexture() { CCRenderTexture* pRenderTexture = CCRenderTexture::create(m_nTextureSize, m_nTextureSize); pRenderTexture->beginWithClear(0.55f, 0.80f, 0.86f, 1.0f); //gradient float alpha = 1.0f; ccColor4B color1 = {255, 255, 255, 0}; ccColor4B color2 = {255, 255, 255, 255}; CCLayerGradient* pLayerColor = CCLayerGradient::create(color1, color2); pLayerColor->setContentSize(CCSizeMake(m_nTextureSize, m_nTextureSize)); pLayerColor->setPosition(ccp(0, 0)); pLayerColor->visit(); //noise CCSprite* pSprite = CCSprite::create("noise.png"); pSprite->setPosition(ccp(m_nTextureSize / 2, m_nTextureSize / 2)); pSprite->setBlendFunc((ccBlendFunc){GL_DST_COLOR, GL_ZERO}); pSprite->setScale(m_nTextureSize / 512.0f); pSprite->visit(); pRenderTexture->end(); CCTexture2D* pTex = pRenderTexture->getSprite()->getTexture(); ccTexParams params = {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT}; pTex->setTexParameters(¶ms); return pTex; }
void TilemapRender::generateBackground() { ostringstream texturePath; texturePath<<"resources.pak/terrain/"; texturePath<<m_SetID<<"-14.png"; CCRenderTexture* rt = CCRenderTexture::create(64,64); rt->begin(); CCSprite* tile1 = CCSprite::create(texturePath.str().c_str()); tile1->setAnchorPoint(ccp(0,0)); tile1->setPosition(ccp(0,0)); tile1->visit(); rt->end(); CCTexture2D* texture = rt->getSprite()->getTexture(); ccTexParams tp = {GL_LINEAR, GL_LINEAR, GL_REPEAT, GL_REPEAT}; texture->setTexParameters(&tp); m_SpriteB->setTexture(texture); m_SpriteB->setTextureRect(CCRectMake(0, 0, m_MapWidth*64, m_MapHeight*64)); }
// on "init" you need to initialize your instance bool LevelGameScene::init() { if ( !CCLayerColor::initWithColor( ccc4(100, 100, 100, 255) ) ) { return false; } CCSize vs = CCDirector::sharedDirector()->getVisibleSize(); CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin(); // Fondo con la textura de madera ccTexParams tp = { GL_LINEAR, GL_LINEAR, GL_REPEAT, GL_REPEAT}; CCTexture2D* texture = CCTextureCache::sharedTextureCache()->addImage("purty_wood.png"); texture->setTexParameters(&tp); CCSprite* background = CCSprite::createWithTexture(texture, CCRectMake(0, 0, vs.width, vs.height)); background->setPosition( ccp( vs.width/2, vs.height/2 ) ); this->addChild(background, 1); CCMenuItem* level1 = CCMenuItemImage::create("btn_level_1.png", "btn_level_1_h.png", this, menu_selector(LevelGameScene::level1Callback)); level1->setPosition(ccp(vs.width/2 - 275, vs.height/2)); CCMenuItem* level2 = CCMenuItemImage::create("btn_level_2.png", "btn_level_2_h.png", this, menu_selector(LevelGameScene::level2Callback)); level2->setPosition(ccp(vs.width/2, vs.height/2)); CCMenuItem* level3 = CCMenuItemImage::create("btn_level_3.png", "btn_level_3_h.png", this, menu_selector(LevelGameScene::level3Callback)); level3->setPosition(ccp(vs.width/2 + 275, vs.height/2)); CCMenu* menu = CCMenu::create(level1, level2, level3, NULL); menu->setPosition(ccp(0,0)); this->addChild(menu, 5); this->setTouchEnabled(true); return true; }
// on "init" you need to initialize your instance bool GameScene::init() { if ( !CCLayer::init() ) { return false; } // Variables de tamanyo CCSize vs = CCDirector::sharedDirector()->getVisibleSize(); CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin(); // Layer con los botones al hacer pause _layerPause = CCLayerColor::create(ccc4(255,255,255,0)); _layerPause->setContentSize(CCSizeMake(350, 100)); _layerPause->ignoreAnchorPointForPosition(false); _layerPause->setAnchorPoint(ccp(0.5, 0.5)); _layerPause->setPosition(ccp(vs.width/2, vs.height/2)); _layerPause->retain(); CCMenuItem* button_resume = CCMenuItemImage::create("btn_resume.png", "btn_resume_h.png", this, menu_selector(GameScene::menuResumeCallback)); button_resume->setPosition(ccp(50, 50)); CCMenuItem* button_restart = CCMenuItemImage::create("btn_restart.png", "btn_restart_h.png", this, menu_selector(GameScene::menuRestartCallback)); button_restart->setPosition(ccp(175, 50)); CCMenuItem* button_exit = CCMenuItemImage::create("btn_exit.png", "btn_exit_h.png", this, menu_selector(GameScene::menuExitCallback)); button_exit->setPosition(ccp(300, 50)); CCMenu* menu_pause = CCMenu::create(button_resume, button_restart, button_exit, NULL); menu_pause->setPosition(ccp(0,0)); _layerPause->addChild(menu_pause); // Layer que se muestra al terminar la carrera _layerEnd = CCLayerColor::create(ccc4(0,0,0,0)); _layerEnd->setContentSize(CCSizeMake(225, 225)); _layerEnd->ignoreAnchorPointForPosition(false); _layerEnd->setAnchorPoint(ccp(0.5, 0.5)); _layerEnd->setPosition(ccp(vs.width/2, vs.height/2)); _layerEnd->retain(); CCMenuItem* button_end_restart = CCMenuItemImage::create("btn_restart.png", "btn_restart_h.png", this, menu_selector(GameScene::menuRestartCallback)); button_end_restart->setPosition(ccp(50, 50)); CCMenuItem* button_end_exit = CCMenuItemImage::create("btn_exit.png", "btn_exit_h.png", this, menu_selector(GameScene::menuExitCallback)); button_end_exit->setPosition(ccp(175, 50)); CCMenu* menu_end = CCMenu::create(button_end_restart, button_end_exit, NULL); menu_end->setPosition(ccp(0,0)); CCLayerColor* layerTime = CCLayerColor::create(ccc4(255,255,255,255)); layerTime->setContentSize(CCSizeMake(225, 100)); layerTime->ignoreAnchorPointForPosition(false); layerTime->setAnchorPoint(ccp(0.5, 0.5)); layerTime->setPosition(ccp(112.5, 175)); layerTime->retain(); _labelTimeEnd = CCLabelTTF::create("Time:\n0:00:000", "fonts/FrancoisOne.ttf", 30, CCSizeMake(225, 100), kCCTextAlignmentCenter); _labelTimeEnd->setColor(ccc3(0,0,0)); _labelTimeEnd->setPosition(ccp(112.5, 50)); layerTime->addChild(_labelTimeEnd); _layerEnd->addChild(menu_end); _layerEnd->addChild(layerTime); // Boton de pause (menu) CCMenuItem* button_pause = CCMenuItemImage::create("btn_pause.png", "btn_pause_h.png", this, menu_selector(GameScene::menuPauseCallback)); button_pause->setPosition(ccp(75, vs.height - 75)); CCMenu* menu = CCMenu::create(button_pause, NULL); menu->setPosition(ccp(0,0)); // Velocidad CCString* stringVel = CCString::createWithFormat("%d km/h", (int)_vel); _labelVel = CCLabelTTF::create(stringVel->getCString(), "fonts/FrancoisOne.ttf", 30, CCSizeMake(140, 50), kCCTextAlignmentCenter); _labelVel->setColor(ccc3(255,255,255)); _labelVel->setPosition(ccp(vs.width - 72, 50)); // Distancia CCString* stringDist = CCString::createWithFormat("%d m", (int)_dist); _labelDist = CCLabelTTF::create(stringDist->getCString(), "fonts/FrancoisOne.ttf", 30, CCSizeMake(140, 50), kCCTextAlignmentCenter); _labelDist->setColor(ccc3(255,255,255)); _labelDist->setPosition(ccp(72, 50)); // Tiempo int hs = _time/3600000; int mins = (_time%3600000)/60000; int ss = ((_time%3600000)%60000)/1000; int ms = ((_time%3600000)%60000)%1000; CCString* stringTime = CCString::createWithFormat("%d:%02d:%03d", mins, ss, ms); _labelTime = CCLabelTTF::create(stringTime->getCString(), "fonts/FrancoisOne.ttf", 30, CCSizeMake(140, 50), kCCTextAlignmentCenter); _labelTime->setColor(ccc3(255,255,255)); _labelTime->setPosition(ccp(vs.width - 72, vs.height - 50)); // Click to start _labelStart = CCLabelTTF::create("Click to Start", "fonts/FrancoisOne.ttf", 50, CCSizeMake(200, 200), kCCTextAlignmentCenter); _labelStart->setColor(ccc3(255,255,255)); _labelStart->setPosition(ccp(vs.width/2, vs.height/2)); _labelStart->retain(); // Hierba ccTexParams tp = { GL_LINEAR, GL_LINEAR, GL_REPEAT, GL_REPEAT}; CCTexture2D* texture = CCTextureCache::sharedTextureCache()->addImage("texture_grass2.jpg"); texture->setTexParameters(&tp); _grass = CCSprite::createWithTexture(texture, CCRectMake(0, 0, vs.width, vs.height + 256)); _grass->setPosition( ccp( vs.width/2, vs.height/2 + 128 ) ); // Carretera texture = CCTextureCache::sharedTextureCache()->addImage("texture_road2.jpg"); texture->setTexParameters(&tp); _road = CCSprite::createWithTexture(texture, CCRectMake(0, 0, 512, vs.height + 512)); _road->setPosition( ccp( vs.width/2, vs.height/2 + 256 ) ); // Pianos texture = CCTextureCache::sharedTextureCache()->addImage("piano.png"); texture->setTexParameters(&tp); _piano1 = CCSprite::createWithTexture(texture, CCRectMake(0, 0, 64, vs.height + 64)); _piano1->setPosition( ccp(vs.width * 0.15, vs.height / 2 + 32) ); _piano2 = CCSprite::createWithTexture(texture, CCRectMake(0, 0, 64, vs.height + 64)); _piano2->setPosition( ccp(vs.width * 0.85, vs.height / 2 + 32) ); // Coche _car = CCSprite::create("car_above_blue.png"); _car->setPosition(ccp(vs.width/2, 50)); // Creamos los indicadores de curva _curvasI = new CCArray; _curvasD = new CCArray; for (int i = 1; i <= 5; i++) { CCString* str_curvaI = CCString::createWithFormat("curva_izq_%d.png", i); CCString* str_curvaD = CCString::createWithFormat("curva_der_%d.png", i); CCSprite* curvaI = CCSprite::create(str_curvaI->getCString()); curvaI->setOpacity(0); curvaI->setPosition(ccp(vs.width/2, vs.height/4*3)); CCSprite* curvaD = CCSprite::create(str_curvaD->getCString()); curvaD->setOpacity(0); curvaD->setPosition(ccp(vs.width/2, vs.height/4*3)); _curvasI->addObject(curvaI); _curvasD->addObject(curvaD); this->addChild(curvaI, 5); this->addChild(curvaD, 5); } // Anyadimos los elementos a la vista this->addChild(_grass, 1); this->addChild(_road, 2); this->addChild(_car, 3); this->addChild(menu, 5); this->addChild(_labelVel, 5); this->addChild(_labelDist, 5); this->addChild(_labelTime, 5); this->addChild(_labelStart, 5); // Inicializamos el vector de curvas segun el nivel if (_level == 1) { _curvas.push_back(Curva(250, 200, 2, false)); _curvas.push_back(Curva(550, 200, 2, false)); _curvas.push_back(Curva(1200, 100, 4, false)); _curvas.push_back(Curva(1650, 200, 2, false)); _curvas.push_back(Curva(1950, 200, 2, false)); _curvas.push_back(Curva(2500, 200, 2, false)); _curvas.push_back(Curva(2800, 200, 2, false)); _mCircuito = 3000; } else if (_level == 2) { _curvas.push_back(Curva(100, 150, 2, false)); _curvas.push_back(Curva(350, 150, 2, false)); _curvas.push_back(Curva(700, 250, 1, false)); _curvas.push_back(Curva(1150, 150, 3, false)); _curvas.push_back(Curva(1500, 100, 4, false)); _curvas.push_back(Curva(1800, 100, 4, false)); _curvas.push_back(Curva(2000, 200, 2, true)); _curvas.push_back(Curva(2300, 50, 5, true)); _curvas.push_back(Curva(2750, 150, 2, true)); _curvas.push_back(Curva(3000, 50, 4, true)); _curvas.push_back(Curva(3100, 100, 2, false)); _curvas.push_back(Curva(3300, 100, 2, false)); _curvas.push_back(Curva(3500, 100, 4, false)); _curvas.push_back(Curva(3800, 250, 2, false)); _curvas.push_back(Curva(4250, 250, 1, false)); _curvas.push_back(Curva(4700, 150, 3, false)); _mCircuito = 5350; } else { // _level == 3 _curvas.push_back(Curva(100, 50, 2, true)); _curvas.push_back(Curva(250, 50, 2, false)); _curvas.push_back(Curva(400, 100, 4, false)); _curvas.push_back(Curva(600, 100, 2, false)); _curvas.push_back(Curva(800, 50, 4, true)); _curvas.push_back(Curva(950, 50, 4, true)); _curvas.push_back(Curva(1100, 100, 2, false)); _curvas.push_back(Curva(1300, 50, 4, true)); _curvas.push_back(Curva(1450, 50, 4, true)); _curvas.push_back(Curva(1600, 100, 4, false)); _curvas.push_back(Curva(1900, 100, 2, false)); _curvas.push_back(Curva(2100, 50, 5, true)); _curvas.push_back(Curva(2450, 100, 2, true)); _curvas.push_back(Curva(2650, 50, 5, false)); _curvas.push_back(Curva(2900, 100, 4, false)); _curvas.push_back(Curva(3200, 150, 2, true)); _curvas.push_back(Curva(3450, 100, 4, true)); _curvas.push_back(Curva(3650, 50, 4, true)); _curvas.push_back(Curva(3800, 100, 4, false)); _curvas.push_back(Curva(4000, 50, 4, true)); _curvas.push_back(Curva(4150, 150, 2, true)); _curvas.push_back(Curva(4400, 100, 2, false)); _curvas.push_back(Curva(4600, 100, 2, false)); _curvas.push_back(Curva(4800, 100, 5, true)); _curvas.push_back(Curva(5000, 50, 2, true)); _curvas.push_back(Curva(5150, 100, 5, false)); _curvas.push_back(Curva(5450, 200, 5, true)); _mCircuito = 5850; } // Inicializamos el vector de coches en contra _oppCars = new CCArray; // Activamos el acelerometro y el touch this->setTouchEnabled(true); // Calculamos el tamanyo de cada tramo para informar al Arduino int nleds = CCUserDefault::sharedUserDefault()->getIntegerForKey("nleds"); _longTramo = (int) (_mCircuito/nleds); // Enviamos al Arduino que hemos entrado int iColor = CCUserDefault::sharedUserDefault()->getIntegerForKey("color"); CCDictionary* prms = CCDictionary::create(); prms->setObject(CCString::createWithFormat("%d", iColor), "color"); SendMessageWithParams(string("JugadorEntra"), prms); return true; }
// on "init" you need to initialize your instance bool HelloWorld::init() { ////////////////////////////// // 1. super init first if (!CCLayer::init()) { return false; } // CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize(); // CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin(); // // ///////////////////////////// // // 2. add a menu item with "X" image, which is clicked to quit the program // // you may modify it. // // // add a "close" icon to exit the progress. it's an autorelease object // CCMenuItemImage *pCloseItem = CCMenuItemImage::create("CloseNormal.png", // "CloseSelected.png", this, // menu_selector(HelloWorld::menuCloseCallback)); // // pCloseItem->setPosition( // ccp(origin.x + visibleSize.width - pCloseItem->getContentSize().width/2 , // origin.y + pCloseItem->getContentSize().height/2)); // // // create menu, it's an autorelease object // CCMenu* pMenu = CCMenu::create(pCloseItem, NULL); // pMenu->setPosition(CCPointZero); // this->addChild(pMenu, 1); // // ///////////////////////////// // // 3. add your codes below... // // // add a label shows "Hello World" // // create and initialize a label // // CCLabelTTF* pLabel = CCLabelTTF::create("Hello World", "Arial", 24); // // // position the label on the center of the screen // pLabel->setPosition(ccp(origin.x + visibleSize.width/2, // origin.y + visibleSize.height - pLabel->getContentSize().height)); // // // add the label as a child to this layer // this->addChild(pLabel, 1); // // // add "HelloWorld" splash screen" // CCSprite* pSprite = CCSprite::create("HelloWorld.png"); // // // position the sprite on the center of the screen // pSprite->setPosition( // ccp(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y)); // // // add the sprite as a child to this layer // this->addChild(pSprite, 0); loadTextures(); reset(); CCSize winSize = CCDirector::sharedDirector()->getWinSize(); ccTexParams tp = { GL_LINEAR, GL_LINEAR, GL_REPEAT, GL_CLAMP_TO_EDGE }; CCTexture2D* skyTexture = CCTextureCache::sharedTextureCache()->textureForKey("sky.png"); skyTexture->setTexParameters(&tp); _sky = CCSprite::createWithTexture(skyTexture, CCRectMake(0, 0, winSize.width, 512)); _sky->setPosition(ccp(winSize.width / 2, winSize.height - 256)); this->addChild(_sky, 0); CCTexture2D* mountainTexture = CCTextureCache::sharedTextureCache()->textureForKey("horizon.png"); mountainTexture->setTexParameters(&tp); _mountain = CCSprite::createWithTexture(mountainTexture, CCRectMake(0, 0, winSize.width, 512)); _mountain->setPosition(ccp(winSize.width / 2, 0)); this->addChild(_mountain, 0); CCTexture2D* forestTexture = CCTextureCache::sharedTextureCache()->textureForKey( "background.png"); forestTexture->setTexParameters(&tp); _forest2 = Forest::create(); _forest2->setForestTexture(forestTexture); this->addChild(_forest2, 0); _forest = Forest::create(); _forest->setForestTexture(forestTexture); this->addChild(_forest, 0); CCTexture2D* pathTexture = CCTextureCache::sharedTextureCache()->textureForKey("path.png"); pathTexture->setTexParameters(&tp); _path = Path::create(); _path->setPathTexture(pathTexture); this->addChild(_path, 0); // CCLOG("begin add shadow"); // CCTexture2D* shadowTexture = // CCTextureCache::sharedTextureCache()->textureForKey("shadow.png"); // _shadow = Shadow::create(); // _shadow->setShadowTexture(shadowTexture); // this->addChild(_shadow, 1); // CCLOG("end add shadow"); CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile( "run_frames.plist"); CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile( "boost_frames.plist"); _fox = CCSprite::createWithSpriteFrame( CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName( "fox_1_1.png")); _fox->setPosition(ccp(-1000, -1000)); this->addChild(_fox, 1); _inst = CCSprite::createWithTexture( CCTextureCache::sharedTextureCache()->textureForKey( "instructions.png")); _inst->setPosition(ccp(-1000, -1000)); this->addChild(_inst, 1); CCTexture2D* foregrounTexture = CCTextureCache::sharedTextureCache()->textureForKey( "foreground.png"); foregrounTexture->setTexParameters(&tp); _fgFront = Forest::create(); _fgFront->setForestTexture(foregrounTexture); this->addChild(_fgFront, 1); _pointsText = CCLabelTTF::create("", "Arial", 48); _pointsText->setPosition(ccp(-1000, 0)); _pointsText->setColor(ccc3(81, 65, 30)); this->addChild(_pointsText, 2); _recordText = CCLabelTTF::create("", "Arial", 48); _recordText->setPosition(ccp(-1000, 0)); this->addChild(_recordText, 2); _newRecordText = CCLabelTTF::create("", "Arial", 48); _newRecordText->setPosition(ccp(-1000, 0)); this->addChild(_newRecordText, 2); _failedTipText = CCLabelTTF::create("", "Arial", 48); _failedTipText->setPosition(ccp(-1000, 0)); this->addChild(_failedTipText, 2); _instText = CCLabelTTF::create("", "Arial", 60); _instText->setPosition(ccp(-1000, 0)); this->addChild(_instText, 2); CCTexture2D* titleTexture = CCTextureCache::sharedTextureCache()->textureForKey("Runfield.png"); _title = CCSprite::createWithTexture(titleTexture); _title->setPosition(ccp(-1000, 0)); this->addChild(_title, 3); _mask = CCLayerColor::create(ccc4(0, 0, 0, 255), winSize.width, winSize.height); _mask->setPosition(ccp(0, 0)); this->addChild(_mask, 4); this->schedule(schedule_selector(HelloWorld::tick)); return true; }
// on "init" you need to initialize your instance bool GameScene::init() { if ( !CCLayer::init() ) { return false; } CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize(); CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin(); // Fondo con la textura de madera ccTexParams tp = { GL_LINEAR, GL_LINEAR, GL_REPEAT, GL_REPEAT}; CCTexture2D* texture = CCTextureCache::sharedTextureCache()->addImage("purty_wood.png"); texture->setTexParameters(&tp); CCSprite* background = CCSprite::createWithTexture(texture, CCRectMake(0, 0, visibleSize.width, visibleSize.height)); background->setPosition( ccp( visibleSize.width/2, visibleSize.height/2 ) ); this->addChild(background, 1); CCSprite* con_smile = CCSprite::create("con_wait.png", CCRectMake(0,0,64,64) ); con_smile->setPosition( ccp(visibleSize.width - 64, visibleSize.height - 64) ); this->addChild(con_smile, 2); int aux_nleds = GameManager::sharedGameManager()->getNLeds(); bool connected = GameManager::sharedGameManager()->getConnected(); CCMenuItem *btn_clear = CCMenuItemImage::create("btn_clear.png", "btn_clear_h.png", this, menu_selector(GameScene::menuClearCallback)); btn_clear->setPosition(ccp(visibleSize.width/2, visibleSize.height - 60)); CCMenuItem *button_back = CCMenuItemImage::create("btn_volver.png", "btn_volver_h.png", this, menu_selector(GameScene::menuBackCallback)); button_back->setPosition(ccp(origin.x + 105, visibleSize.height - 60)); CCMenu* menu; if (connected) { con_smile->setTexture(CCTextureCache::sharedTextureCache()->addImage("con_ok.png")); CCMenuItem *button_send = CCMenuItemImage::create("btn_enviar.png", "btn_enviar_h.png", this, menu_selector(GameScene::menuSendCallback)); button_send->setPosition(ccp(visibleSize.width - 105, origin.y + 60)); menu = CCMenu::create(button_send, button_back, btn_clear, NULL); } else { menu = CCMenu::create(button_back, btn_clear, NULL); } menu->setPosition(ccp(0,0)); this->addChild(menu, 5); scrollView = CCScrollView::create(CCSizeMake(visibleSize.width, visibleSize.height/3)); scrollView->setContentSize(CCSizeMake(140*aux_nleds, visibleSize.height/3)); scrollView->setDirection(kCCScrollViewDirectionHorizontal); scrollView->setPosition(ccp(10, visibleSize.height/3)); scrollView->setTouchEnabled(true); this->addChild(scrollView, 5); menu_leds = CCMenu::create(); menu_leds->setPosition(ccp(0,0)); scrollView->addChild(menu_leds, 5); _labels = CCArray::create(); _labels->retain(); for (int i=0; i<aux_nleds; i++) { CCMenuItem *item_led = CCMenuItemImage::create("LED3.png", "LED3.png", this, menu_selector(GameScene::itemLedCallback)); //CCSprite *sprite = CCSprite::create( "LED3.png", CCRectMake(0,0,120,120) ); item_led->setAnchorPoint(CCPointZero); item_led->setPosition(ccp(140*i + 10, 0)); item_led->setTag(i); menu_leds->addChild(item_led); CCString* i_str = CCString::createWithFormat("%d", i+1); CCLabelTTF *label = CCLabelTTF::create(i_str->getCString(), "Helvetica", 25, CCSizeMake(50, 30), kCCTextAlignmentCenter); label->setPosition(ccp(140*i + 45, 130)); label->setAnchorPoint(CCPointZero); label->setTag(123); label->setColor(ccc3(0,0,255)); label->setHorizontalAlignment(kCCTextAlignmentCenter); scrollView->addChild(label); _labels->insertObject(label, i); } _palette = CCSprite::create( "256colour.png", CCRectMake(0,0,512,128) ); _palette->setPosition( ccp( origin.x + 256, origin.y + 64 ) ); this->addChild(_palette, 5); _ledsSelected = CCArray::create(); _ledsSelected->retain(); this->setTouchEnabled(true); return true; }