2016-04-17 8 views
0

私は簡単なドラムマシンを作ります。この機能は、演奏される各サンプル間の時間をコントロールします(ドラムマシンのテンポをコントロールします)。私はスライダーでテンポをコントロールする必要があるので、可能ならばこれを使って '次のステップまでの時間の長さ'の値をコントロールできるようにしたいと考えています。私はこれを行うにしようとしたときしかし、それは私に指示NSTimeIntervalはスライダーがテンポスライダーの問題 - ドラムシーケンサーObj - C

を宣言されている互換性のないタイプここで

である。これは、私に語っ

-(void)run 
{ 
    @autoreleasepool 
    { 
     // get current time 
     NSDate* time = [NSDate date]; 

     // keeping going around the while loop if the sequencer is running 
     while (self.running) 
     { 
      // sleep until the next step is due 
      [NSThread sleepUntilDate:time]; 

      // update step 
      int step = self.step + 1; 

      // wrap around if we reached NUMSTEPS 
      if (step >= NUMSTEPS) 
       step = 0; 

      // store 
      self.step = step; 

      // time duration until next step 
      time = [time dateByAddingTimeInterval:0.5]; 
     } 

     // exit thread 
     [NSThread exit]; 
    } 
} 

「時間がNSDateの一部です」

.M

- (IBAction)sliderMoved:(UISlider *)sender 
{ 
    AppDelegate* app = [[UIApplication sharedApplication] delegate]; 

    if (sender == self.tempoSlider) 
    { 
     PAEControl* tempoControl = app.tempoControls[app.editIndex]; 
     tempoControl.value = self.tempoSlider.value; 
    } 
} 

の.h

@interface DetailController : UIViewController 
@property (weak, nonatomic) IBOutlet UISlider *tempoSlider; 
- (IBAction)sliderMoved:(UISlider *)sender; 

助けを借りていただければ、ありがとうございます。

答えて

1

のように見えます。self.tempoControlsは、PAEControlのオブジェクトです。 dateByAddingTimeInterval:という名前のメソッドは、タイプNSTimeInterval別名)の引数を必要とします。代わりにこの配列を渡そうとしているようです。多分これに

time = [time dateByAddingTimeInterval: self.tempoControls]; 

- -

は、この行を変更してみてください

PAEControl* tempoControl = self.tempoControls[self.editIndex]; 
time = [time dateByAddingTimeInterval: (NSTimeInterval)tempoControl.value]; 

別のノートでは、これはすべてあなたがそれをブロックしていることに注意して、メインスレッド上で実行されている場合と、 UIが非常に応答しなくなります。

関連する問題