Webcam
Transcrição
Webcam
Webcam Exemplo da utilização da Webcam Utilize o ficheiro camara.fla Este ficheiro já possui elementos visuais para colocarmos o que necessitamos Temos duas instâncias de Movie Clip rectangulares area1 area2 Uma instância de Movie Clip com o desenho de um círculo que possui o nome de: bola_status Uma caixa de texto do tipo dinâmico com o nome de instância: texto_status Um botão com o nome de instância: copiar Exemplo da utilização da Webcam Exemplo da utilização da Webcam Nome das instâncias: area2 area1 Bola_status copiar texto_status Exemplo da utilização da Webcam Seleccione a primeira keyframe da camada acoes e abra o painel Actions Vamos instanciar um objecto que receberá o vídeo capturado pela webcam var captura: Camera = Camera.getCamera() Criamos uma instância chamada captura que receberá as imagens capturadas pela webcam (Camera.getCamera()) Numa nova linha digite: var area_video: Video = new Video() Criamos uma instância chamada area_video a partir da classe Video, porque a câmara não é exibida directamente na tela Precisamos criar um vídeo que posteriormente receberá as informações que a webcam está fornecendo Exemplo da utilização da Webcam Agora, numa nova linha digite: area_video.attachCamera(captura); area1.addChild(area_video); Na primeira linha anexamos à instância de vídeo chamada area_video, as informações que a webcam (representada pela instância captura) possui através do método attachCamera Na segunda linha adicionamos à instância de Movie Clip chamada area1, através do método addChild, o vídeo para que esse vídeo capturado na webcam apareça na área dessa instância Exemplo da utilização da Webcam Vamos agora ajustar a configuração de captura captura.setMode(320, 240, 30); Para a instância captura definimos as configurações pelo método setMode() digitando seus parâmetros (separados por vírgulas) de largura (320), altura (240) e quantidade de quadros por segundo (30) do vídeo capturado Quando testar o filme, aparece uma janela a perguntar se permite que a sua câmara e o seu microfone sejam acedidos Escolha a opção Allow (permitir) Exemplo da utilização da Webcam Detecção de Movimento no Vídeo Vamos preparar o Flash para verificar se há movimentação nas imagens capturadas ou não (por exemplo, se a pessoa se encontra parada ou fora do alcance da webcam por algum tempo) Em primeiro lugar repare que a instância de Movie Clip chamada bola_status que temos na tela (a bola localizada na parte inferior esquerda) possui dentro uma outra instância de Movie Clip chamada bola Para ver isso, basta dar 2 cliques seguidos com o rato em cima da instância bola_status Detecção de Movimento no Vídeo Detecção de Movimento no Vídeo Quando detectarmos movimento, vamos mudar a cor dessa bola interna Acrescente ao código existente a linha: var cor: ColorTransform = bola_status.bola.transform.colorTransform; Criamos um elemento chamado cor do tipo ColorTransform a partir da propriedade transform.colorTransform da bola interna (bola_status.bola), responsável pela cor de um elemento visual Detecção de Movimento no Vídeo Agora, numa nova linha digite Captura.setMotionLevel(20, 500) Utilizamos para a instância chamada captura o método setMotionLevel() que determina as configurações para a verificação de movimento O primeiro parâmetro a ser passado a esse método (separados por vírgula) é a intensidade do movimento Um valor entre 0 e 100 em que 0 verifica até os mais tímidos movimentos e 100 necessita de um movimento mais intenso No exemplo a intensidade está definida para 20 O outro parâmetro define o tempo que demora a se considerar a câmara sem movimento ou seja sem actividade Esse valor é em milissegundos No exemplo está definido para meio segundo, através do valor 500 Detecção de Movimento no Vídeo Numa nova linha digite: captura.addEventListener(ActivityEvent.ACTIVITY, actividade) Criamos um ouvinte que fica à escuta de um evento de actividade (quando detectou movimento ou a falta dele na webcam) e neste caso executa a função actividade que irá criar a seguir Detecção de Movimento no Vídeo Digite a seguinte função: function actividade(evento: ActivityEvent): void { if (evento.activating == true) { texto_status.text = “Movimento detectado”; cor.color = 0x00FF000; bola_status.bola.transform.colorTransform = cor; } else { texto_status.text = “Sem Movimento”; cor.color = 0xFF00000; bola_status.bola.transform.colorTransform = cor; } } Detecção de Movimento no Vídeo Criamos uma função chamada actividade que será executada pelo ouvinte que criamos anteriormente Temos como parâmetro da função um elemento denominado “evento”, que armazenará o evento que chama essa função Criamos a seguir uma estrutura condicional (if) A propriedade activating do parâmetro pode tomar os valores true quando o movimento for detectado false quando não está sendo detectada movimentação Detecção de Movimento no Vídeo A estrutura (if) teste através do == se o valor de activating está a true, neste caso executará o que se encontra nessas chaves { } Dentro das chaves definimos o texto (text) da caixa de texto chamada texto_status como sendo a frase “Movimento Detectado” Em seguida definimos para o parâmetro color do elemento de cor que criamos antes (cor.color) a cor verde (0x00FF00) Logo na linha seguinte aplicamos essa cor à bola interna (bola_status.bola) Detecção de Movimento no Vídeo Em seguida a condicional (if) encontra um comando else que caso a pergunta feita no início (evento.activating == true) for respondida negativamente, ou seja, não está ocorrendo movimento, executa o que se encontra entre as chaves { } do else No caso será semelhante ao feito anteriormente apenas com a diferença que o texto agora será “Sem Movimento” e a cor da bola vermelha (0xFF0000) Teste o filme Repare que além de estar a aparecer o vídeo, quando há movimento, o círculo fica verde e aparece o texto “Movimento detectado” e quando não há movimento, o círculo fica vermelho e aparecem as palavras “Sem movimento” Detecção de Movimento no Vídeo Screenshots Vamos programar o botão copiar para que ao pressioná-lo o Flash coloque na área da direita (ao lado da captura do vídeo) um screenshot (imagem capturada) a partir do que estiver aparecendo na webcam Numa nova linha digite: var bmd: BitmapData = new BitmapData(320, 240, false, 0xFFFFFF); var imagem: Bitmap = new Bitmap(bmd); area2.addChild(imagem); Screenshots Na primeira linha criamos uma instância chamada “bmd” do tipo BitmapData gerada a partir da classe BitmapData Dentro dos parênteses colocamos a largura (320 pixels), a altura (240 pixels), definindo que sua base não será transparente (marcada a opção false) e a cor de seu preenchimento 0xFFFFFF (branca) Na segunda linha criamos uma instância chamada “imagem” do tipo Bitmap gerada a partir da classe Bitmap Dentro dos parênteses inserimos o nome da instância do BitmapData (bmd) Screenshots Na terceira linha adicionamos a instância da classe Bitmap chamada imagem dentro da instância de Movie Clip chamada area2 através do método addChild Ou seja, como a instância area2 já está visível no filme, ao adicionar a instância imagem a ela, automaticamente também estará visível Numa nova linha digite: copiar.addEventListener(MouseEvent.CLICK, copia); function copia(evento: MouseEvent): void { bmd.draw(area1); } Screenshots Na primeira linha criamos um ouvinte para a instância de botão chamada copiar que, quando for clicado, executa uma função chamada copia Dentro dessa função copiamos para o BitmapData, através do método draw, o conteúdo do Movie Clip (que tem o nome de instância area1) Ou seja, sempre que o botão for pressionado, o que estiver passando no vídeo (sendo capturado) será armazenado na instância bmd e aparecerá na área da direita