gpt4 book ai didi

iphone - 如何处理 -hd 文件

转载 作者:行者123 更新时间:2023-12-03 16:01:59 26 4
gpt4 key购买 nike

编辑:按照第一个答案,我更深入地研究了stackoverflow,并将问题重新表述为°如何仅使用高清文件?”并发现:How do I stop Cocos2D from requiring standard definition resources (SD images)? 我现在将尝试建议的解决方案,如果可行,我将保留编辑过的标题和删除可能具有误导性的最初问题。

有一段时间我正在尝试学习 Cocos2d 并使用诸如 cookbook 之类的书籍和 learn cocos2d .这是一个很好的开始,但有时我会陷入像我今天要解释的那样的问题中。

我开始修改书中关于使用 CCParallaxNode 的示例 1在第 66 页。我的目标是添加以下大小的四层:960 像素高和 1280 像素宽,在带有 iOS 5.0 和 Cocos2d 1.01 rc 库的 iPhone 模拟器上运行。

我确实使用安装的模板创建了一个新项目,并修改了 HelloWorldLayer.m 类,如下所示:

// Import the interfaces
#import "HelloWorldLayer.h"

// HelloWorldLayer implementation
@implementation HelloWorldLayer
+(CCScene *) scene
{
// 'scene' is an autorelease object.
CCScene *scene = [CCScene node];

// 'layer' is an autorelease object.
HelloWorldLayer *layer = [HelloWorldLayer node];

// add layer as a child to scene
[scene addChild: layer];

// return the scene
return scene;
}

// on "init" you need to initialize your instance
-(id) init
{
// always call "super" init
// Apple recommends to re-assign "self" with the "super" return value
if( (self=[super init])) {

CCSprite* parallaxLayer01 = [CCSprite spriteWithFile:@"0-hd-red.png"];
CCSprite* parallaxLayer02 = [CCSprite spriteWithFile:@"0-hd-red.png"];
CCSprite* parallaxLayer03 = [CCSprite spriteWithFile:@"0-hd-red.png"];
CCSprite* parallaxLayer04 = [CCSprite spriteWithFile:@"0-hd-red.png"];

/**
CCSprite* parallaxLayer01 = [CCSprite spriteWithFile:@"0-hd.png"];
CCSprite* parallaxLayer02 = [CCSprite spriteWithFile:@"1-hd.png"];
CCSprite* parallaxLayer03 = [CCSprite spriteWithFile:@"2-hd.png"];
CCSprite* parallaxLayer04 = [CCSprite spriteWithFile:@"3-hd.png"];
**/

/**
CCSprite* parallaxLayer01 = [CCSprite spriteWithFile:@"2-hd.png"];
CCSprite* parallaxLayer02 = [CCSprite spriteWithFile:@"2-hd.png"];
CCSprite* parallaxLayer03 = [CCSprite spriteWithFile:@"2-hd.png"];
CCSprite* parallaxLayer04 = [CCSprite spriteWithFile:@"2-hd.png"];

**/
/**
CCSprite* parallaxLayer01 = [CCSprite spriteWithFile:@"bar.png"];
CCSprite* parallaxLayer02 = [CCSprite spriteWithFile:@"bar.png"];
CCSprite* parallaxLayer03 = [CCSprite spriteWithFile:@"bar.png"];
CCSprite* parallaxLayer04 = [CCSprite spriteWithFile:@"bar.png"];
**/
/**
CCSprite* parallaxLayer01 = [CCSprite spriteWithFile:@"bar-hd.png"];
CCSprite* parallaxLayer02 = [CCSprite spriteWithFile:@"bar-hd.png"];
CCSprite* parallaxLayer03 = [CCSprite spriteWithFile:@"bar-hd.png"];
CCSprite* parallaxLayer04 = [CCSprite spriteWithFile:@"bar-hd.png"];
**/

//Create a parallax node and add all four sprites
CCParallaxNode* parallaxNode = [CCParallaxNode node];
[parallaxNode setPosition:ccp(0,0)];
[parallaxNode addChild:parallaxLayer01 z:1 parallaxRatio:ccp(0, 0) positionOffset:ccp(0,0)];
[parallaxNode addChild:parallaxLayer02 z:2 parallaxRatio:ccp(1, 0) positionOffset:ccp(0,0)];
[parallaxNode addChild:parallaxLayer03 z:3 parallaxRatio:ccp(2, 0) positionOffset:ccp(0,0)];
[parallaxNode addChild:parallaxLayer04 z:4 parallaxRatio:ccp(3, 0) positionOffset:ccp(0,0)];
[self addChild:parallaxNode z:0 tag:1];

//Move the node to the left then the right
//This creates the effect that we are moving to the right then the left
CCMoveBy* moveRight = [CCMoveBy actionWithDuration:5.0f position:ccp(-80, 0)];
CCMoveBy* moveLeft = [CCMoveBy actionWithDuration:2.5f position:ccp(80, 0)];
CCSequence* sequence = [CCSequence actions:moveRight, moveLeft, nil];
CCRepeatForever* repeat = [CCRepeatForever actionWithAction:sequence];
[parallaxNode runAction:repeat];

}
return self;
}

