Dog Animation Demo – Fyne GUI Golang tutorial 48
Dog Animation Demo – Fyne GUI Golang tutorial 48
Source Code
<div>
<div>package main</div>
<div>import (</div>
<div> "math/rand"</div>
<div> "time"</div>
<div> "fyne.io/fyne/v2"</div>
<div> "fyne.io/fyne/v2/app"</div>
<div> "fyne.io/fyne/v2/canvas"</div>
<div> "fyne.io/fyne/v2/container"</div>
<div> "fyne.io/fyne/v2/storage"</div>
<div> "fyne.io/fyne/v2/widget"</div>
<div>)</div>
<div>func main() {</div>
<div> a := app.New()</div>
<div> w := a.NewWindow("Dog And Cat Play")</div>
<div> x := float32(10)</div>
<div> y := float32(10)</div>
<div> rand.Seed(time.Now().UnixNano())</div>
<div> cx := float32(rand.Intn(400))</div>
<div> cy := float32(rand.Intn(400))</div>
<div> w.Resize(fyne.NewSize(400, 400))</div>
<div> entry := widget.NewEntry()</div>
<div> entry.Resize(fyne.NewSize(200, 40))</div>
<div> entry.Move(fyne.NewPos(100, 100))</div>
<div> label := widget.NewLabel("Your selection")</div>
<div> label.Resize(fyne.NewSize(200, 70))</div>
<div> label.Move(fyne.NewPos(110, 60))</div>
<div> entry2 := widget.NewSelectEntry([]string{"Item 1", "Item 2"})</div>
<div> entry2.SetPlaceHolder("Select one or type")</div>
<div> entry2.Resize(fyne.NewSize(200, 40))</div>
<div> entry2.Move(fyne.NewPos(100, 180))</div>
<div> cat_img := canvas.NewImageFromURI(storage.NewFileURI("cat.png"))</div>
<div> cat_img.Resize(fyne.NewSize(100, 100))</div>
<div> cat_img.Move(fyne.NewPos(cx, cy))</div>
<div> // entry.OnChanged(x := entry2.Text)</div>
<div> dog_img := canvas.NewImageFromURI(storage.NewFileURI("dog.png"))</div>
<div> dog_img.Resize(fyne.NewSize(100, 100))</div>
<div> dog_img.Move(fyne.NewPos(100, 180))</div>
<div> down_btn := widget.NewButton("Down", func() {</div>
<div> // x = float32(x + 10)</div>
<div> n := float32(y + 10)</div>
<div> canvas.NewPositionAnimation(</div>
<div> fyne.NewPos(n, y),</div>
<div> fyne.NewPos(x, n),</div>
<div> canvas.DurationStandard,</div>
<div> func(p fyne.Position) {</div>
<div> dog_img.Move(p)</div>
<div> dog_img.Refresh()</div>
<div> }).Start()</div>
<div> //dog_img.Move(fyne.NewPos(x, y))</div>
<div> dog_img.Refresh()</div>
<div> y = n</div>
<div> })</div>
<div> // anim1 := canvas.NewPositionAnimation(</div>
<div> // fyne.NewPos(x, y),</div>
<div> // fyne.NewPos(x+10, y+10),</div>
<div> // canvas.DurationStandard,</div>
<div> // func(p fyne.Position) {</div>
<div> // dog_img.Move(p)</div>
<div> // dog_img.Refresh()</div>
<div> // })</div>
<div> up_btn2 := widget.NewButton("Up", func() {</div>
<div> // x = float32(x - 10)</div>
<div> n := float32(y - 10)</div>
<div> //n := float32(y + 10)</div>
<div> canvas.NewPositionAnimation(</div>
<div> fyne.NewPos(n, y),</div>
<div> fyne.NewPos(x, n),</div>
<div> canvas.DurationStandard,</div>
<div> func(p fyne.Position) {</div>
<div> dog_img.Move(p)</div>
<div> dog_img.Refresh()</div>
<div> }).Start()</div>
<div> //dog_img.Move(fyne.NewPos(x, y))</div>
<div> dog_img.Refresh()</div>
<div> //anim1.Start()</div>
<div> y = n</div>
<div> })</div>
<div> right_btn3 := widget.NewButton("Right", func() {</div>
<div> n := float32(x + 10)</div>
<div> // y = float32(y - 10)</div>
<div> //n := float32(y + 10)</div>
<div> canvas.NewPositionAnimation(</div>
<div> fyne.NewPos(x, n),</div>
<div> fyne.NewPos(n, y),</div>
<div> canvas.DurationStandard,</div>
<div> func(p fyne.Position) {</div>
<div> dog_img.Move(p)</div>
<div> dog_img.Refresh()</div>
<div> }).Start()</div>
<div> //dog_img.Move(fyne.NewPos(x, y))</div>
<div> dog_img.Refresh()</div>
<div> x = n</div>
<div> })</div>
<div> left_btn4 := widget.NewButton("Left", func() {</div>
<div> n := float32(x - 10)</div>
<div> // y = float32(y - 10)</div>
<div> //n := float32(y + 10)</div>
<div> canvas.NewPositionAnimation(</div>
<div> fyne.NewPos(x, n),</div>
<div> fyne.NewPos(n, y),</div>
<div> canvas.DurationStandard,</div>
<div> func(p fyne.Position) {</div>
<div> dog_img.Move(p)</div>
<div> dog_img.Refresh()</div>
<div> }).Start()</div>
<div> dog_img.Move(fyne.NewPos(x, y))</div>
<div> dog_img.Refresh()</div>
<div> x = n</div>
<div> })</div>
<div> down_btn.Resize(fyne.NewSize(50, 30))</div>
<div> down_btn.Move(fyne.NewPos(150, 60))</div>
<div> up_btn2.Resize(fyne.NewSize(50, 30))</div>
<div> up_btn2.Move(fyne.NewPos(150, 0))</div>
<div> right_btn3.Resize(fyne.NewSize(50, 30))</div>
<div> right_btn3.Move(fyne.NewPos(180, 30))</div>
<div> left_btn4.Resize(fyne.NewSize(50, 30))</div>
<div> left_btn4.Move(fyne.NewPos(130, 30))</div>
<div> w.SetContent(container.NewWithoutLayout(</div>
<div> dog_img, down_btn, up_btn2, right_btn3, left_btn4, cat_img,</div>
<div> ))</div>
<div> w.ShowAndRun()</div>
<div>}</div>
</div>
[easy_media_download url=”http://blogvali.com/wp-content/uploads/fyne-golang-downloads/main48.go” text=”Download Code” color=”red_darker”]