Por padrão, as ocorrências de símbolos de clipe de filme em uma biblioteca de documentos Flash não podem ser criadas dinamicamente (ou seja, usando apenas o ActionScript). Isso porque cada símbolo que é exportado para ser usado no ActionScript aumenta o tamanho do arquivo SWF, e talvez não haja a intenção de usar alguns símbolos no palco. Por isso, para que um símbolo se torne disponível, é necessário especificar que ele seja exportado para o ActionScript.
Para exportar um símbolo para o ActionScript:
-
Selecione o símbolo no painel Biblioteca e abra a caixa de diálogo Propriedades do símbolo.
-
Se necessário, ative as Configurações avançadas.
-
Na seção de ligação, marque a caixa de seleção Exportar para ActionScript.
Isso ativará os campos Classe e Classe base.
Por padrão, o campo Classe é preenchido com o nome do símbolo, com os espaços removidos (por exemplo, um símbolo chamado "Tree House" se tornaria "TreeHouse"). Para especificar que o símbolo use uma classe personalizada para seu comportamento, digite o nome completo da classe incluindo seu pacote neste campo. Se pretende criar ocorrências do símbolo no ActionScript, mas não precisa adicionar nenhum comportamento adicional, você pode deixar o nome da classe como está.
O valor da Classe base assume
flash.display.MovieClip
como padrão. Se quiser estender a funcionalidade do símbolo para outra classe personalizada, você poderá especificar o nome dessa classe, contanto que ela estenda a classe Sprite (ou MovieClip).
-
Pressione o botão OK para salvar as alterações.
Nesta etapa, se o Flash não encontrar um arquivo SWC vinculado ou um arquivo ActionScript externo com uma definição para a classe especificada (por exemplo, caso não seja necessário adicionar comportamentos extras para o símbolo), um aviso é exibido:
Não foi possível localizar uma definição para esta classe no caminho de classe. Portanto, uma definição será automaticamente gerada no arquivo SWF após a exportação.
.
Desconsidere esse aviso se o símbolo da biblioteca não exigir funcionalidade exclusiva além daquela da classe MovieClip.
Se você não fornecer uma classe para o símbolo, o Flash criará uma para ele equivalente a esta:
package
{
import flash.display.MovieClip;
public class ExampleMovieClip extends MovieClip
{
public function ExampleMovieClip()
{
}
}
}
Se quiser adicionar outra funcionalidade ActionScript ao símbolo, adicione as propriedades e métodos adequados à estrutura de código abaixo. Por exemplo, suponha que você tenha um símbolo de clipe de filme contendo um círculo com 50 pixels de largura e 50 de altura, e o símbolo seja especificado para ser exportado para o ActionScript com uma classe chamada Circle. O código a seguir, quando colocado em um arquivo Circle.as, estende a classe MovieClip e fornece ao símbolo os métodos adicionais
getArea()
e
getCircumference()
:
package
{
import flash.display.MovieClip;
public class Circle extends MovieClip
{
public function Circle()
{
}
public function getArea():Number
{
// The formula is Pi times the radius squared.
return Math.PI * Math.pow((width / 2), 2);
}
public function getCircumference():Number
{
// The formula is Pi times the diameter.
return Math.PI * width;
}
}
}
O seguinte código, colocado em um quadro-chave no Quadro 1 do documento Flash, criará uma ocorrência do símbolo e a exibirá na tela:
var c:Circle = new Circle();
addChild(c);
trace(c.width);
trace(c.height);
trace(c.getArea());
trace(c.getCircumference());
Esse código demonstra a instanciação baseada no ActionScript como uma alternativa para arrastar ativos individuais ao Palco. Isso cria um círculo com todas as propriedades de um clipe de filme e com os métodos personalizados definidos na classe Circle. Este exemplo é bem básico; o símbolo da biblioteca pode especificar um número qualquer de propriedades e métodos em sua classe.
A instanciação baseada no ActionScript é muito eficiente, porque permite criar dinamicamente grandes quantidades de ocorrências, um trabalho que seria cansativo se feito manualmente. Ela também é flexível, porque você pode personalizar as propriedades de cada ocorrência na sua criação. Para ter uma ideia dessas duas vantagens, use um loop para criar dinamicamente várias ocorrências de Circle. Com o símbolo e a classe Circle descritos anteriormente na sua biblioteca de documentos Flash, coloque o seguinte código em um quadro-chave do Quadro 1:
import flash.geom.ColorTransform;
var totalCircles:uint = 10;
var i:uint;
for (i = 0; i < totalCircles; i++)
{
// Create a new Circle instance.
var c:Circle = new Circle();
// Place the new Circle at an x coordinate that will space the circles
// evenly across the Stage.
c.x = (stage.stageWidth / totalCircles) * i;
// Place the Circle instance at the vertical center of the Stage.
c.y = stage.stageHeight / 2;
// Change the Circle instance to a random color
c.transform.colorTransform = getRandomColor();
// Add the Circle instance to the current timeline.
addChild(c);
}
function getRandomColor():ColorTransform
{
// Generate random values for the red, green, and blue color channels.
var red:Number = (Math.random() * 512) - 255;
var green:Number = (Math.random() * 512) - 255;
var blue:Number = (Math.random() * 512) - 255;
// Create and return a ColorTransform object with the random colors.
return new ColorTransform(1, 1, 1, 1, red, green, blue, 0);
}
Isso demonstra como você pode criar e personalizar várias ocorrências de um símbolo com rapidez usando código. Cada ocorrência é posicionada com base na contagem atual dentro do loop e recebe uma cor aleatória definindo sua propriedade
transform
(que Circle herda ao estender a classe MovieClip).