engine-animate v1.0.25
Engine Animate
Framework desenvolvida para manipulação em Canvas JavaScrip.
Desenvolvedor: Michael Milanez
Package: engine
Language: ES6 - JavaScript
Versão 1.0.0
Instalação da biblioteca Engine Animation
npm i engine-animate
Estrutura
Classes
Display
ObjectInteractive
Versão 1.0.0
Package: engine/display/ObjectInteractive.js
ObjectInteractive é a classe base para criação de objetos complexos que interagem com o canvas, permitindo manipulação de eventos, posição, tamanho e entre outras propriedades basicas dos objetos.
Instância
Exemplo de uso:
import ObjectInteractive from './engine/displays/ObjectInteractive.js';
const Object = new ObjectInteractive();
Propriedades
Propriedade | Retorno | Descrição |
---|---|---|
version | string | Versão do componente |
name | string | Retorna o nome do objeto |
x | number | valor da posição do eixo X |
y | nunber | valor da posição do eixo Y |
width | number | valor da largura do objetjo |
height | number | valor da altura do objeto |
dragDrop | bollean | habilita clique e arraste do objeto, valor default false |
Métodos privados
Método | retorno | descrição |
---|---|---|
_viewVersion() | null | retorna a versão do objeto |
_setup() | null | chamado apos ser criada a instância do objeto |
_dragDropHandler() | null | captura o clique do mouse para usar de base com dragDrop |
_mouseClick | null | quando o mouse e clicado sobre o objeto |
_mouseUp | null | quando o botão do mouse é solto |
_mouseMove | null | quando o mouse se movimenta |
Métodos publicos
Método | retorno | descrição |
---|---|---|
update() | null | Responsável por atualizar o objeto |
draw() | null | responsável por desenhar no canvas |
pause() | null | Pausa o vídeo |
Eventos
Eventos | retorno | descrição |
---|---|---|
VIDEO_LOADED | {detail} | Inicializa componente |
Obs: Esta classe foi desenvolvida para ser usada como classe base para as demais classes, ou seja, a classe Object interactive é usada como herança para a classe dos objetos, componentes, etc...
Exemplo de criação de componente usando a herança do Objectinteractive:
import ObjectInteractive from './ObjectInteractive.js';
export default class Sprite extends ObjectInteractive{
constructor(){
super();
this._name = 'Sprite';
this._version = '1.0.0';
}
//Método sobrescrito da classe ObjectInteractive
draw(ctx){
}
}
O método draw deve ser sobrescrito e ele é chamado repetida vezes quando adicionado no stage.
Shape
Versão 1.0.0
Package: engine/display/Shape.js
Herança: ObjectInteractive
Shape é um objeto criado para gerar formas básicas no Canvas baseado na classe ObjectInteractive.
Instância
Exemplo de uso:
passando url da imagem
import ShapeClass from './engine/displays/Shape.js';
const shape = new ShapeClass();
shape.dragDrop = true;
shape.x = 100;
shape.y = 100;
shape.setBorderColor({r:255,g:0,b:0,a:0.5});
shape.setColor('#0000ff');
shape.alpha = 0.5;
shape.borderAlpha = 1;
shape.border = 2;
Propriedades
Propriedade | Retorno | Descrição |
---|---|---|
version | string | Versão do componente |
name | string | Retorna o nome do objeto |
setColor({r:255,g:0,b:0,a:0.5}) | null | recebe a cor do objeto, pode ser em RGB ou Hex decimal |
setBorderColor | null | recebe a cor da borda do objeto, pode ser em RGB ou Hex decimal |
alpha | number | valor da trânsparencia do objeto (entre 0 e 1) |
borderAlpha | number | valor da trânsparencia da borda do objeto (entre 0 e 1) |
border | number | expessura da borda do objeto |
Obs: Shape herda de ObjecteInteractive, portanto, possui todas as propriedade da classe ObjectInteractive.
Métodos privados
Método | retorno | descrição |
---|---|---|
_setBorderColorRGBA() | string | converte valor em rgb color da borda do objeto |
_setColorRGBA() | null | converte valor em rgb color do objeto |
_stringToRgb | objectRGB | converte a cor de string para um objeto RGB |
_hexToRgb | objectRGB | converte um valor hexdecimal em RGB |
Métodos publicos
Método | retorno | descrição |
---|---|---|
setBorderColor(color) | null | adiciona cor a borda do objeto |
setColor(color) | null | adiciona cor ao objeto |
Eventos
Eventos | retorno | descrição |
---|---|---|
VIDEO_LOADED | {detail} | Inicializa componente |
Obs: Esta classe foi desenvolvida para ser usada como classe base para as demais classes, ou seja, a classe Shape é usada como herança para a classe dos objetos, componentes, etc...
Exemplo de uso:
import StageClass from './engine/displays/Stage.js' ;
import ShapeClass from './engine/displays/Shape.js';
const stage = new StageClass('canvas');
stage.start(800, 600, 90);
const shape = new ShapeClass();
shape.dragDrop = true;
shape.x = 100;
shape.y = 100;
shape.setBorderColor({r:255,g:0,b:0,a:0.5});
shape.setColor('#0000ff');
shape.alpha = 0.5;
shape.borderAlpha = 1;
shape.border = 2;
stage.addObject(shape);
A classe Shape é herdada da classe ObjectInteracitive, portanto possui todas as propriedades, métodos e eventos dela.
Rectangle
Versão 1.0.0
Package: engine/display/Rectangle.js
Herança: Shape, ObjectInteractive
Shape é um objeto criado para gerar formas básicas no Canvas baseado na classe ObjectInteractive.
Instância
Exemplo de uso:
passando url da imagem
import Rectangle from './engine/displays/Rectangle.js';
const rect = new Rectangle();
rect.dragDrop = true;
rect.x = 20;
rect.y = 200;
rect.width = 200;
rect.height = 200;
rect.setColor('#00ff00');
rect.setBorderColor('#ff0000');
rect.alpha = 0.5;
rect.borderAlpha = 1;
rect.border = 2;
stage.addObject(rect);
Propriedades
Propriedade | Retorno | Descrição |
---|---|---|
version | string | Versão do componente |
name | string | Retorna o nome do objeto |
Obs: Rectangle herda de Shape e ObjecteInteractive, portanto, possui todas as propriedade da classe ObjectInteractive.
Métodos privados
Método | retorno | descrição |
---|
Métodos publicos
Método | retorno | descrição |
---|
Eventos
Eventos | retorno | descrição |
---|---|---|
VIDEO_LOADED | {detail} | Inicializa componente |
Obs: Esta classe foi desenvolvida para ser usada como classe base para as demais classes, ou seja, a classe Shape é usada como herança para a classe dos objetos, componentes, etc...
Exemplo de uso:
import StageClass from './engine/displays/Stage.js' ;
import RectangleClass from './engine/displays/Rectangle.js';
const stage = new StageClass('canvas');
stage.start(800, 600, 90);
const rect = new Rectangle();
rect.dragDrop = true;
rect.x = 20;
rect.y = 200;
rect.width = 200;
rect.height = 200;
rect.setColor('#00ff00');
rect.setBorderColor('#ff0000');
rect.alpha = 0.5;
rect.borderAlpha = 1;
rect.border = 2;
stage.addObject(rect);
A classe Rectangle é herdada da classe Shape eObjectInteracitive, portanto possui todas as propriedades, métodos e eventos dela.
Circle
Versão 1.0.0
Package: engine/display/Circle.js
Herança: Shape, ObjectInteractive
Circle é um objeto criado para gerar formas básicas no Canvas baseado na classe ObjectInteractive.
Instância
Exemplo de uso:
passando url da imagem
import Circle from './engine/displays/Circle.js';
const circle = new CircleClass();
circle.dragDrop = true;
circle.x = 100;
circle.y = 100;
circle.radius = 50;
circle.centerObject = false;
circle.setBorderColor({r:255,g:0,b:0,a:0.5});
circle.setColor('#0000ff');
circle.alpha = 0.5;
circle.borderAlpha = 1;
circle.border = 1;
Propriedades
Propriedade | Retorno | Descrição |
---|---|---|
version | string | Versão do componente |
name | string | Retorna o nome do objeto |
radius | number | valor do raio do circulo |
centerObject | null | deixa o pivot no centro do objeto. Valor defaul true |
shapeColision | string | Tipo de colisão do objeto (circle ou rect) |
Obs: Rectangle herda de Shape e ObjecteInteractive, portanto, possui todas as propriedade da classe ObjectInteractive.
Métodos privados
Método | retorno | descrição |
---|
Métodos publicos
Método | retorno | descrição |
---|
Eventos
Eventos | retorno | descrição |
---|---|---|
VIDEO_LOADED | {detail} | Inicializa componente |
Obs: Esta classe foi desenvolvida para ser usada como classe base para as demais classes, ou seja, a classe Shape é usada como herança para a classe dos objetos, componentes, etc...
Exemplo de uso:
import StageClass from './engine/displays/Stage.js' ;
import RectangleClass from './engine/displays/Rectangle.js';
const stage = new StageClass('canvas');
stage.start(800, 600, 90);
const rect = new Rectangle();
rect.dragDrop = true;
rect.x = 20;
rect.y = 200;
rect.width = 200;
rect.height = 200;
rect.setColor('#00ff00');
rect.setBorderColor('#ff0000');
rect.alpha = 0.5;
rect.borderAlpha = 1;
rect.border = 2;
stage.addObject(rect);
A classe Rectangle é herdada da classe Shape eObjectInteracitive, portanto possui todas as propriedades, métodos e eventos dela.
Sprite
Versão 1.0.0
Package: engine/display/Sprite.js
Herança: ObjectInteractive
Sprite é um objeto criado para manipular imagem no Canvas baseado na classe ObjectInteractive.
Instância
Exemplo de uso:
passando url da imagem
import SpriteClass from './engine/displays/Sprite.js';
const sprite = new SpriteClass();
sprite.source('assets/img/image.png');
Ou um objeto Image()
import SpriteClass from './engine/displays/Sprite.js';
const sprite = new SpriteClass();
var image = new Image();
image.src = 'assets/img/image.png'
sprite.source(image);
Propriedades
Propriedade | Retorno | Descrição |
---|---|---|
version | string | Versão do componente |
name | string | Retorna o nome do objeto |
Métodos privados
Método | retorno | descrição |
---|---|---|
_setup() | null | chamado apos ser criada a instância do objeto |
_loadImage() | null | carrega a imagem pela URL ou instância de Image() |
Métodos publicos
Método | retorno | descrição |
---|---|---|
source(url) | null | adiciona imagem por URL ou instância de Image() |
draw(context(2d)) | null | desenha e atualiza a imagem no Canvas |
Eventos
Eventos | retorno | descrição |
---|---|---|
VIDEO_LOADED | {detail} | Inicializa componente |
Obs: Esta classe foi desenvolvida para ser usada como classe base para as demais classes, ou seja, a classe Object interactive é usada como herança para a classe dos objetos, componentes, etc...
Exemplo de uso:
import StageClass from './engine/displays/Stage.js' ;
import SpriteClass from './engine/displays/Sprite.js';
const stage = new StageClass('canvas');
stage.start(800, 600, 90);
const sprite = new SpriteClass();
sprite.source('http://localhost:8080//assets/image/img.jpg');
sprite.x = 0;
sprite.y = 0;
sprite.dragDrop = true;
stage.addObject(sprite);
A classe Sprite é herdada da classe ObjectInteracitive, portanto possui todas as propriedades, métodos e eventos dela.
DisplayObject
Versão 1.0.0
Package: engine/display/DisplayObjetc.js
Herança: JavaScrip
DisplayObject, classe base para componentes interativos com renderização autonoma.
Instância
Exemplo de uso:
passando url da imagem
import DisplayObjectClass from './engine/displays/DisplayObject.js';
const display = new DisplayObjectClass();
Propriedades
Propriedade | Retorno | Descrição |
---|---|---|
version | string | Versão do componente |
name | string | Retorna o nome do objeto |
x | number | posição do eixo X |
y | number | posição do eixo Y |
width | number | largura do objeto |
height | number | altura do objeto |
alpha | number | valor da transparencia do objeto. value 0 e 1 |
Métodos privados
Método | retorno | descrição |
---|---|---|
_startRender() | null | inicia a renderização do objeto |
_stopedRender() | null | para a renderização do objeto |
_configureFrameRate() | null | calcula e controla o frameRate da renderização |
_loopRender() | null | chama o método de renderização |
Métodos publicos
Método | retorno | descrição |
---|---|---|
_render() | null | faz a renderização do objeto |
Eventos
Eventos | retorno | descrição |
---|---|---|
VIDEO_LOADED | {detail} | Inicializa componente |
Obs: Esta classe foi desenvolvida para ser usada como classe base para as demais classes, ou seja, a classe DisplayObject é usada como herança para a classe dos objetos, componentes, etc...
Exemplo de uso:
import StageClass from './engine/displays/Stage.js' ;
import DisplayObject from './DisplayObject.js';
export default class MovieClip extends DisplayObject {
constructor(){
super();
this._name = 'MovieClip';
this._version = '1.0.0';
}
}
A classe MovieClip é herdada da classe DisplayObject, portanto possui todas as propriedades, métodos e eventos dela.
MovieCLip
Versão 1.0.0
Package: engine/display/MovieClip.js
Herança: DisplayObject
MovieClip, classe com renderização automoma controlada pelo frameRate.
Instância
Exemplo de uso:
passando url da imagem
import MovieClipClass from './engine/displays/MovieClip.js';
const movieClip = new MovieClipClass();
Propriedades
Propriedade | Retorno | Descrição |
---|---|---|
version | string | Versão do componente |
name | string | Retorna o nome do objeto |
loop | bollean | ativa ou desativa o loop da renderização. value default false |
Métodos privados
Método | retorno | descrição |
---|---|---|
_render() | null | faz a renderiazação do objeto |
Métodos publicos
Método | retorno | descrição |
---|---|---|
addFrames(imageData) | null | adiciona imagem no frame |
clearFrame() | null | llimpa todos os frames |
play() | null | inicia a renderização do objeto |
stop() | null | para a renderização do objeto |
next() | null | avança um frame da animação |
preve | null | retorna um frame da animação |
currentFrame() | number | retorna o frame atual |
totalFrame() | number | retorna o total de frames do objeto |
Eventos
Eventos | retorno | descrição |
---|---|---|
VIDEO_LOADED | {detail} | Inicializa componente |
Obs: Esta classe foi desenvolvida para criar animações autonoma sem a necessidade de usar o render do Stage.
Exemplo de uso:
import MovieClipClass from './engine/displays/MovieClip.js';
const movieClip = new MovieClipClass(canvasObject);
movieClip.addFrame(imageData);
MovieClip.play();
A classe MovieClip é herdada da classe DisplayObject, portanto possui todas as propriedades, métodos e eventos dela.
Vídeo Canvas
Versão 1.0.0
Package: engine/components/components/ Class: public class VideoCanvas Extends: not Language: ES6 - JavaScript
graph LR
A(Engine) --> B(components) --> C(components) --> D(VideoCanvas.js)
O vídeo Canvas é um componente base que servirá para criar componentes mais complexos estendidos desta classe. Seu funcionamento é simples, a classe recebe o id do elemento canvas e a URL do vídeo, e por sua vez é criado um player com funcionalidades específicas para o controle do vídeo.
Instância
Exemplo de uso:
import VideoCanvasClass from './engine/components/components/VideoCanvas.js';
const videoCanvas = new VideoCanvasClass('canvas', 'video1.mp4');
Propriedades
Propriedade | Retorno | Descrição |
---|---|---|
version | string | Versão do componente |
urlBase | string | Retorna a URL atual |
VIDEO_ELEMENT | jsElement | Instância do elemento vídeo html |
VIDEO_CANVAS | element html canvas | Instância do elemento canvas |
totalTime | number | total de frame do vídeo |
frame_RATE | number | valor de frames por segundo |
zoomValue | number | valor em % do zoom atual da tela |
frame | number | valor do frame atual |
playing | bool | status do player |
Métodos
Método | retorno | descrição |
---|---|---|
start() | null | Inicializa componente |
play() | null | Inicia o vídeo |
pause() | null | Pausa o vídeo |
stop() | null | Para o vídeo |
setPositionVideo(number) | null | Posiciona o video em um determinado frame |
zoom(number) | null | Ajudsta o valor em % do zoom atual da tela |
captureScren() | base64 | Captura a tela e gera uma imagem |
captureImage() | image | Captura área da tela e gera uma imagem |
playing | bool | status do player |
Eventos
Exemplo de uso:
addEventListener('VIDEO_LOADED', function(e){
console.log(e);
});
Eventos | retorno | descrição |
---|---|---|
VIDEO_LOADED | {detail} | Inicializa componente |
PROCESS_VIDEO | {detail} | Inicia o vídeo |
STATUS_PLAY | detail:{playing, status} | Pausa o vídeo |
Exemplo
The file explorer is accessible using the button in left corner of the navigation bar. You can create a new file by clicking the New file button in the file explorer. You can also create folders by clicking the New folder button.
HTML
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv='pragma' content='no-cache'>
<title>Document</title>
<link rel="shortcut icon" href="#">
<script type="module" src="./main.js"></script>
<style>
canvas{
border: solid 1px #000000;
left: auto;
right: auto;
}
.container{
display: block;
}
</style>
</head>
<body>
<h3>Vídeo Canvas</h3>
<div>
<button id="btPlay">PlayPause</button>
<button id="btStop">stop</button>
<button id="btCapture">Capture</button>
</div>
<div class="container">
<canvas id="canvas"></canvas>
</div>
</body>
</html>
JS
import VideoCanvasClass from './engine/components/components/VideoCanvas.js';
const videoCanvas = new VideoCanvasClass('canvas', 'video1.mp4');
videoCanvas.start();
addEventListener('VIDEO_LOADED', function(e){
console.log(e);
});
addEventListener('PROCESS_VIDEO', function(e){
//console.log(e.detail);
});
addEventListener('STATUS_PLAY', function(e){
console.log('Status play: '+e.detail.status+' | tocando: '+e.detail.playing);
});
document.getElementById("btPlay").onclick = function() {
videoCanvas.play();
};
document.getElementById("btStop").onclick = function() {
videoCanvas.stop();
};
document.getElementById("btCapture").onclick = function() {
videoCanvas.capture();
};