- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
好吧,这个让我觉得自己像个彻头彻尾的白痴。
我的游戏中有一种方法,旨在通过一次弹出一个字母来为文本框中的文本设置动画。在我的 DDTextBox
类中,有一个名为 animateText
的动画方法。这是它的编码:
for (NSUInteger i = 1; i <= _text.length; i++)
{
[_scene runAction:[SKAction playSoundFileNamed:@"regularTextBeep.m4a" waitForCompletion:YES] completion:^{
[_scene runAction:[SKAction waitForDuration:0.2] completion:^{
((SKLabelNode*)[_scene childNodeWithName:@"textBoxText"]).text = (NSString*)[_text substringToIndex:i];
((SKLabelNode*)[_scene childNodeWithName:@"textBoxText"]).position = CGPointMake(20 + (((SKLabelNode*)[_scene childNodeWithName:@"textBoxText"]).frame.size.width / 2.0), ((SKLabelNode*)[_scene childNodeWithName:@"insideOfTextBox"]).frame.size.height - (((SKLabelNode*)[_scene childNodeWithName:@"textBoxText"]).frame.size.height / 2.0) - 15);
NSLog(@"Textbox loading a letter on iteration %u", i);
}];
}];
}
completion();
它的目的是使名为 textBoxText
的节点发生变化,因此它是字符串 _text
的子字符串,直到索引 i
,然后是 等到声音文件结束直到它移动到下一个字符。
目前,声音播放一次,所有文字同时弹出。有问题的音频文件长约 200 毫秒。我该怎么做才能一遍又一遍地播放同一个文件?我会在 [self runAction:completion:]
的方法调用之外声明 SKAction
吗?有什么想法吗?
最佳答案
您可以通过创建一系列操作来做到这一点。您可能需要进行一些调整。
NSMutableArray *marrActions = [NSMutableArray new];
for (NSUInteger i = 1; i <= _text.length; i++)
{
[marrActions addObject:[SKAction playSoundFileNamed:@"regularTextBeep.m4a" waitForCompletion:YES]];
[marrActions addObject:[SKAction waitForDuration:0.2]];
[marrActions addObject:[SKAction runBlock:^{
((SKLabelNode*)[_scene childNodeWithName:@"textBoxText"]).text = (NSString*)[_text substringToIndex:i];
((SKLabelNode*)[_scene childNodeWithName:@"textBoxText"]).position = CGPointMake(20 + (((SKLabelNode*)[_scene childNodeWithName:@"textBoxText"]).frame.size.width / 2.0), ((SKLabelNode*)[_scene childNodeWithName:@"insideOfTextBox"]).frame.size.height - (((SKLabelNode*)[_scene childNodeWithName:@"textBoxText"]).frame.size.height / 2.0) - 15);
NSLog(@"Textbox loading a letter on iteration %u", i);
}]];
}
[_scene runAction:[SKAction sequence:marrActions] completion:completion]; //Pass off the completion block here
关于ios - 等待 [SKAction playSoundFileNamed :waitForCompletion:],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29691320/
我目前使用的是 hadoop 2.7.2 我想知道 org.apache.hadoop.mapreduce.job 类 Job 中是否有另一种方法 可以替代方法 waitForCompletion()
好吧,这个让我觉得自己像个彻头彻尾的白痴。 我的游戏中有一种方法,旨在通过一次弹出一个字母来为文本框中的文本设置动画。在我的 DDTextBox 类中,有一个名为 animateText 的动画方法。
我正在使用 Swift2 开发一些 SpriteKit 游戏。我有一个2部分的音频句子(两部分都是根据实际游戏情况计算的),我想在第1部分完成后播放第2部分。 这两行声音立即同时播放 self.run
我正在对一些 Abaqus 模拟进行参数化扫描,因此我正在使用 waitForCompletion()防止脚本过早运行的功能。然而,有时参数组合会导致模拟在扫描中的一个或两个参数上挂起大约半小时到一个
我已经阅读了文档,所以我知道其中的区别。 但我的问题是,如果我想在集群上并行运行多个 Hadoop 作业,使用 .submit 而不是 .waitForComplete 是否有任何风险? 我主要使用
当两个节点发生冲突时,我试图删除重复播放的 MP3。 SKAction* gameBeat = [SKAction playSoundFileNamed:@"gameBeat.mp3" waitFor
我是一名优秀的程序员,十分优秀!