iphone - how to change the lock images to unlock images in cocos2d -
am having game 10 levels. want change second level lock image unlock when first level completed.
am using 20 images ( 10 locked , 10 unlocked).
am using cc menus display number images. example(code):-
ccmenuitemimage *startbutton12 = [ccmenuitemimage itemfromnormalimage:@"ten_new-lock.png" selectedimage:@"ten_new-lock.png" target:self selector:@selector(ten:)]; menu1 = [ccmenu menuwithitems: startbutton3,startbutton4,startbutton5,startbutton6,startbutton7,startbutton8,startbutton9,startbutton10,startbutton11,startbutton12, nil]; menu1.position = ccp(240,30); [menu1 alignitemshorizontally]; [menulayer1 addchild: menu1];
am using below code remember level completed.
int lastlevelcompleted= [[nsuserdefaults standarduserdefaults] integerforkey:@"levelcompleted"]; if(currentlevel >lastlevelcompleted){ nsuserdefaults *defaults = [nsuserdefaults standarduserdefaults]; [defaults setinteger:currentlevel forkey:@"levelcompleted"];
**now, how change lock unlock images.
( if doing here wrong)there other way solve means provide that. have implement one.**
i have same idea in 1 of games. solved separate lock , done icons have positioned on top of each menu item represents level.
just create menu items normally. don't try represent locked or done states menu item's icon. instead create smaller locked , done icons instantiate sprites , position on top of each menu item.
here relevant part of menu layer's init method (i'm using sprite atlas store images):
// save state of each level character in nsmutablestring: self.completedstate = 0x0043; // "c" (completed) self.openstate = 0x004f; // "o" self.lockedstate = 0x004c; // "l" self.dungeonavailabilitystate = @"collllllllllllllll"; // in reality string global object // calc position dungeon icon @ row, column x = (column*56)+148; y = 244-(row*56); // dungeon state stateindex = (row*columns)+column; dungeonstate = [self.dungeonavailabilitystate characteratindex:stateindex]; // calc position of badges using offset menu item's icon lockedx = x - dungeonsscreen_badgexoffset; lockedy = y - dungeonsscreen_badgeyoffset; donex = x - dungeonsscreen_badgexoffset; doney = y + dungeonsscreen_badgeyoffset; if (dungeonstate == self.lockedstate) { // add lock icon [super badgeiconfromframe:@"icon_lock.png" xpos:lockedx ypos:lockedy spritetag:t++]; }
and helper method badgeiconfromframe looks this:
- (void) badgeiconfromframe:(nsstring*)spritename xpos:(float)x ypos:(float)y spritetag:(int)t { cclog(@"%@: %@", nsstringfromselector(_cmd), self); ccsprite* badgesprite = [ccsprite spritewithspriteframename:spritename]; badgesprite.position = cgpointmake(x, y); [self addchild:badgesprite z:zindexdecoration tag:t]; }
Comments
Post a Comment