React ile basit bir müzik çalar oluşturun

Tepki kullanıcı arayüzleri oluşturmak için popüler bir JavaScript kitaplığıdır ve bu eğitimde size basit bir etkileşimli müzik çalar oluşturmak için nasıl kullanılacağını göstereceğim. CodePen'de çalışacağız ve bu projeyi bir React uygulaması içinde çevrimdışı olarak da yazabilirsiniz, çünkü tüm bileşenler oldukça kolay bir şekilde bir depoya taşınabilir.

Keşfedeceğiz sahne , durum React ekosisteminde bileşenlerin birlikte nasıl çalıştığını ve birbirleriyle nasıl iletişim kurduğunu. Ayrıca kullanıyoruz Harika Yazı Tipi , bu yüzden bunun CodePen CSS panelinize dahil edildiğinden emin olun.



photoshop'ta bir kişi bir resimden nasıl kesilir

React ile çok hızlı bir şekilde çalışmaya başlamanızı sağlamak için, CodePen'de sizin için bir koleksiyon ve aşamalara ayırın, böylece herhangi bir noktada atlayabilir, adımı çatallayabilir ve oradan ileri gidebilirsiniz. CSS'yi de sizin için yazdım, böylece sadece React'e ve nasıl çalıştığına odaklanabilirsiniz.



React kullanıcı arayüzünü oluşturun

Başlayalım! İlk olarak, React'te bazı bileşenler oluşturmalıyız. Kodu alacağız Eşlik eden Kalemdeki 1. Adım ve onu bileşenlere dönüştürün. Diğer her şeyi içine koyacağımız ana bileşeni oluşturarak başlayalım. Bu bileşeni arayacağız oyuncu .

Bir bileşen oluşturma kodu şuna benzer:



