2017-11-02 144 views
5

hız veya Arc hattıyla eş-kökenli Pin'e dokunulduğunda zaman artar.Ben açısına göre tekerleği döndürerek üzerindeki ses çalma ve</p> <p>Ben sağda Çal Ses istiyorum dönen tekerleğin hızını koordine etmek istiyorum

Ayrıca, Dokunma gibi dokunulduğunda Pin üzerinde Animasyon İstiyor.

Ses Çal ama Ses Sürekli oynamak ve arayan Tuval çarkı

@Override 
protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 
    drawWheelBackground(canvas); 
    initComponents(); 

    float tempAngle = 0; 
    float sweepAngle = 360/mWheelItems.size(); 
    if (this.mWheelItems != null) { 

     Log.e("mWheelItems.size()", String.valueOf(mWheelItems.size())); 
     for (int i = 0; i < mWheelItems.size(); i++) { 
      archPaint.setColor(mWheelItems.get(i).color); 
      archPaint1.setColor(Color.WHITE); 

      canvas.drawArc(range, tempAngle, sweepAngle, true, archPaint2); 
      canvas.drawArc(range, tempAngle, sweepAngle, true, archPaint); 

      drawImage(canvas, tempAngle, mWheelItems.get(i).bitmap, mWheelItems.get(i).mvalue, sweepAngle); 

     } 

     if (!(this.resourcePlayer == null)) { 

      if (this.resourcePlayer.isPlaying()) { 
       resourcePlayer.setVolume(100, 100); 
       this.resourcePlayer.seekTo(0); 

      } else { 

       this.resourcePlayer.start(); 

      } 
     } 

    } 
} 

Rotasyon göre Koordinatlar değil wheelItemCenter göre ve 360 ​​derece

final float wheelItemCenter = 180 - getAngleOfIndexTarget(target) + (360/mWheelItems.size())/2; 

    animate().setInterpolator(new DecelerateInterpolator()) 
      .setDuration(DEFAULT_ROTATION_TIME) 
      .rotation((360*5) + wheelItemCenter) 
Yani ben eğer

enter image description here

+0

Çalışma zamanı denetimi için jsfiddle bağlantısı sağlayabilirsiniz. – spankajd

+1

Hayır, jsfiddle kullanmıyorum bu android tuval tarafından herhangi bir js kullanarak değil ... –

cevap

2

Doğru anlamak, sesi direksiyonun hızına göre ayarlamak ve pimlerden birine her vurduğunda çalmak istiyorsunuz.

Pimden birine her vurduğunda çalma, bir matematik sorusu olmalı, sürekli çalınırsa bu, tekerleğin hızla dönmesi anlamına gelir ve çalmakta olduğunuz ses, iki pini atma arasındaki süreden daha uzun olur , Sanırım.

Sesinizin speed ve pitch ile oynayabilirsiniz. MediaPlayer kullanıyorsanız, this'a göre PlaybackParams'u değiştirebilirsiniz - setPitch ve setSpeed'a bakın.

Tekerleğiniz ne kadar hızlı olursa, sesinizin hızı/aralığı o kadar yüksek olur. Ne kadar yavaş olursa, sesi de yavaşlatırsınız.

+0

Bu yolda gitmek olmaz, hiç bir iplik tekerleği duydun mu? Her isabette oynatmak için yeni bir konu başlatmayı isterim. – PanBrambor