Created
December 4, 2013 15:04
-
-
Save somtd/7788985 to your computer and use it in GitHub Desktop.
C4 Advent Calendar #4 SeekAndScale #BLOG
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// C4WorkSpace.m | |
// SeekAndScale | |
// | |
// Created by SOMTD on 2013/12/04. | |
// | |
@implementation C4WorkSpace { | |
C4Sample *sample; | |
C4Slider *slider; | |
//Level Circle | |
C4Shape *levelCircle; | |
//Masked Image | |
C4Image *maskedImage; | |
//Timer | |
C4Timer *meterUpdateTimer; | |
} | |
-(void)setup { | |
sample = [C4Sample sampleNamed:@"C4Loop.aif"]; | |
sample.loops = YES; | |
//metering enable | |
sample.meteringEnabled = YES; | |
[sample play]; | |
[self setupCircle]; | |
[self setupSlider]; | |
meterUpdateTimer = [C4Timer timerWithInterval:1/30.0f target:self method:@"updateMeters" repeats:YES]; | |
[meterUpdateTimer start]; | |
} | |
-(void)updateMeters { | |
[sample updateMeters]; | |
CGFloat avg = [C4Math pow:10 raisedTo:0.05 * [sample averagePowerForChannel:0]]; | |
float scale; | |
scale = 0.8 + (avg * 0.3); | |
[UIView animateWithDuration:1/30.0f animations:^{ | |
CGAffineTransform myTransform = CGAffineTransformMakeScale(scale, scale); | |
levelCircle.transform = myTransform; | |
maskedImage.center = self.canvas.center; | |
maskedImage.mask = levelCircle; | |
}]; | |
} | |
-(void)changeCurrentTime:(C4Slider *)aSlider { | |
sample.currentTime = aSlider.value * sample.duration; | |
} | |
-(void)updateSlider { | |
slider.value = sample.currentTime / sample.duration; | |
[self runMethod:@"updateSlider" afterDelay:0.01f]; | |
} | |
-(void)setupCircle | |
{ | |
maskedImage = [C4Image imageNamed:@"C4Sky.png"]; | |
maskedImage.width = self.canvas.width; | |
maskedImage.center = self.canvas.center; | |
levelCircle = [C4Shape ellipse:CGRectMake(0, 0, 240, 240)]; | |
levelCircle.center = CGPointMake(maskedImage.center.x, maskedImage.height/2) ; | |
maskedImage.mask = levelCircle; | |
[self.canvas addImage:maskedImage]; | |
} | |
-(void)setupSlider { | |
slider = [C4Slider slider:CGRectMake(0, 0, 320, 44)]; | |
slider.center = CGPointMake(self.canvas.center.x, self.canvas.height - 100); | |
[slider runMethod:@"changeCurrentTime:" target:self forEvent:VALUECHANGED]; | |
[self.canvas addSubview:slider]; | |
[self updateSlider]; | |
} | |
@end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment