2011-08-21 24 views
7

Tôi đang cố gắng đặt Giá trị của UISlider thành Thời gian Hiện tại của AVPlayer.Đặt UISlider.value thành AVPlayer.currentTime

Tôi cố gắng để sử dụng mã này audioPlayer.currentTime = nowPlayingSlider.value;

Tôi nhận được lỗi này:
Setter method is needed to assign to object using property assignment syntax
Làm thế nào để có được điều này để làm việc.

Trả lời

9

Dưới đây là cách tôi xử lý này:

-(IBAction) timeScrubberChange:(id) sender{ 
CMTime t = CMTimeMake(self.nowPlayingTimeScrubber.value, 1); 
self.nowPlayingCurrentTime.text = [self formatTimeCodeAsString: t.value]; 
self.nowPlayingDuration.text = [self formatTimeCodeAsString:(self.actualDuration - t.value)]; 
[self.avPlayer seekToTime:t];         
} 
+2

Tôi đã làm một cái gì đó tương tự như thế này, nhưng tôi chạy vào các vấn đề nếu một người dùng scrobbled với thanh trượt quá nhanh. Về cơ bản, người chơi tải, scrobble trước khi chơi, và sau đó nhấn play. Nó giống như các avplayer bỏ qua sự tìm kiếm và đặt currentTime trở lại 0. – BBonifield

1

Có thể bạn đã làm theo cách khác?

Để đặt thanh trượt đến nơi hiện trong âm thanh nó nên là:

[nowPlayingSlider setValue:[audioPlayer currentTime]]; 

Để bỏ qua trong âm thanh theo một sự thay đổi của thanh trượt:

[audioPlayer setCurrentTime:nowPlayingSlider.value]; 

Hãy cho tôi biết nếu nó hoạt động.

+0

Thật không may setCurrentTime: không tồn tại –

+0

Nhưng phương pháp đầu tiên hoạt động –

+0

Bạn có thể đúng. Nhưng nó hoạt động với AVAudioPlayer. (Xem [this] (http://stackoverflow.com/questions/882753/avaudioplayer-currenttime-problem) câu hỏi.) – Mundi

3

Sam, kiểm tra này hai phương pháp:

-currentTime và -seekToTime:

Here

Họ là trong lớp AVPlayer