let Player = React.createClass({ render: function() { return ( // This is a child component, nested inside. )} });

Kullanmanız gerektiğini unutmayın sınıf adı Çünkü sınıf JavaScript'te saklıdır. Sağlanan CodePen'e gidin ve orada bulduğunuz temel HTML'yi React bileşenlerine dönüştürün.

Daha sonra React'te iki harika konsepte odaklanacağız: durum ve sahne . Henüz hiçbir şey görmeyeceksiniz çünkü uygulamamızı oluşturmadık.

Rendering, State, Props

React mükemmelliğimizi oluşturmak için, araca kendisini DOM'da nereye yerleştireceğini söylememiz gerekir. Bunu yapmak için kullanıyoruz ReactDOM.render () . Bunun kodunu CodePen'de Adım 2'de bulacaksınız.



ReactDOM.render(, document.querySelector('body'));

Her şeyi doğru yaptıysanız, oyuncunun göründüğünü görmelisiniz. Sonra biz inşa edeceğiz sahne nesne. sahne özelliklerin kısaltmasıdır ve bunlar, kullanmaları için bileşenlerinize ilettiğiniz bilgi parçalarıdır. Oyuncuya parça için bazı bilgiler vermemiz gerekiyor, o yüzden şimdi yapacağız.

Bu demo için biz

Bu demo için Odesza'nın 'We Were Young' eserini kullandık. Grubun Summer's Gone LP'sini ücretsiz olarak almak için resme tıklayın

Sizin sahne nesne içeride saklanır getDefaultProps ve şöyle görünmelidir:

adobe premiere pro cc ücretsiz 2016 nasıl edinilir
getDefaultProps: function() { return { track: { name: 'We Were Young', artist: 'Odesza', album: 'Summer's Gone', year: 2012, artwork: 'https://funkadelphia.files.wordpress.com/2012/09/odesza-summers-gone-lp.jpg', duration: 192, source: 'https://s3-us-west-2.amazonaws.com/s.cdpn.io/557257/wwy.mp3' }} }

Ayrıca bir durum şarkının geçerli saatini ve çalma / duraklatma durumunu saklamak için nesne:

getInitialState: function() { return { playStatus: 'play', currentTime: 0 } }

Uygulamanızın durumu sürekli olarak değişir ve durum nesne. React'i yazarken bunu hatırlamak önemlidir, çünkü bu duruma bir özellik olarak dayanan bileşenler, durum değiştiğinde değişecektir. React'i birlikte çalışmayı bu kadar harika yapan şey, değişiklikleri sizin için hesaplaması ve sayfa değiştiğinde DOM'u verimli bir şekilde güncellemesidir. Her şey senkronize kalır.

Sahne ve durum geçen

Şimdi geçeceğiz sahne ve durum bileşenlerimize değerler ( Aşama 3 ). bizim oyuncu bileşen şimdi şöyle görünmelidir:

render: function() { return ( Now playing )}

Daha sonra bu değerleri alt bileşenlerimizde toplayabiliriz. Örneğin:

var Timestamps = React.createClass({ render: function() { return ( {this.props.currentTime} {this.props.duration} )} });

Bakın CodePen'de 4. adım tüm aksesuarların nasıl aktarıldığını ve alt bileşenlerde kullanıldığını görmek için.

Süre hesaplama

Şu anda zaman damgaları sadece basit sayılardır. Uygulamamızda kullanılmadan önce bunları zaman damgalarına dönüştürmemiz gerekiyor. Bunu, bileşenimizin içine bir işlev yazarak yapacağız:

convertTime: function(timestamp) { let minutes = Math.floor(timestamp / 60); let seconds = timestamp - (minutes * 60); if (seconds < 10) { seconds = '0' + seconds; } timestamp = minutes + ':' + seconds; return timestamp; }

Daha sonra bunu bizim Zaman damgaları bileşen:
{this.convertTime (this.props.currentTime)} .

Oynat ve duraklat

Bir işlevi bir tıklamada Oynat / Duraklat düğmesinin olayı ve ana bileşene geri aktarın: .

bir video oyunu karakteri nasıl oluşturulur

Geçişimiz şuna benzer:

togglePlay: function() { let status = this.state.playStatus; let audio = document.getElementById('audio'); if(status === 'play') { status = 'pause'; audio.play(); } else { status = 'play'; audio.pause(); } this.setState({ playStatus: status }); }

Kodu, simgeyi temsil eden bir ok yerine geçecek şekilde ayarlamamız gerekir.

Kodu, 'oynat'ı temsil eden bir ok ve' duraklatmayı 'temsil eden iki paralel çizgi arasında geçiş yapacak şekilde ayarlamamız gerekir.

Ayrıca, render fonksiyonunun içine bir miktar kod eklememiz gerekiyor. Kontroller Simgeyi 'Oynat' dan 'Duraklat' a değiştirmek için bileşen ve şarkı çalarken zaman damgalarını güncellemek için başka bir işlev.

render: function() { let classNames; if (this.props.isPlaying == 'pause') { classNames = 'fa fa-fw fa-pause'; } else { classNames = 'fa fa-fw fa-play'; } return {...} }

Önceden zaman damgalarımızın güncellenmesini işlemek için bir fonksiyon yazmamız gerekiyor. Daha sonra başka bir şey için kullanmak istememiz durumunda, bu kodu ayrı tutmak en iyisidir.

updateTime: function(timestamp) { timestamp = Math.floor(timestamp); this.setState({ currentTime: timestamp }); }

Sayılarınızı zaman damgalarına dönüştürmek için bir işlev yazın

Sayılarınızı zaman damgalarına dönüştürmek için bir işlev yazın

Son olarak, güncellememiz gerekiyor playToggle arama işlevi Güncelleme zamanı üzerinde işlev setInterval .

... audio.play(); let _this = this; setInterval(function() { ..... _this.updateScrubber(percent); _this.updateTime(currentTime); }, 100); ...

İlerlemek

Yani şimdi parlak çalışan bir müzik çalara sahip olmalısınız. Burada daha ileri gidebilir ve şarkıyı ileri geri oynatmak için özellikler ekleyebilirsiniz. e.pageX veya yaklaşan parça kimliklerini bir dizi, sonraki ve önceki düğmelere kaydederek Çalma Listesi işlevselliği ekleyin. Eğer takılırsanız, @kafadergisi - Yardımcı olmaktan memnuniyet duyarım! Eğlenmene bak ve iyi şanslar.

Bu makale ilk olarak net dergi sayı 289; buradan satın al !

çocuk kitapları için nasıl illüstratör olunur

İlgili Makaleler: