在 Cocos2d v2.0.0 中,进行了很多更改,很多人遇到了一些缩放问题和其他冲突......
如果他们阅读并测试了 Ray Wenderlich 的好书,那就更是如此:学习 Cocos2d:维京人太大,背景不居中,图像后缀系统不起作用,...
那么,如何进行呢?
Best Answer-推荐答案 strong>
基本上,在创建新的 cocos2d v2 项目时,样例项目中已经说明了一切。
但是,我们中的一些人需要指出一些事情。
适用于 iPhone(非视网膜和视网膜)和 iPad(非视网膜和视网膜)的图像后缀系统
查看 AppDelegate.m 中的第 68-71 行
以下是您需要记住的内容:
你只需要打电话
CCSprite *mySprite = [CCSprite spriteWithFile"mySprite.png"];
- 不需要一些 if(iPad) then else if(iPhone) blabla
- 确保您将图像称为 AppDelegate.m 中的第 68-71 行(默认值:mySprite.png (iPhone) | mySprite-hd.png (iPhone视网膜) | mySprite-ipad.png (iPad) | mySprite-ipadhd.png (iPad 视网膜)
从 AppDelegate.m 中查看第 76 行
只需从你的类中调用场景函数(使用 pushScene)
[director_ pushScene: [MyScene scene]];
- 假设您的场景类是使用 +(CCSene*)scene 函数调用的(这对于 cocos2d v2 来说是一个很好的做法)
-
+(CCScene *) scene
{
// 'scene' is an autorelease object.
CCScene *scene = [CCScene node];
BackgroundLayer *backgroundLayer = [BackgroundLayer node];
[scene addChild:backgroundLayer z:0];
GameplayLayer *gameplayLayer = [GameplayLayer node];
[scene addChild:gameplayLayer z:5];
return scene;
}
从您的类(CCScene、CCLayer、...)中替换 init 函数
这就是来自 cocos2d v2 的缩放问题的来源(但我不知道为什么)。
不是调用-(id)init,而是调用
-(void) onEnter{ //Do some sprite displaying with [self addChild:mySprite]; }
在显示 Sprite 之前,您仍然可以调用 -(id)init 函数来处理需要加载的其他内容。
使用 SneakyInput(Joystick 开源库)
你可以在这里找到如何在 cocos2d v2 中使用偷偷摸摸的输入:http://cl.ly/1J2D2z0f3o0r3h041o3o
将此行添加到您的图层(在 +(CCScene*) 场景函数中或其他位置)
layer.isTouchEnabled = YES;
然后将这个添加到同一个.m
- (void)ccTouchesMovedNSSet *)touches withEventUIEvent *)event
{
NSArray *touchArray=[touches allObjects];
if ([touchArray count] == 2)
{
NSLog(@"2");
}
else if([touchArray count]==1)
{
NSLog(@"1");
}
}
最后,进入 AppDelegate.m 并添加:
[[CCDirector sharedDirector].view setMultipleTouchEnabled:YES];
如果 cocos2d v2 开发人员可以提供帮助并发布有关如何使用 cocos2d v2 与 v1 相比的内容,我将不胜感激。
关于ios - Cocos2d v2.0 - 设置场景、图层、 Sprite 等,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/11574004/
|