预定方法中的 addChild
Posted
技术标签:
【中文标题】预定方法中的 addChild【英文标题】:addChild in scheduled method 【发布时间】:2012-12-20 09:33:15 【问题描述】:我是Cocos2d
的初学者,我遇到了一个我自己似乎无法解决的问题。我的问题是,如果我在预定的方法中添加CCSprite
,则添加的图像的背景将是不透明的(黑色),即使原点是透明的 PNG。但是代码更好地解释了我正在尝试做的事情,所以
- (void) openShutters
NSInteger randomTime = (arc4random() % 3) + 2;
[self schedule:@selector(openShutter) interval:0 repeat:1 delay:randomTime];
- (void) openShutter
NSInteger randomShutter = (arc4random() % [shutters count]);
CCSprite *soldier = [CCSprite spriteWithFile:@"soldier.png"];
soldier.anchorPoint = CGPointMake(0, 1);
soldier.position = ccp(0, winSize.height);
[self addChild:soldier];
[self unschedule:@selector(openShutter)];
[self openShutters];
这里奇怪的问题是,如果我在openShutters
方法中移动CCSprite *soldier = [CCSprite ...
,精灵将根据需要显示为透明背景。这是cocos-2d
中的错误、我的代码中的错误或者从预定方法中添加新子项不安全?
【问题讨论】:
【参考方案1】:在 openShutters 方法中,您分配 interval=0 此语句在设置大于零的间隔值工作正常后会产生问题
【讨论】:
将间隔设置为更高的值仍然会导致问题出现。 评论此声明 //[self openShutters];在 openShutter 方法中 您想在我的最后详细解释您的问题吗?它会在 1 秒后显示图像。 它也为我显示图像,问题是图像的背景不透明(见i.imgur.com/Xfkcs.png,士兵的背景是黑色的) 我认为两种情况是他们的第一种情况,请检查此 pixelFormat:kEAGLColorFormatRGBA8 在应用控制器中,第二种可能是士兵背景不透明,其他可能是您清除图层背景颜色的另一种情况以上是关于预定方法中的 addChild的主要内容,如果未能解决你的问题,请参考以下文章
如何将 dataGridView 预定义列与 sql 语句中的列绑定(不添加新列)?