Add examples/animation

Fixes #640
This commit is contained in:
Hajime Hoshi 2018-07-09 22:50:34 +09:00
parent c6842f2cd8
commit 4a6faf5505
5 changed files with 97 additions and 0 deletions

View File

@ -0,0 +1,82 @@
// Copyright 2018 The Ebiten Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// +build example jsgo
package main
import (
"bytes"
"image"
_ "image/png"
"log"
"github.com/hajimehoshi/ebiten"
"github.com/hajimehoshi/ebiten/examples/resources/images"
)
const (
screenWidth = 320
screenHeight = 240
frameOX = 0
frameOY = 32
frameWidth = 32
frameHeight = 32
frameNum = 8
)
var (
count = 0
runnerImage *ebiten.Image
)
func update(screen *ebiten.Image) error {
count++
if ebiten.IsRunningSlowly() {
return nil
}
op := &ebiten.DrawImageOptions{}
op.GeoM.Translate(-float64(frameWidth)/2, -float64(frameHeight)/2)
op.GeoM.Translate(screenWidth/2, screenHeight/2)
i := (count / 5) % frameNum
sx, sy := frameOX+i*frameWidth, frameOY
r := image.Rect(sx, sy, sx+frameWidth, sy+frameHeight)
op.SourceRect = &r
screen.DrawImage(runnerImage, op)
return nil
}
func main() {
// Decode image from a byte slice instead of a file so that
// this example works in any working directory.
// If you want to use a file, there are some options:
// 1) Use os.Open and pass the file to the image decoder.
// This is a very regular way, but doesn't work on browsers.
// 2) Use ebitenutil.OpenFile and pass the file to the image decoder.
// This works even on browsers.
// 3) Use ebitenutil.NewImageFromFile to create an ebiten.Image directly from a file.
// This also works on browsers.
img, _, err := image.Decode(bytes.NewReader(images.Runner_png))
if err != nil {
log.Fatal(err)
}
runnerImage, _ = ebiten.NewImageFromImage(img, ebiten.FilterDefault)
if err := ebiten.Run(update, screenWidth, screenHeight, 2, "Animation (Ebiten Demo)"); err != nil {
log.Fatal(err)
}
}

View File

@ -21,6 +21,7 @@
//go:generate file2byteslice -package=images -input=./images/fiveyears.jpg -output=./images/fiveyears.go -var=FiveYears_jpg
//go:generate file2byteslice -package=images -input=./images/gophers.jpg -output=./images/gophers.go -var=Gophers_jpg
//go:generate file2byteslice -package=images -input=./images/tile.png -output=./images/tile.go -var=Tile_png
//go:generate file2byteslice -package=images -input=./images/runner.png -output=./images/runner.go -var=Runner_png
//go:generate file2byteslice -package=images -input=./images/tiles.png -output=./images/tiles.go -var=Tiles_png
//go:generate file2byteslice -package=images -input=./images/ui.png -output=./images/ui.go -var=UI_png
//go:generate file2byteslice -package=blocks -input=./images/blocks/background.png -output=./images/blocks/background.go -var=Background_png

View File

@ -23,6 +23,14 @@ Photograph by Chris Nokleberg
the Creative Commons Attribution 3.0 License
```
## runner.png
```
https://opengameart.org/content/runner-character
CC0 1.0
```
## tile.png
```

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB