IBM Pure Systems
Canais iMasters

Outros

Director: Controle de Movimento com Scripts - Parte 02

Bom pessoal, depois de algum tempo sem escrever (por falta de tempo) estou aqui para finalizar essa série.

Antes de começar, vou fazer uma breve abordagem sobre os tipos de scripts do Director:

Behaviors - Também conhecidos como Frame Scripts e Sprite Scripts. São scripts que podemos inserir no canal de Scripts do Score ou anexar diretamente em sprites no Stage.

Cast Member Scripts - Esses scripts são anexados diretamente nos Cast Members é so funcionam naquele membro do cast ao qual foi inserido.

Movie Scripts - São scripts globais. Eles são lidos no início do do Filme e as Handlers inseridas nele podem ser chamadas a qualquer momento.

Parent Scripts - São scripts mais avançados usados em Programação Orientada a Objeto.

Até agora vimos como criar Behaviors. Para finalizar esse artigo, vou usar Movie Scripts.

01. Abra a janela Script (Ctrl + 0) e depois clique no botão "+" para adicionar um novo script.

02. Com a janela Script ainda em primeiro plano, vá até o painel Property Inspector (Ctrl + Alt +S) e escolha a aba Script. Mude a opção Type para Movie.

03. Na janela Script mude o nome do Script para "Controles". Nomear o Script faz com que ele seja salvo mesmo vazio. No caso do Movie Script qualquer nome pode ser usado, pois ele será executado no início do Filme.

Neste tutorial vou escrever os Scritps somente em Lingo.

Vamos agora escrever o código nesse Movie Script:

on sobe
sprite("bola").locv = sprite("bola").locv -10
end

on desce
sprite("bola").locv = sprite("bola").locv +10
end

on direita
sprite("bola").loch = sprite("bola").loch +10
end

on esquerda
sprite("bola").loch = sprite("bola").loch -10
end

Vocês podem estar achando estranho os nomes dos eventos (sobe, desce, direita esquerda). O que fizemos foi criar Handlers que serão chamadas pelos botões. Como elas estão em um Movie Script podem ser chamadas em qualquer lugar no Filme.

Para chamar essas handlers vamos ter que modificar os Behaviors Scripts que estão anexados nos Sprites.

Modifique os behaviors dos botões para:

on sobe
-- handler sobe
sprite("bola").locv = sprite("bola").locv -10
-- move a bola para cima
end

on desce
-- handler desce
sprite("bola").locv = sprite("bola").locv +10
-- move a bola para baixo
end

on direita
-- handler direita
sprite("bola").loch = sprite("bola").loch +10
-- move a bola para a direita
end

on esquerda
--handler esquerda
sprite("bola").loch = sprite("bola").loch -10
-- move a bola para a esquerda
end

Baixe aqui o arquivo com esse script.

Vocês já devem ter percebido que a bola ultrapassa o limite do Stage. Os botões continuam acrescentando um valor de posição ao elemento sempre que clicamos, independente do tamanho do Stage.

Vamos corrigir isso limitando a área de movimento através do tamanho do Stage. Nesse exemplo, o tamanho do Stage é 640X480. Partindo desse ponto, o nosso espaço de visualização horizontal é de 0 a 640 e vertical de 0 a 480.

O ponto de registro da Bola é no canto superior esquerdo.

E o seu tamanho é 72X76. Todo o movimento é baseado no ponto de registro, sendo assim, em relação ao Stage os limites de movimento máximos seriam:

Subindo: locv = 0
Descendo: locv = 404 (altura do Stage - altura do objeto)
Esquerda: loch = 0
Direita: loch = 568 ( largura do Stage - largura do objeto)

Agora vamos usar esse valores para limitar o movimento. Para isso, vamos modificar o Movie Script "controles":

on sobe
--handler sobe
if (sprite("bola").locv > 0) then
-- Verifica se a posição vertical é maior que 0
sprite("bola").locv = sprite("bola").locv -10
-- move a bola para cima
end if
end

on desce
--handler desce
if (sprite("bola").locv < 404) then
-- Verifica se a posição vertical é menor que 404
sprite("bola").locv = sprite("bola").locv +10
-- move a bola para baixo
end if
end

on direita
-- handler direita
if (sprite("bola").loch < 568) then
-- Verifica se a posição horizontal e menor que 568
sprite("bola").loch = sprite("bola").loch +10
-- move a bola para a direita
end if
end

on esquerda
-- handler esquerda
if (sprite("bola").loch > 0)then
-- Verifica se a posição horizontal é maior que 0
sprite("bola").loch = sprite("bola").loch -10
-- move a bola para a esquerda
end if
end

Bom é isso aí! Baixe aqui o arquivo finalizado.


Qual a sua opinião?

Comentários considerados ofensivos serão moderados.
KingHost

Parceiros

IBM
PagSeguro
Internet Innovation
Dialhost
HostNet
Tecla
KingHost
DotStore
Dinamize