2011-07-17 8 views
0

나는 약간의 벽을 치고 정말로 도움이된다.NSSlider의 mouseDown 이벤트

QTMovie의 조그 속도를 제어하는 ​​데 사용하는 NSSlider가 있습니다.

슬라이더 값에 따라 비디오 재생 속도를 원합니다. 이것은하기 쉽습니다.

문제는 사용자의 이벤트 "mouseUp"이 완료되면 NSSlider를 '0'으로 재설정하려고합니다. 이 이벤트가 작동하지 않는 것 같습니다. 따라서 NSSlider를 서브 클래 싱하고 mousedown & mouseup 메소드를 구현하고 NSSlider 서브 클래스에 대리자를 추가하고이를 내 응용 프로그램의 컨트롤러에 연결했습니다.

일종의 작품이지만 슬라이더에 막대한 지연이 있습니다. 슬라이드가 잘되지만 비디오 속도는 변경되지 않고 'mouseUp'일 때만 변경됩니다. 기본적으로 mouseDown이 마우스 업.

그 중 일부는 의미가 있습니다.

희망이 거기에 누군가가 나를 도울 수

건배,

아담

enter code here 

내 NSSlider 서브 클래스하는 .m 파일 :

@implementation TimeScrubberSlider 
  
@synthesize delegate; 
  
  
- (void)mouseDown:(NSEvent *)theEvent  { 
  
// dispatch_queue_t myQueue = dispatch_queue_create("com.mycompany.myqueue", 0); 
// dispatch_async(myQueue, ^{ 
  
  NSLog(@"mouseDown"); 
  [super mouseDown:theEvent]; 
  if ([delegate respondsToSelector: @selector(doScrubTime:)]) 
  { 
  [delegate doScrubTime:nil]; 
  } 
  [super mouseDown:theEvent]; 
  
//); 
// dispatch_release(myQueue); 
  
} 
  
  
- (void) mouseUp: (NSEvent*) theEvent 
{ 
  NSLog(@"mouseUp TimeScrubber"); 
  [super mouseUp:theEvent]; 
  [self setDoubleValue:0]; 
  if ([delegate respondsToSelector: @selector(doScrubTime:)]) 
  { 
  [delegate doScrubTime:nil]; 
  } 
  [super mouseUp:theEvent]; 
  
} 
  

답변

2

나는 그것을 생각 지금 일하고있어. 내가 TimeScrubberSlider라고 한 NSSlider의 서브 클래스에서

가, 다음 코드는 내가 필요한 것 같습니다 (잘하면 사람이 유용한를 찾을 수) :

#import "TimeScrubberSlider.h" 
#import "Controller.h" 

@implementation TimeScrubberSlider 

@synthesize delegate; 


- (void)mouseDown:(NSEvent *)theEvent { 

    [delegate doScrubTime:nil]; 
    [super mouseDown:theEvent]; 
    [self mouseUp:theEvent]; 

} 


- (void) mouseUp: (NSEvent*) theEvent 
{ 

    [self setIntValue:0]; 
    [delegate doPlay:nil]; 

} 

@end