Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean given in /home/html/pontshbr/www/perfis/colPerfil.inc.php on line 22

Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean given in /home/html/pontshbr/www/truques/colunaTruques.inc.php on line 23

Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean given in /home/html/pontshbr/www/tutoriais/colunaTutoriais.inc.php on line 25

Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean given in /home/html/pontshbr/www/sources/colunaSources.inc.php on line 25
HOME | TUTORIAIS
Máscara arrastável no Flash 4.
por Stickman


Arraste o diamante cinza para mover a máscara.

Uma pergunta em Flashpad questionou se é possível arrastar uma máscara no Flash 4. A resposta é não, mas eu sugeri uma técnica para fazer uma simulação.

Não é perfeita, de forma alguma - às vezes fica mal alinhada com o objeto sob ela - mas esses bugs podem ser corrigidos com alguns truques. Nesse exemplo, deixei o arquivo na forma mais simples possível, inclusive com os bugs, apenas para ilustrar a idéia.

Como funciona?

Como você não pode arrastar uma máscara, é preciso por a cabeça para funcionar. Nesse caso, a máscara fica parada enquanto todo o resto se move...

Primeiro, crie um movie clip com o seu objeto mascarado - aqui está a figura do Stickman e texto (Objeto). Agora leve isso para um segundo novo movie clip e lhe dê um Instance Name (por exemplo, /objeto). No novo movie clip, crie sua máscara (aqui um pequeno quadrado) e o faça mascarar a camada com o movie clip objeto nela. Finalmente, coloque um botão (o pequeno diamante cinza).

Agora, dê ao botão as seguintes ações:

On (Press)
   Set Variable: "/:Drag" = 1
End On
On (Release, Release Outside)
   Set Variable: "/:Drag" = 0
End On

Isso define uma variável (/:Drag) para um ou zero, dependendo se o usuário está ou não clicando o botão com o mouse. Agora, leve esse novo movie clip para a linha do tempo principal e lhe dê um Instance Name (por exemplo, /mask).

Crie um movie clip vazio, leve-o à linha do tempo principal e lhe dê o Instance Name tracker. Crie outro movie clip e o chame control. Crie um keyframe na frame 2 e programe-a para Go To e Play (frame 1).

Agora, dê ao frame 1 as seguintes ações:

If (/:Drag eq 1)
   Start Drag ("/tracker", lockcenter)
End If
If (/:Drag eq 0)
   Stop Drag
End If
Set Property ("/mask/object", X Position) = 0-(GetProperty ("/tracker",_x))
Set Property ("/mask/", X Position) = GetProperty ("/tracker",_x)
Set Property ("/mask/object", Y Position) = 0-(GetProperty ("/tracker",_y))
Set Property ("/mask/", Y Position) = GetProperty ("/tracker",_y)

Não esqueça de levar esse novo movie clip à linha do tempo principal.

Olhe atentamente e verá que o que está acontecendo é: quando /:Drag é igual a 1 (ou seja, o mouse está sendo clicado), o movie clip control (que coloca cada frame em loop), define a posição do /Mask/Object (ou seja, o movie clipe com o texto e a figura) como "oposta" à posição do movie clip máscara (cuja posição é determinada pela posição de tracker). Então, se o movie clip mask está em x = 20, y = 10, o objeto é movido para x= -20, y= -10. O resultado é que ele parece estar parado, enquanto a máscara se move.

Ah, que coisa inteligente! Eu sei. Às vezes sou tão esperto que me assusto. É verdade. Boa sorte!

Copyright de todos os arquivos e textos de ©Stickman 1998 - 2000. Sobre copyright, termos de uso e informações, por favor visite www.the-stickman.com/terms.

Baixe aqui o arquivo FLA desse tutorial.



Devido à reformulação implementada no site, pode ser que você encontre alguns links quebrados. Por favor, ajude-nos a corrigir eventuais problemas nos informando links quebrados
1 comentário


Comentário de guinho
| 5/2/2010 - 09:36 |
http://www.wgnet.com.br

muito bom!!