Проблемы с получением MPMoviePlayer касаний и зацикливанием видео из словаря - PullRequest
0 голосов
/ 24 марта 2011

У меня есть firstviewcontroller, где я играю случайное видео из словаря, содержащего URL. В первый раз, когда у меня все хорошо, мое видео воспроизводится, когда заканчивается первое видео, и я снова вызываю свой playmovieaturl, у меня не получается набрать

MPMoviePlayerViewController *temp = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL fileURLWithPath:path]];

Получение exec_bad_access. Также я не получаю никаких прикосновений. В отладке у меня есть правильный путь, прежде чем я попытаюсь сделать мой фильм-плеер

код здесь в patesbin http://pastebin.com/mHpANBq3 также почтовый индекс ниже

.h

//
//  FirstViewController.h
//  MidStates
//
//

#import <UIKit/UIKit.h>
#import <MediaPlayer/MediaPlayer.h>


@interface FirstViewController : UIViewController {
    NSArray *vidArray;
    NSMutableDictionary *vidDic;
    MPMoviePlayerViewController *mvc;
}

@property (nonatomic, retain) NSArray *vidArray;
@property (nonatomic, retain) NSMutableDictionary *vidDic;
@property (nonatomic, retain) MPMoviePlayerViewController *mvc;

-(void)playMovieAtURL;
-(void)loadArray;
-(void)reset;
@end

.m

//
//  FirstViewController.m
//  MidStates
//
//

#import "FirstViewController.h"


@implementation FirstViewController
@synthesize vidArray, vidDic, mvc;

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
    [self loadArray];
    [super viewDidLoad];
}

-(void)loadArray{
    NSMutableDictionary *tempDic = [NSMutableDictionary new];
    //Trial dictionary will be loaded with multiple values at some point
    [tempDic setObject:@"mp4" forKey:@"euromount_high_res"];
    self.vidDic = tempDic;
    NSArray *tempArray = [tempDic allKeys];
    self.vidArray = tempArray;
    [tempDic release];
    [tempArray release];
    [self playMovieAtURL];
}

-(void) playMovieAtURL
{
    int rand = arc4random() % [self.vidArray count];
    NSString *key = [self.vidArray objectAtIndex:rand];
    NSString *path = [[NSBundle mainBundle] pathForResource:key ofType:[self.vidDic valueForKey:key]];

    MPMoviePlayerViewController *temp = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL fileURLWithPath:path]];

    temp.moviePlayer.scalingMode = MPMovieScalingModeAspectFill;
        temp.moviePlayer.shouldAutoplay = TRUE;
    temp.moviePlayer.controlStyle = MPMovieControlStyleNone;

    // Register for the playback finished notification.
    [[NSNotificationCenter defaultCenter] addObserver:self
                                                                                         selector:@selector(myMovieFinishedCallback:)
                                                                                                 name:MPMoviePlayerPlaybackDidFinishNotification
                                                                                           object:[temp moviePlayer]];

    self.mvc = temp;
    [temp release];
    [self presentModalViewController:self.mvc animated:YES];
    // Movie playback is asynchronous, so this method returns immediately.
    [self.mvc.moviePlayer play];
}

// When the movie is done,release the controller.
-(void)myMovieFinishedCallback:(NSNotification*)aNotification
{
    MPMoviePlayerController* theMovie=[aNotification object];
    [[NSNotificationCenter defaultCenter] removeObserver:self
                                                    name:MPMoviePlayerPlaybackDidFinishNotification
                                                  object:self.mvc.moviePlayer];

    // Release the movie instance created in playMovieAtURL
    [theMovie release];
    [self loadArray];
}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    //implement switch to second view of tabbarviewcontroller
}

-(void)reset{
    [self.mvc release];
    self.mvc = nil;
    [self loadArray];
}

- (void)dealloc
{
    [super dealloc];
}

@end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...