I have Default-568#2x.png which loads fine.
However, (on the actual device) after it shows the iPhone 5 then displays Default.png, in letter box mode. It then loads the 1136 × 640 px Title Screen - which is fine and what it's supposed to do.
I'm using the default Cocos2d HelloWorld template. I haven't changed anything in the plist or otherwise.
Any ideas?
Why does it load the Default.png and how do you fix this?
Thanks.
In the IntroLayer we have
-(void) onEnter
if( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone ) {
background = [CCSprite spriteWithFile:#"Default.png"];
background.rotation = 90;
}
Which is why Default.png is showing up.
How do you keep showing Default-568h#2x.png if you are using the iPhone 5?
I just added another if statement:
if ([UIScreen mainScreen].bounds.size.height == 568.0) {
background = [CCSprite spriteWithFile:#"Default-568h#2x.png"];
background.rotation = 90;
}
Related
I have 2 Scenes, "one scene is just an empty scene with a button" and "another scene has one TableView". I would like to switch back and forth, my code that is using to switch the scenes is
shown below:
scence1 to scene2
auto scene2 = Scene2::createScene();
Director::getInstance()->replaceScene(scene2);
scene2 to scene1
auto scene1 = Scene1::createScene();
Director::getInstance()->replaceScene(scene1);
I suspect that TableViewCell make the program crashes.
Here is my code to create TableView in scene2:
Size tvSize = Size(640.0, 640.0);
_tableview = TableView::create(this, tvSize);
_tableview->retain();
_tableview->setDirection(cocos2d::extension::ScrollView::Direction::VERTICAL);
_tableview->setPosition(Point(0.0 , 0.0 + ((640.0 - tvSize.height)/ 2.0)));
_tableview->setDataSource(this);
Remarkable: cocos2d-x v3.0 beta
UPDTE:
Thank you everyone for helping me, right now I be able to fix it,
The caused of the error is I add this line:
_eventDispatcher->addEventListenerWithFixedPriority(listener, 1);
and forgot to add this line when we finish using _eventDispatcher:
_eventDispatcher->removeEventListener(_touchListener);
Simply trying to test retina display. I setup the director like this:
CCDirectorIOS* director = (CCDirectorIOS*)[CCDirector sharedDirector];
director.wantsFullScreenLayout = NO;
director.projection = kCCDirectorProjection2D;
director.animationInterval = 1.0 / 60.0;
director.displayStats = YES;
[director enableRetinaDisplay:YES];
I create two versions of the file in Photoshop - outline-hd.png and outline.png. I color the HD version red so I can tell if it's being displayed.
Display code:
CCSprite *border = [CCSprite spriteWithFile:#"outline.png"];
[self addChild:border];
Yet it is the non-hd image that gets displayed on my iPhone5. Why?
I came across this question while trying to solve the exact same problem in my own project. Had to dig around in the cocos2d source to figure it out. The problem is that the director's enableRetinaDisplay:YES method doesn't work unless the director's view is set. So, it needs to be called after the glView is set up, and you've called setView on the director:
CCGLView *glView = [CCGLView viewWithFrame:aFrame
pixelFormat:kEAGLColorFormatRGBA8
depthFormat:0
preserveBackbuffer:NO
sharegroup:nil
multiSampling:NO
numberOfSamples:0];
[[CCDirector sharedDirector] setView:glView];
NSLog(#"glView is set, enable retina...");
[[CCDirector sharedDirector] enableRetinaDisplay:YES];
This should fix the problem for you!
May be you forgot:
CCFileUtils *sharedFileUtils = [CCFileUtils sharedFileUtils];
[sharedFileUtils setEnableFallbackSuffixes:NO];
[sharedFileUtils setiPhoneRetinaDisplaySuffix:#"-hd"];
I have been working for an iPad game using Cocos2d 2.0, I am facing a problem while loading HD images for the new iPad (Retina Display). But I can't figure out why HD images are not being loaded automatically while executing the code:
Even after adding [director enableRetinaDisplay:YES]; it is still not working. Here is the code sample of when loading image :
MainBG = [CCSprite spriteWithFile:#"menuBackground-ipad.png"];
CGSize ScreenSize = [[CCDirector sharedDirector]winSize];
MainBG.position = ccp(ScreenSize.height/2,ScreenSize.width/2);
[self addChild:MainBG z:0];
I have another image menuBackground-ipadhd.png in the project resources (I can see it from Xcode as well).
Anyone can help ?
For me it is working in cocos2D 2.0
Change that menuBackground-ipad.png to menuBackground.png
Make sure all these lines r found in ur appDelegate and pushScene at the end. Also use onEnter instead of init in layer class.
if( ! [director_ enableRetinaDisplay:YES] )
{
CCLOG(#"Retina Display Not supported");
}
CCFileUtils *sharedFileUtils = [CCFileUtils sharedFileUtils];
[sharedFileUtils setEnableFallbackSuffixes:NO]; // Default: NO. No fallback suffixes are going to be used
[sharedFileUtils setiPhoneRetinaDisplaySuffix:#"-hd"]; // Default on iPhone RetinaDisplay is "-hd"
[sharedFileUtils setiPadSuffix:#"-ipad"]; // Default on iPad is "ipad"
[sharedFileUtils setiPadRetinaDisplaySuffix:#"-ipadhd"]; // Default on iPad RetinaDisplay is "-ipadhd"
[director_ pushScene: [IntroLayer scene]];
//In Layer..
-(void)onEnter
{
[super onEnter];
MainBG = [CCSprite spriteWithFile:#"menuBackground.png"];
CGSize ScreenSize = [[CCDirector sharedDirector]winSize];
MainBG.position = ccp(ScreenSize.height/2,ScreenSize.width/2);
[self addChild:MainBG z:0];
}
Do not specify the ipad/hd/etc file suffix when loading files. Your problem is caused by using the -ipad suffix here:
MainBG = [CCSprite spriteWithFile:#"menuBackground-ipad.png"];
Remove the suffix to allow cocos2d's do it's job in selecting the correct image:
MainBG = [CCSprite spriteWithFile:#"menuBackground.png"];
I'm having really hard time with my pixelated 2D game. I'm using Cocos2D framework and the menu is driving me insane. I can change the setAliasTexParameters parameter with Sprites, but not for CCMenuItemImage.
I believe it is possible with CCMenuItemSprite, but I red you can't set it straight with that either and I can't seem to even get the menu work with CCMenuItem Sprites. It works nicely with CCMenuItemImages thought.
Here's the blurry buttons:
http://cl.ly/0i1V3Y0e3u2k1t102H2a
For some unknown reason the left arrow button is sharp. I tried to change achor points, positions and paddings by 1 and 0.5 pixels but it didn't help. All the button sizes are even numbers.
This is my code for one of the MenuItems:
CCMenuItemImage *buttonMoveL = [CCMenuItemImage itemFromNormalImage:#"buttonMoveLeft.png" selectedImage:#"buttonMoveLeft2.png" block:^(id sender) {
// Do something
}
}];
And this is the Menu itself:
ActionsMenu = [CCMenu menuWithItems: buttonAttack, buttonMoveL, buttonMoveR, buttonDefend, nil];
ActionsMenu.position = ccp(240, 38);
[ActionsMenu alignItemsHorizontallyWithPadding:8];
All help is really much appreciated!
I got it working by using sprites in the menus. Here's my solution:
CCSprite *spriteDefend1 = [CCSprite spriteWithSpriteFrameName:#"buttonDefend1.png"];
CCSprite *spriteDefend2 = [CCSprite spriteWithSpriteFrameName:#"buttonDefend2.png"];
CCMenuItemImage *buttonDefend = [CCMenuItemSprite itemFromNormalSprite:spriteDefend1 selectedSprite:spriteDefend2 block:^(id sender) {
// Do something cool
}
}];
I integrated Adwhirl into my app and activated iAd only. My app is in landscapeleft mode and I want to have all Ads in 320x50(48) mode. I managed to rotate the banner view and the iAd looks right.I did this in the following way:
AdWhirl *adView = [AdWhirlView requestAdWhirlViewWithDelegate:self];
[[[Director sharedDirector] openGLView] addSubview:adView];
CGAffineTransform transform = CGAffineTransformMakeTranslation(0, 150);
transform = CGAffineTransformTranslate(transform, 10, 10);
transform = CGAffineTransformRotate(transform, CC_DEGREES_TO_RADIANS(90));
[adView setTransform:transform];
It works fine in iOS4.2.
However,on device with iOS4.1,only left side of the banner view is clickable.I'm really confused about this behavior.Is there anyone having the same problem?
Any hint would be highly appreciated!
P.S.I tried to set frame,bounds,and center,but that does not solve the problem.