想做一个关键帧线性插值动画,用NSSlider滑条开控制帧数,即滑条每向右滑一格进入下一帧。这里的动画是关于一条Bezier曲线的,由5个关键点组成,主要是线性插值关键点的起始和终止帧。
drawRect里面是:
- (void)drawRect:(NSRect)rect {
? ??NSRect?bounds = self?bounds];?// Fill the view with green
? ??NSColor?greenColor]?set];
? ??start?moveToPoint:NSMakePoint(120,100)];
? ??NSArray?*startArray = self?startPoint];
? ??NSArray?*endArray = self?endPoint];
?? ?
? ??float?t;
? ??t=(float)sliderValue/50; ? ? ? ? ? ? ? ? ? ? ???//sliderValue是滑块的值 以下为线性插值是代码
? ??NSLog(@"S = %d",?sliderValue);
? ??int?j;
? ??NSPoint?sp;
? ??for(j=0;j<5;j++){
? ? ? ??NSValue?*value1=; ? //这里是两个Bezier曲线,起始图形和终止图形,由5个关键点组成
? ? ? ??NSValue?*value2=;
? ? ? ??NSPoint?sp0,sp1;
? ? ? ??;//将NSValue转换回NSPoint
? ? ? ??;//将NSValue转换回NSPoint
? ? ? ??sp.x=(1-t)*sp0.x+t*sp1.x;
? ? ? ??sp.y=(1-t)*sp0.y+t*sp1.y;
? ? ? ??start?lineToPoint:sp];
? ??}
? ??start?closePath];
? ??NSBezierPath?fillRect: bounds];
? ??NSColor?whiteColor]?set];start?stroke];?
}
-(void)reloadView ? ? ? ? ? ? ? ? ? ? ? ? ??
{
self?setNeedsDisplay:YES];?//想用setNeedsDisplay重画rect,每次滑块变化调用reloadView函数 但是不起作用
}
-(IBAction)updateLabel:(id)sender {
? ??sliderValue?= slider?intValue];
? ??label?setIntValue:sliderValue];?//数字转字符串
? ??self?reloadView];
?? ?
}
请问一下大神们这是什么原因啊