// on "dealloc" you need to release all your retained objects
- (void) dealloc
{
// in case you have something to dealloc, do it in this method
// in this particular example nothing needs to be released.
// cocos2d will automatically release all the children (Label)

// don't forget to call "super dealloc"
[super dealloc];
}
@end

我确实尝试使用 4 运行代码,使用 GIMP 创建的带有 alpha channel 的 PNG 图像。它最初确实有效,现在不再有效。我不确定我做了什么来搞砸。

奇怪的是,带有图像 5它确实有效。

我已经检查过,建议使用 1024 x 1024 图像的 UIImage 规范存在限制。所以我做了并重新缩放了图像 6并创建图像 reduced image 3这在 UIImage 指定的限制内,但不起作用。

对于不工作,我的意思是代码崩溃并显示以下错误消息:
2012-04-19 17:14:29.189 ParallaxNodeTest[3713:10a03] cocos2d: cocos2d v1.0.1
2012-04-19 17:14:29.190 ParallaxNodeTest[3713:10a03] cocos2d: Using Director Type:CCDirectorDisplayLink
2012-04-19 17:14:29.226 ParallaxNodeTest[3713:10a03] cocos2d: OS version: 5.1 (0x05010000)
2012-04-19 17:14:29.227 ParallaxNodeTest[3713:10a03] cocos2d: GL_VENDOR: Apple Computer, Inc.
2012-04-19 17:14:29.228 ParallaxNodeTest[3713:10a03] cocos2d: GL_RENDERER: Apple Software Renderer
2012-04-19 17:14:29.229 ParallaxNodeTest[3713:10a03] cocos2d: GL_VERSION: OpenGL ES-CM 1.1 APPLE
2012-04-19 17:14:29.229 ParallaxNodeTest[3713:10a03] cocos2d: GL_MAX_TEXTURE_SIZE: 4096
2012-04-19 17:14:29.230 ParallaxNodeTest[3713:10a03] cocos2d: GL_MAX_MODELVIEW_STACK_DEPTH: 16
2012-04-19 17:14:29.231 ParallaxNodeTest[3713:10a03] cocos2d: GL_MAX_SAMPLES: 4
2012-04-19 17:14:29.233 ParallaxNodeTest[3713:10a03] cocos2d: GL supports PVRTC: YES
2012-04-19 17:14:29.234 ParallaxNodeTest[3713:10a03] cocos2d: GL supports BGRA8888 textures: YES
2012-04-19 17:14:29.235 ParallaxNodeTest[3713:10a03] cocos2d: GL supports NPOT textures: YES
2012-04-19 17:14:29.235 ParallaxNodeTest[3713:10a03] cocos2d: GL supports discard_framebuffer: YES
2012-04-19 17:14:29.235 ParallaxNodeTest[3713:10a03] cocos2d: compiled with NPOT support: NO
2012-04-19 17:14:29.236 ParallaxNodeTest[3713:10a03] cocos2d: compiled with VBO support in TextureAtlas : YES
2012-04-19 17:14:29.236 ParallaxNodeTest[3713:10a03] cocos2d: compiled with Affine Matrix transformation in CCNode : YES
2012-04-19 17:14:29.237 ParallaxNodeTest[3713:10a03] cocos2d: compiled with Profiling Support: NO
2012-04-19 17:14:29.268 ParallaxNodeTest[3713:10a03] cocos2d: surface size: 960x640
2012-04-19 17:14:29.336 ParallaxNodeTest[3713:10a03] cocos2d: Filename(0-hd-red.png) contains -hd suffix. Removing it. See cocos2d issue #1040
2012-04-19 17:14:29.337 ParallaxNodeTest[3713:10a03] cocos2d: CCFileUtils: Warning HD file not found: 0-red-hd.png
2012-04-19 17:14:29.338 ParallaxNodeTest[3713:10a03] cocos2d: CCTexture2D. Can't create Texture. UIImage is nil
2012-04-19 17:14:29.339 ParallaxNodeTest[3713:10a03] cocos2d: Couldn't add image:0-red.png in CCTextureCache
2012-04-19 17:14:29.340 ParallaxNodeTest[3713:10a03] cocos2d: Filename(0-hd-red.png) contains -hd suffix. Removing it. See cocos2d issue #1040
2012-04-19 17:14:29.340 ParallaxNodeTest[3713:10a03] cocos2d: CCFileUtils: Warning HD file not found: 0-red-hd.png
2012-04-19 17:14:29.341 ParallaxNodeTest[3713:10a03] cocos2d: CCTexture2D. Can't create Texture. UIImage is nil
2012-04-19 17:14:29.342 ParallaxNodeTest[3713:10a03] cocos2d: Couldn't add image:0-red.png in CCTextureCache
2012-04-19 17:14:29.342 ParallaxNodeTest[3713:10a03] cocos2d: Filename(0-hd-red.png) contains -hd suffix. Removing it. See cocos2d issue #1040
2012-04-19 17:14:29.343 ParallaxNodeTest[3713:10a03] cocos2d: CCFileUtils: Warning HD file not found: 0-red-hd.png
2012-04-19 17:14:29.344 ParallaxNodeTest[3713:10a03] cocos2d: CCTexture2D. Can't create Texture. UIImage is nil
2012-04-19 17:14:29.345 ParallaxNodeTest[3713:10a03] cocos2d: Couldn't add image:0-red.png in CCTextureCache
2012-04-19 17:14:29.345 ParallaxNodeTest[3713:10a03] cocos2d: Filename(0-hd-red.png) contains -hd suffix. Removing it. See cocos2d issue #1040
2012-04-19 17:14:29.346 ParallaxNodeTest[3713:10a03] cocos2d: CCFileUtils: Warning HD file not found: 0-red-hd.png
2012-04-19 17:14:29.365 ParallaxNodeTest[3713:10a03] cocos2d: CCTexture2D. Can't create Texture. UIImage is nil
2012-04-19 17:14:29.366 ParallaxNodeTest[3713:10a03] cocos2d: Couldn't add image:0-red.png in CCTextureCache
2012-04-19 17:14:29.367 ParallaxNodeTest[3713:10a03] *** Assertion failure in -[CCParallaxNode addChild:z:parallaxRatio:positionOffset:], /Users/daniele/Desktop/ParallaxNodeTest/ParallaxNodeTest/libs/cocos2d/CCParallaxNode.m:91
2012-04-19 17:14:29.369 ParallaxNodeTest[3713:10a03] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Argument must be non-nil'
*** First throw call stack:
(0x19e2022 0x1f7ccd6 0x198aa48 0x11af2cb 0x40661 0xb588e 0x3ba25 0xb5632 0xb4d3e 0x8164be 0x817274 0x826183 0x826c38 0x81a634 0x279aef5 0x19b6195 0x191aff2 0x19198da 0x1918d84 0x1918c9b 0x816c65 0x818626 0xb4816 0x24b5 0x1)

我认为图像大小不是这里的问题,因为我以前能够运行,但事实上它可以与图像一起使用 5而不是与其他图像 6建议我这与我如何使用 GIMP 创建 PNG 文件有关。

有胶水吗?我附上了 GIMP 设置的截图 4我正在使用(不是英文,将在下面提供翻译):

厚:
将颜色保存为背景,保存分辨率,保存创建日期,保存注释并保存透明点的颜色值。

不加厚:
隔行扫描(Adam7),保存 Gamma ,保存图层移动

settings

bar
badimage

最佳答案

为了使用视网膜图像,您必须在项目中包含 -hd 和非 hd 文件。它们不一定是合适的尺寸,但它们必须都存在。

所以如果你想使用一个名为 0-red.png 的文件,您必须包含 0-red.png0-red-hd.png .另外,请注意拥有 -hd位于文件名的末尾。

关于iphone - 如何处理 -hd 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10232539/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com