Tutorial actionscript 3 - Manipulando Símbolos - Propriedades
Tutoriais criação de sites, notícias, design e tecnologia > Tutoriais > Desenvolvimento > ActionScript > Manipulando Símbolos – Propriedades
Manipulando Símbolos – Propriedades
tutorial-actionscript-3
Figura 1 - MovieClip Carro
Para manipular a instancia de um símbolo você poderá clicar nela e ter acesso a sua pane de propriedades (Properties), onde poderá definir entre outras coisas, sua posição e tamanho. Uma informação interessante é que todas as propriedades e transformações que você consegue realizar em uma instancia através das ferramentas do flash (rotação, posicionamento, escalonamento, filtros, etc) você também conseguirá fazer através de Action Script. Vamos nos concentrar numa propriedade chamada "name". Tal propriedade nos permite dar um nome a aquela instancia que está no stage, e usando desse nome poderemos nos referenciar a ela através do Action Script. Vou chamar o carro que adicionei de "carro".
Figura 2 – Nomeando uma instancia
Vimos no artigo sobre objetos como criá-los atribuindo-lhe um nome. O que estamos fazendo aqui é semelhante. Estamos atribuindo um nome a um objeto do tipo MovieClip que está no Stage. A diferença é que aqui o objeto foi criado através da interface do Flash (no momento em que importei o desenho do Ilustrattor e o converti para MovieClip). Interessante não? A manipulação de instancias em Action Script é feita através de propriedades e métodos. As propriedades são as características do objeto enquanto os métodos são as ações que ele pode fazer. É uma analogia ao mundo real, onde por exemplo, podemos ter um carro, cujas propriedades poderiam ser peso, cor, tamanho e os métodos poderiam ser ligar, desligar, acelerar e freiar. Para acessarmos propriedades ou métodos de uma instancia, utilizamos o caractere "." (ponto). Propriedades de instancias podem ser lidas ou escritas (definidas), ou seja, eu posso tanto saber qual a cor do carro como definir a cor dele. Métodos não são lidos ou escritos, eles são chamados (invocados). Ao ser chamado um método executa um conjunto de ações sobre aquele objeto. Por exemplo, para acessar a posição do carro no stage, eu posso usar "carro.x" e "carro.y" (ou seja, estou acessando as propriedades x e y do carro, que no flash indicam suas posições x e y). Para definir a posição do meu carro no stage eu posso usar uma atribuição, utilizando o caractere "=" (igual):
// Significa 'atribua 200 a propriedade x do objeto de nome carro', ou seja // posicione o objeto de nome carro a 200 pixels da margem esquerda // do stage. carro.x = 200; // Significa 'atribua 0 a propriedade y do objeto de nome carro', // ou seja, posicione o objeto de nome carro a 0 pixels da // margem superior do stage. carro.y = 0;
// Significa 'atribua 200 a propriedade x do objeto de nome carro', ou seja
// posicione o objeto de nome carro a 200 pixels da margem esquerda
// do stage.
carro.x = 200;
// Significa 'atribua 0 a propriedade y do objeto de nome carro',
// ou seja, posicione o objeto de nome carro a 0 pixels da
// margem superior do stage.
carro.y = 0;
Se eu adicionar o código de mudança de posição do carro na frame 30,
Figura 3 - Alterando a propriedade de uma instancia através de Action Script
e executar o projeto verei que após um certo tempo o carro mudará de lugar. Isso, porque quando a reprodução do filme atingiu a frame, o código foi lido e interpretado, e o comando de mover o carro para a posição (200,0) foi executado. A posição de um objeto, quando manipulada via Action Script, é sempre feita em função do ponto de registro, que no caso do carro do nosso exemplo, se encontra no canto superior esquerdo do símbolo (como podemos ver na figura 2, o ponto de registro é onde aparece uma cruz). Outras propriedades bastante utilizadas são "alpha" e "visible", que definem o nível de transparência (variando de 0 a 1, com 0 sendo 100% transparente e 1 100% visível) e a visibilidade de um objeto (false para invisível, ou true para visível). Essas propriedades são muito úteis quando desejamos ocultar elementos que estão no stage e exibi-los de acordo com alguma interação do usuário. Para entendermos melhor a utilização de propriedades e métodos cabe citar algumas características importantes sobre o Flash e o Action Script:
Root é a palavra utilizada para se referenciar à timeline principal do projeto.
O root também é um MovieClip. Dessa forma, ele também possui as propriedades e métodos que os MovieClips possuem.
Quando trabalhamos com flash, utilizamos uma estrutura de aninhamento (hierarquia) para organizar nosso projeto. Dessa forma, frequentemente criamos MovieClips dentro de MovieClips para representar nossa cena.
Por exemplo, podemos criar um MovieClip "Carro". Dentro do "Carro" podemos ter o MovieClip "Roda", o movieClip "Volante", todos com sua própria Timeline e animações.
Conforme mencionamos o root também é um MovieClip, e ele contem todos os demais MovieClips que inserimos no Stage.
Movieclips dentro de Movieclips se constituem novas propriedades do primeiro. Vamos esclarecer. Se por exemplo, tenho um Movieclip de nome "roda" dentro do MovieClip de nome "carro", da mesma forma que posso utilizar o comando "carro.x = 200;" para definir a posição do carro no Stage, posso utilizar "carro.roda.x = 100;" para definir a posição da "roda" dentro do MovieClip "carro". No artigo sobre objetos, falamos que objetos são conjuntos de propriedades e métodos (variáveis e funções) lembra? Assim, se tenho um MovieClip "roda" dentro do MovieClip "carro", o primeiro nada mais é que uma propriedade do segundo! É importante lembrar que cada MovieClip tem o seu próprio sistema de coordenadas. Enquanto a posição 0,0 do Stage é no canto superior esquerdo, no caso de um MovieClip a posição 0,0 é no seu ponto de registro. Outro aspecto importante é o escopo do seu código Action Script. Se você escreve o código "carro.x = 200;" numa frame presente na timeline principal (Stage), o Flash irá procurar por um símbolo de nome carro na frame da timeline principal onde você escreveu o código. Isso porque, conforme ja falamos, a timeline principal (root) é um MovieClip também. Sempre que escrevemos um código Action Script numa frame de um MovieClip, o flash irá procurar as variáveis ao qual nos referenciamos no código dentre a lista de variáveis que o símbolo possui. Essa lista inclui as variáveis que criamos (na timeline do MovieClip) e as variáveis já existentes do símbolo, como por exemplo as propriedades x e y, percententes aos MovieClips. Caso você escreva "carro.x = 200;" na timeline do MovieClip "carro", o Flash irá buscar a instancia "carro" ali, e não encontrará, gerando o mais comum de todos os erros de Action Script: "Access of undefined property…". Por outro lado, se dentro do seu MovieClip "carro" houver um movieclip chamado "roda", você poderá escrever na Timeline do MovieClip "carro" o código "roda.x = 200;". Você também poderá escrever na timeline principal (root) o comando "carro.roda.x = 200;". Uma boa prática é sempre manter o seu código Action Script em uma única frame na Timeline principal. Isso facilita a manutenção do seu projeto (você não terá que ficar entrando em símbolo por símbolo para procurar códigos Action Script perdidos). Por fim, uma ferramenta bastante útil para se conhecer propriedades e métodos dos Símbolos é a ajuda do Flash. Clique em uma frame, abra a pane de Action Script (F9), digite "MovieClip", clique com a tecla direita do mouse sobre a palavra "MovieCllip" e clique em "View help":