0

我有一个带有图像的 CALayer,当我触摸它时,它会产生动画效果,它可以工作,非常棒。我现在想做的还有一个声音片段,当你按下相同的图像时播放。我发现这很棘手,因为 CALayer 来自名为 BounceView 的 UIView 类。我在 MainViewController 上创建了一个 BounceView 实例。如果我没有使用正确的术语,我深表歉意。我是否需要将我的音频代码放在我的 MainViewController 中,然后使用委托来允许 BounceView 触发 MainViewController 上的方法?非常感谢任何帮助或指导。

主视图控制器.h

#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import <QuartzCore/QuartzCore.h>
#import <AVFoundation/AVFoundation.h>
#import <CoreAudio/CoreAudioTypes.h>


@interface MainViewController : UIViewController <AVAudioPlayerDelegate>


@property (nonatomic, retain) IBOutlet UIView *BounceView;
@property (strong, nonatomic) AVAudioPlayer *audioPlayer;


- (IBAction)playAudio:(id)sender;

@end

主视图控制器.m

#import "MainViewController.h"
#import "BounceView.h"

@interface MainViewController ()

@end

@implementation MainViewController 
@synthesize BounceView;
@synthesize audioPlayer;

- (void)viewDidLoad
{
    [super viewDidLoad];

  //Setup the audio player
  NSURL *noSoundFileURL=[NSURL fileURLWithPath:
                       [[NSBundle mainBundle] 
                        pathForResource:@"InTheMood" ofType:@"mp3"]];
  self.audioPlayer =  [[AVAudioPlayer alloc] 
                     initWithContentsOfURL:noSoundFileURL error:nil];

  // Do any additional setup after loading the view, typically from a nib.
}

- (void)viewDidUnload
{  
  [super viewDidUnload];
  // Release any retained subviews of the main view.
}

- (void)loadView
{
  NSLog(@"loadView");
  // Create a view
  CGRect frame = [[UIScreen mainScreen] bounds];
  BounceView *v = [[BounceView alloc] initWithFrame:frame];

  // Set it as *the* view of this view controller
  [self setView:v];    
}

- (IBAction)playAudio:(id)sender {
  //    self.audioPlayer.delegate=self;
  [self.audioPlayer play];
}


@end

弹跳视图.h

#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import <QuartzCore/QuartzCore.h>
#import "MainViewController.h"

@interface BounceView : UIView
{
   CALayer *myLayer;  
}

@end

BounceView.m 如果需要,我将提供此代码,但我不想重载代码。在这里,我创建新层打开(alloc init),给它大小,位置,创建 UIImage,获取底层 CGImage 并将其放在层上,然后创建视图层的子层。

再次,非常感谢任何帮助。

4

1 回答 1

0

由于 BounceView 是一个 UIView 类而不是 UIViewController,我会让播放音频到 MainViewController。

于 2012-07-04T02:36:28.433 回答