あるアニメーションの進捗がある地点まで来た時に別のアニメーションをスタートさせます
- (void)startWhenAnimation:(NSAnimation *)animation reachesProgress:(NSAnimationProgress)startProgress
func startWhenAnimation(_ animation: NSAnimation, reachesProgress startProgress: NSAnimationProgress)
解説
あるアニメーションの進捗がある地点まで来た時に別のアニメーションをスタートさせます
返り値
なし
引数
animation
アニメーション
Objective-CNSAnimation *NSAnimation
reachesProgress
Objective-CNSAnimationProgressNSAnimationProgress
フレームワーク
ApplicationKit
クラス
NSAnimation
使用可能
10.4
関連記事(外部サイト)
例文
//アニメーション func animation(animation: NSAnimation, didReachProgressMark progress: NSAnimationProgress) { if (animation == theAnim001?){ NSLog("theAnim001") } if (animation == theAnim002?){ NSLog("theAnim002") } if (animation == theAnim003?){ NSLog("theAnim003") var returnValue = theAnim003.runLoopModesForAnimating? if ((returnValue) != nil){ for mode : AnyObject in returnValue! { NSLog("!! %@",mode as NSString) } } } if (animation == theAnim004?){ NSLog("theAnim004") } if (animation == theAnim005?){ NSLog("theAnim005") } if (animation == theAnim006?){ NSLog("theAnim006") } if (animation == theAnim007?){ NSLog("theAnim007") } if (animation == theAnim008?){ NSLog("theAnim008") } if (animation == theAnim008?){ NSLog("theAnim008") } if (animation == theAnim009?){ NSLog("theAnim009 %.1f",theAnim009.currentProgress) if (theAnim009.currentProgress > 0.5){ theAnim009.stopAnimation() NSLog("end") } } if (animation == theAnim010?){ NSLog("theAnim010 %.1f",theAnim010.currentProgress) if (theAnim010.currentProgress > 0.5){ theAnim010.stopAnimation() NSLog("end") } } if (animation == theAnim011?){ NSLog("theAnim011 %.2f %.2f ",theAnim011.currentValue,progress) if (theAnim011.currentProgress > 0.8){ theAnim011.stopAnimation() NSLog("end") } } if (animation == theAnim012?){ NSLog("theAnim012 %.2f",theAnim012.currentValue,progress) } if (animation == theAnim012sub?){ NSLog("theAnim012sub %.2f",theAnim012sub.currentValue,progress) } } //NSAnimation startWhenAnimation:reachesProgress @IBAction func function012(sender: AnyObject) { //NSAnimationProgress var progMarks : [NSAnimationProgress] = [ 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0 ] var i :Int var count :Int = 20 //アニメーション設定 theAnim012 = NSAnimation(duration: 10.0, animationCurve: NSAnimationCurve.EaseInOut) theAnim012.frameRate = 20.0 theAnim012.delegate = self theAnim012.animationBlockingMode = NSAnimationBlockingMode.Blocking //theAnim012.animationBlockingMode = NSAnimationBlockingMode.Nonblocking theAnim012.animationCurve = NSAnimationCurve.EaseInOut theAnim012.duration = 5.0 var mark:NSAnimationProgress = 0.3 theAnim012.addProgressMark(mark) // theAnim012sub = NSAnimation(duration: 10.0, animationCurve: NSAnimationCurve.EaseInOut) theAnim012sub.frameRate = 20.0 theAnim012sub.delegate = self theAnim012sub.animationBlockingMode = NSAnimationBlockingMode.Blocking //theAnim012.animationBlockingMode = NSAnimationBlockingMode.Nonblocking theAnim012sub.animationCurve = NSAnimationCurve.EaseInOut theAnim012sub.duration = 5.0 //登録 for (i = 0 ; i<count ; i++){ theAnim012.addProgressMark(progMarks[i]) //NSLog("theAnim012 %f",progMarks[i]) } for (i = 0 ; i<count ; i++){ theAnim012sub.addProgressMark(progMarks[i]) //NSLog("theAnim012sub %f",progMarks[i]) } dispatch_async(dispatch_get_main_queue()) { // self.theAnim012sub.startWhenAnimation(self.theAnim012,reachesProgress:mark) self.theAnim012.startAnimation() //self.theAnim012sub.startAnimation() } }
編集時バージョン
10.10.3
Swift1.2