预定方法中的 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 语句中的列绑定(不添加新列)?

在android中开发预定的应用程序

没有简单的方法将 Tensorboard 输出添加到预定义的估计器函数 DnnClassifier?

如何从文件中获取数据并替换Sudoku游戏中的预定义数组

查找预定通知的快速方法