CAcapas y Audio

Tengo un CALayer con una imagen y tengo que se anima cuando lo toco, funciona, es genial. Lo que quiero hacer ahora también es tener un clip de sonido que se reproduzca cuando presiones la misma imagen. Estoy encontrando esto complicado porque CALayer es de la clase UIView llamada BounceView. Creé una instancia de BounceView en mi MainViewController. Me disculpo si no usé la terminología correcta. ¿Necesito colocar mi código de audio en mi MainViewController y luego usar la delegación para permitir que BounceView active un método en MainViewController? Cualquier ayuda o dirección es muy apreciada.

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 Proporcionaré este código si se solicita, pero no quiero sobrecargar el código. Aquí creo una nueva capa abierta (alloc init), le doy tamaño, posición, creo UIImage, obtengo CGImage subyacente y la coloco en la capa y luego hago una subcapa de la capa de la vista.

Una vez más, cualquier ayuda es muy apreciada.

preguntado el 04 de julio de 12 a las 02:07

también desea reproducir un clip de sonido en bounceView igual en mainVC, ¿verdad? -

Quiero reproducir un clip de sonido cuando toco/toco una capa/imagen en BounceView. -

coloque su reproductor de audio dentro del método donde inicia su capa/imagen, debería estar bien, luego haga que se detenga cuando necesite que comience. -

1 Respuestas

Dado que BounceView es una clase UIView, no un UIViewController, dejaría que el audio se reprodujera en MainViewController.

Respondido 04 Jul 12, 03:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.