added muting property and delegate callback to override video tapping

This commit is contained in:
Luke Parham
2016-01-29 09:27:48 -08:00
parent af37a48421
commit 2d1499ab4f
5 changed files with 61 additions and 9 deletions

View File

@@ -24,6 +24,8 @@
@property (nonatomic, assign, readwrite) BOOL shouldAutoplay;
@property (nonatomic, assign, readwrite) BOOL shouldAutorepeat;
@property (nonatomic, assign, readwrite) BOOL muted;
@property (atomic) NSString *gravity;
@property (atomic) ASButtonNode *playButton;
@@ -39,5 +41,6 @@
@protocol ASVideoNodeDelegate <NSObject>
@optional
- (void)videoPlaybackDidFinish:(ASVideoNode *)videoNode;
- (void)videoNodeWasTapped:(ASVideoNode *)videoNode;
@end

View File

@@ -19,6 +19,8 @@
BOOL _shouldAutorepeat;
BOOL _shouldAutoplay;
BOOL _muted;
AVAsset *_asset;
@@ -31,6 +33,7 @@
ASDisplayNode *_playerNode;
ASDisplayNode *_spinner;
NSString *_gravity;
dispatch_queue_t _previewQueue;
}
@@ -137,6 +140,7 @@
AVPlayerLayer *playerLayer = [[AVPlayerLayer alloc] init];
if (!_player) {
_player = [AVPlayer playerWithPlayerItem:[[AVPlayerItem alloc] initWithAsset:_asset]];
_player.muted = _muted;
}
playerLayer.player = _player;
playerLayer.videoGravity = [self gravity];
@@ -176,10 +180,14 @@
- (void)tapped
{
if (_shouldBePlaying) {
[self pause];
if (self.delegate && [self.delegate respondsToSelector:@selector(videoNodeWasTapped:)]) {
[self.delegate videoNodeWasTapped:self];
} else {
[self play];
if (_shouldBePlaying) {
[self pause];
} else {
[self play];
}
}
}
@@ -209,11 +217,11 @@
[_player replaceCurrentItemWithPlayerItem:_currentItem];
} else {
_player = [[AVPlayer alloc] initWithPlayerItem:_currentItem];
_player.muted = _muted;
}
}
}
- (void)clearFetchedData
{
[super clearFetchedData];
@@ -231,11 +239,14 @@
if (_shouldAutoplay && _playerNode.isNodeLoaded) {
[self play];
} else if (_shouldAutoplay) {
_shouldBePlaying = YES;
}
if (isVisible) {
if (_playerNode.isNodeLoaded) {
if (!_player) {
_player = [AVPlayer playerWithPlayerItem:[[AVPlayerItem alloc] initWithAsset:_asset]];
_player.muted = _muted;
}
((AVPlayerLayer *)_playerNode.layer).player = _player;
}
@@ -256,7 +267,7 @@
[self addSubnode:playButton];
[_playButton addTarget:self action:@selector(play) forControlEvents:ASControlNodeEventTouchUpInside];
[_playButton addTarget:self action:@selector(tapped) forControlEvents:ASControlNodeEventTouchUpInside];
}
- (ASButtonNode *)playButton
@@ -310,6 +321,20 @@
return _gravity;
}
- (BOOL)muted
{
ASDN::MutexLocker l(_lock);
return _muted;
}
- (void)setMuted:(BOOL)muted
{
ASDN::MutexLocker l(_lock);
_muted = muted;
}
#pragma mark - Video Playback
- (void)play
@@ -330,6 +355,7 @@
AVPlayerLayer *playerLayer = [[AVPlayerLayer alloc] init];
if (!_player) {
_player = [AVPlayer playerWithPlayerItem:[[AVPlayerItem alloc] initWithAsset:_asset]];
_player.muted = _muted;
}
playerLayer.player = _player;
playerLayer.videoGravity = [self gravity];

View File

@@ -44,7 +44,6 @@
// Circle Drawing
UIBezierPath *ovalPath = [UIBezierPath bezierPathWithOvalInRect: buttonBounds];
[[UIColor colorWithWhite:0.0 alpha:0.5] setFill];
[ovalPath stroke];
[ovalPath fill];
// Triangle Drawing