0

私は画像付きのCALayerを持っていて、それを触るとアニメーションします。うまくいきます。素晴らしいです。私が今やりたいことは、同じ画像を押すと再生されるサウンド クリップも用意することです。CALayer は BounceView と呼ばれる UIView クラスに属しているため、これは難しいと思います。MainViewController に BounceView のインスタンスを作成しました。正しい用語を使用していない場合は、お詫び申し上げます。オーディオ コードを MainViewController に配置し、委譲を使用して、BounceView が MainViewController でメソッドをトリガーできるようにする必要がありますか? どんな助けや指示も大歓迎です。

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

MainViewController.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

BounceView.h

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

@interface BounceView : UIView
{
   CALayer *myLayer;  
}

@end

BounceView.m 要求があればこのコードを提供しますが、コードをオーバーロードしたくありません。ここで、新しいレイヤーを開いて作成し(初期化を割り当て)、サイズ、位置を指定し、UIImage を作成し、基になる CGImage を取得してレイヤーに配置し、ビューのレイヤーのサブレイヤーを作成します。

繰り返しますが、どんな助けも大歓迎です。

4

1 に答える 1

0

BounceView は UIViewController ではなく UIView クラスであるため、オーディオの再生を MainViewController に任せます。

于 2012-07-04T02:36:28.433 に答える