【问题标题】:Play sound and animation播放声音和动画
【发布时间】:2014-01-02 08:56:27
【问题描述】:

我有一个动画,当按下按钮时它会播放。

我需要同时播放声音。

如果快速连续按下按钮两次,声音会在第二次按下时从头开始播放,但动画只会循环一次,因为声音比动画长度短。

有人对此有解决方案吗?

也许有一种方法可以让声音按钮只有在动画播放完毕后才能再次工作?

//Panel 1 Sound Button Action.
- (IBAction)playSound:(id)sender {
    AudioServicesPlaySystemSound(SoundID);


//Panel 1 Sound
    NSURL *buttonURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"panel01" ofType:@"wav"]];
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)buttonURL, &SoundID);

【问题讨论】:

    标签: ios animation audio


    【解决方案1】:

    让按钮触发一个既开始播放声音又开始动画的动作。

    如果您希望声音立即开始播放,请在视图控制器的 viewDidLoad 方法中加载声音播放器,并调用 prepareToPlay。这将完成所有准备工作,让您的声音准备好快速播放。

    让操作方法将按钮设置为启用=否,这样用户就不能单击它两次。使用包含完成块的动画方法(如 animateWithDuration:animations:completion)。在完成块中,再次设置 enabled=true。还要在完成块中再次调用声音的 prepareToPlay 方法,让它准备好再次播放。

    【讨论】:

    • 我非常感谢这个答案!请您提供上述答案的代码示例吗?我敢打赌这正是我需要的!写的时候要吸收很多东西。谢谢邓肯。
    • 好的,我想播放的声音不再是问题了,我只需要让它在动画完成并再次按下按钮之前不会再次播放声音,我熟悉按钮启用代码,事实上我在这个应用程序中使用了它来做其他事情,我只是不太了解完成块代码,请你提供一个例子吗?谢谢
    • 贴出你的动画代码,我会给你一些修改方法的指导。
    • 谢谢!这段代码看起来很棒,我会尽快尝试。我也会用动画代码更新问题。
    【解决方案2】:

    我无法在评论中发布代码,所以我开始另一个答案。您的按钮操作方法可能如下所示:

    -(void) buttonPressed: (UIButton *) button;
    {
      //Play the sound here.
      [UIView animateWithDuration: .5
        animations: 
        ^{
          button.enabled = NO; //Disable the button while the animation is running
          //Your animation code goes here
        }
        completion: 
        ^{
          button.enabled = YES;  //Re-enable the button once the animation is finished.
        }
      ];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多