ソースコード
package main
import (
"log"
"os"
"github.com/hajimehoshi/ebiten/audio"
"github.com/hajimehoshi/ebiten/audio/wav"
"github.com/hajimehoshi/ebiten/ebitenutil"
"github.com/hajimehoshi/ebiten"
)
var (
text = `The Adventures of Tom Sawyer is set in the
1840's in the fictitious town of St. Petersburg,
Missouri, where Tom lives with his deceased mother's
sister, Aunt Polly, and his half-brother, Sid.
After Tom plays hooky from school, he is made to
whitewash Aunt Polly's fence as punishment, but
persuades his friends to do it for him.`
count = 0
frameCount = 0
audioContext *audio.Context
audioPlayer *audio.Player
)
func init() {
var err error
audioContext, err = audio.NewContext(44100)
if err != nil {
log.Fatal(err)
}
f, err := os.Open("SE/keyboard.wav")
if err != nil {
log.Fatal(err)
}
d, err := wav.Decode(audioContext, f)
if err != nil {
log.Fatal(err)
}
audioPlayer, err = audio.NewPlayer(audioContext, d)
if err != nil {
log.Fatal(err)
}
audioPlayer.SetVolume(0.10)
}
func update(screen *ebiten.Image) error {
frameCount++
if ebiten.IsDrawingSkipped() {
return nil
}
ebitenutil.DebugPrintAt(screen, text[:count], 5, 5)
if count < len(text) && frameCount%5 == 0 {
audioPlayer.Rewind()
audioPlayer.Play()
count++
frameCount = 0
}
return nil
}
func main() {
if err := ebiten.Run(update, 330, 240, 2, "moveSentence"); err != nil {
log.Fatal(err)
}
}
動いている様子
音量が大きいので注意してください。
キーボードの音源:魔王魂 フリー効果音素材「機械音」 パソコン03(https://maoudamashii.jokersounds.com/list/se14.html)
表示している文章は、著作権フリーの文章があるサイト「Lit2Go」にある
「The Adventures of Tom Sawyer」の冒頭を使用しました。
使用している関数の解説
func DebugPrintAt(image *ebiten.Image, str string, x, y int)
imageの(x座標, y座標)の位置にstrを表示するfunc (p *Player) SetVolume(volume float64)
pに設定されている音源の音量をvolumeに設定するvolumeに設定可能な値 : 0.0 ~ 1.0(float64)
func (p *Player) Rewind() error
pに設定されている音源の開始位置を先頭まで巻き戻すfunc (p *Player) Play() error
pに設定されている音源を再生する参考URL
https://godoc.org/github.com/hajimehoshi/ebitenhttps://godoc.org/github.com/hajimehoshi/ebiten/ebitenutil
https://godoc.org/github.com/hajimehoshi/ebiten/audio