• Nenhum resultado encontrado

Fundamentos e Padrões

3.4 Adicionando Sincronismo com Interatividade

elementos <property>, mesmo que seus valores iniciais sejam definidos usando elementos <descriptor> ou <region>. No caso, queremos manipular as variáveis de posicionamento e dimensão (“left”, “top”, “width”, “height”), representadas pelo valor “bounds”, como ilustrado pela Listagem 3.17, onde também é ilustrada a inclusão dos três novos objetos de mídia no conjunto de objetos de mídia anteriormente definido: a imagem de fundo (“background”), o ícone (“icon”) e o vídeo de propaganda (“shoes”).

<media id="background" src="../media/background.png"

descriptor="backgroundDesc"/>

<media id="animation" src="../media/animGar.mp4"

descriptor="screenDesc">

<area id="segDrible" begin="12s"/>

<area id="segPhoto" begin="41s"/>

<area id="segIcon" begin="45s" end="51s"/>

<property name="bounds"/>

</media>

<media id="choro" src="../media/choro.mp4" descriptor="audioDesc"/>

<media id="drible" src="../media/drible.mp4"

descriptor="dribleDesc"/>

<media id="photo" src="../media/photo.png" descriptor="photoDesc"/>

<media id="icon" src="../media/icon.png" descriptor="iconDesc"/>

<media id="shoes" src="../media/shoes.mp4" descriptor="shoesDesc"/>

Listagem 3.17 Conjunto de elementos <media> da nova versão da aplicação.

Temos agora de acrescentar os descritores e as regiões para a apresentação dos novos objetos de mídia, como ilustra a Listagem 3.18. Note que as novas regiões para exibição do ícone e do vídeo de propaganda foram definidas como filhas do elemento <region> “screenReg”, ou seja, relativas a essa região previamente definida.

<regionBase>

...

<region id="screenReg" width="100%" height="100%" zIndex="2">

...

<region id="iconReg" left="87.5%" top="11.7%" width="8.45%"

height="6.7%" zIndex="3"/>

<region id="shoesReg" left="15%" top="60%" width="25%"

height="25%" zIndex="3"/>

</region>

</regionBase>

<descriptorBase>

...

<descriptor id="iconDesc" region="iconReg" explicitDur="6s"/>

<descriptor id="shoesDesc" region="shoesReg"/>

</descriptorBase>

Listagem 3.18 Definição dos novos elementos <region> e dos novos elementos

<descriptor>.

Resta agora definir os três novos relacionamentos introduzidos, e incorporar aos relacionamentos “lMusic” e “lEnd” as ações para iniciar e terminar a apresentação da imagem de fundo, como ilustra a Listagem 3.19.

<link id="lMusic" xconnector="conEx#onBeginStart_delay">

<bind role="onBegin" component="animation"/>

<bind role="start" component="background">

<bindParam name="delay" value="5s"/>

</bind>

<bind role="start" component="choro">

<bindParam name="delay" value="5s"/>

</bind>

</link>

<link id="lEnd" xconnector="conEx#onEndStop">

<bind role="onEnd" component="animation"/>

<bind role="stop" component="background"/>

<bind role="stop" component="choro"/>

</link>

<link id="lIcon" xconnector="conEx#onBeginStart">

<bind role="onBegin" component="animation"

interface="segIcon"/>

<bind role="start" component="icon"/>

</link>

<link id="lAdvert" xconnector="conEx#onKeySelectionStopSet_varStart">

<bind role="onSelection" component="icon">

<bindParam name="keyCode" value="RED"/>

</bind>

<bind role="set" component="animation" interface="bounds">

<bindParam name="var" value="5%,6.67%,45%,45%"/>

</bind>

<bind role="start" component="shoes"/>

<bind role="stop" component="icon"/>

</link>

<bind role="onEnd" component="shoes"/>

<bind role="set" component="animation" interface="bounds">

<bindParam name="varSet" value="0,0,100%,100%"/>

</bind>

</link>

Listagem 3.19 Definição dos novos relacionamentos.

Os dois primeiros elementos <link> (“lMusic” e “lEnd”) determinam o início e o fim da exibição da imagem de fundo como coincidindo com o início e fim da exibição do áudio chorinho, respectivamente.

O terceiro elemento <link> (“lIcon”) define que, ao começar (condição

“onBegin”) a apresentação do trecho da animação quando o ícone deve aparecer, ele tenha sua apresentação iniciada (ação “start”).

O quarto elemento <link> (“lAdvert”) é mais complexo. Ele define que, se o ícone da chuteira for selecionado (condição “onSelection”) pela tecla vermelha do controle remoto (passada como parâmetro do papel correspondente, keycode=“RED”), o vídeo da animação deve ser redimensionado (ação “set” na propriedade “bounds” definida no elemento

“animation”) para os valores passados como parâmetros (left=“5%”, top=“6,67%”, width e height =“45%”, todos relativos à dimensão da tela). O relacionamento também determina que a propaganda da chuteira deve ser iniciada (ação “start” no elemento “shoes”) e que o ícone deve parar sua exibição (ação “stop” no elemento “icon”).

