2016-10-27 5 views
0

スマートフォンでウインドウカバーを操作したい。 TPOSが目標位置され、0から100までの整数である。今、私は自分の携帯電話上の位置を変更するたびに、メソッドゴラン:ステアリングウインドウカバー

func main() { 
OnUpdate(func(tPos int) { 
    wc(tPos,cPos) 
    cPos = tPos 
    } 
} 

が呼び出されます。現在の位置cPosの変数もあります。 OnUpdateは、cPosとtPosの間の順序関係に応じて、ウィンドウを開閉する関数を呼び出す必要があります。この関数は次のようになります。

func wc(tPos int, cPos int){ 
    switch{ 
     case tPos == 0: 
      log.Println("close") 
     case tPos == 100: 
      log.Println("open") 
     case tPos > cPos: 
      t := time.Duration((tPos - cPos)*10*openTime) 
      log.Println("open") 
      time.Sleep(t * time.Millisecond) 
      log.Println("stop") 
     case tPos < cPos: 
      t := time.Duration((cPos - tPos)*10*closeTime) 
      log.Println("close") 
      time.Sleep(t * time.Millisecond) 
      log.Println("stop") 
    } 
} 

私の問題は、いくつかの遅延があるはずです。 OnUpdateが呼び出された後、3秒間のタイマーがあり、その後3秒間OnUpdateが再び呼び出されない限り、wcが呼び出されます。

しかし、私はこれを行う方法がわかりません。誰かがそれをする良い方法は何か教えてもらえますか?

答えて

0

あなたの意味については完全にはわかりませんが、とにかくそれを行こうと思います。 OnUpdateとは何ですか?それはあなたの電話ですか?あなたはにコールバック内でwcを呼び出す前に、の前に寝るだけですか??念頭に置いて

で見てください。私の理解では、あなたがwcがあまりにも頻繁に呼び出されていないことを確認したいということですhttps://play.golang.org/p/4vVpEEUcqg

for/selectの文は、runで、最大でも3秒に1回のみwcが呼び出されます。