O quinto elemento <link> (“lEndAdvert”) especifica que, quando o vídeo correspondente à propaganda da chuteira terminar (condição “onEnd”), o vídeo da animação deve retomar suas dimensões originais (ação “set” na propriedade “bounds” definida no elemento “animation”).

A Listagem 3.20 apresenta o programa NCL correspondente à nova versão da aplicação.

<?xml version="1.0" encoding="ISO-8859-1"?>

<!-- Exemplo de sincronismo sem interacao do usuario e com interacao do usuario -->

<ncl id="syncInt" xmlns="http://www.ncl.org.br/NCL3.0/EDTVProfile">

<head>

<regionBase>

<region id="backgroundReg" width="100%" height="100%"

zIndex="1"/>

<region id="screenReg" width="100%" height="100%"

zIndex="2">

<region id="frameReg" left="5%" top="6.7%" width="18.5%"

height="18.5%" zIndex="3"/>

<region id="iconReg" left="87.5%" top="11.7%"

width="8.45%" height="6.7%" zIndex="3"/>

<region id="shoesReg" left="15%" top="60%" width="25%"

height="25%" zIndex="3"/>

</region>

</regionBase>

<descriptorBase>

<descriptor id="backgroundDesc" region="backgroundReg"/>

<descriptor id="screenDesc" region="screenReg"/>

<descriptor id="photoDesc" region="frameReg"

explicitDur="5s"/>

<descriptor id="audioDesc"/>

<descriptor id="dribleDesc" region="frameReg"/>

<descriptor id="iconDesc" region="iconReg"

explicitDur="6s"/>

<descriptor id="shoesDesc" region="shoesReg"/>

</descriptorBase>

<connectorBase>

<importBase documentURI="../causalConnBase.ncl"

alias="conEx"/>

</connectorBase>

</head>

<body>

<port id="entry" component="animation"/>

<media id="background" src="../media/background.png"

descriptor="backgroundDesc"/>

<media id="animation" src="../media/animGar.mp4"

descriptor="screenDesc">

<area id="segDrible" begin="12s"/>

<area id="segPhoto" begin="41s"/>

<area id="segIcon" begin="45s" end="51s"/>

<property name="bounds"/>

</media>

<media id="choro" src="../media/choro.mp4"

descriptor="audioDesc"/>

<media id="drible" src="../media/drible.mp4"

descriptor="dribleDesc"/>

<media id="photo" src="../media/photo.png"

descriptor="photoDesc"/>

<media id="icon" src="../media/icon.png"

descriptor="iconDesc"/>

<media id="shoes" src="../media/shoes.mp4"

<link id="lMusic" xconnector="conEx#onBeginStart_delay">

<bind role="onBegin" component="animation"/>

<bind role="start" component="background">

<bindParam name="delay" value="5s"/>

</bind>

<bind role="start" component="choro">

<bindParam name="delay" value="5s"/>

</bind>

</link>

<link id="lDrible" xconnector="conEx#onBeginStart">

<bind role="onBegin" component="animation"

interface="segDrible"/>

<bind role="start" component="drible"/>

</link>

<link id="lPhoto" xconnector="conEx#onBeginStart">

<bind role="onBegin" component="animation"

interface="segPhoto"/>

<bind role="start" component="photo"/>

</link>

<link id="lEnd" xconnector="conEx#onEndStop">

<bind role="onEnd" component="animation"/>

<bind role="stop" component="background"/>

<bind role="stop" component="choro"/>

</link>

<link id="lIcon" xconnector="conEx#onBeginStart">

<bind role="onBegin" component="animation"

interface="segIcon"/>

<bind role="start" component="icon"/>

</link>

<link id="lAdvert"

xconnector="conEx#onKeySelectionStopSet_varStart">

<bind role="onSelection" component="icon">

<bindParam name="keyCode" value="RED"/>

</bind>

<bind role="set" component="animation" interface="bounds">

<bindParam name="var" value="5%,6.67%,45%,45%"/>

</bind>

<bind role="start" component="shoes"/>

<bind role="stop" component="icon"/>

</link>

<link id="lEndAdvert" xconnector="conEx#onEndSet">

<bind role="onEnd" component="shoes"/>

<bind role="set" component="animation" interface="bounds">

<bindParam name="varSet" value="0,0,100%,100%"/>

</bind>

</link>

</body>

</ncl>

Listagem 3.20 O Primeiro João com sincronismo por interação.

A Figura 3.6 ilustra mais dois momentos da exibição, o início do aparecimento do ícone e o momento da apresentação da propaganda, obtidos durante a execução da aplicação na implementação de referência do middleware Ginga-NCL.

Figura 3.6 Cenas da aplicação O Primeiro João com interatividade.