Como o flash armazena (representa) clipes de filme e sprites?

7

Quando desenhamos um objeto em flash e o convertemos em um clipe de filme ou sprite, como ele é armazenado ou representado em flash. Eu sei que na arte vetorial ele é armazenado ou representado como segmentos de linha usando fórmulas. Existe alguma maneira de obter os vértices da forma que foi desenhada?

Por exemplo, digamos que um retângulo simples seja desenhado e convertido em um clipe de filme. Existe alguma maneira de obter os vértices e os segmentos de linha do sprite? Para que sua forma seja obtida. Informações suficientes devem ser obtidas para que a forma possa ser replicada. Essa é a chave - replicação.

Em termos simples, onde o flash armazena informações sobre uma forma que foi desenhada para que possamos obtê-la e tentar replicar a forma?

Astromaz3
fonte
Para que você vai usar isso? Se soubermos o que você está tentando alcançar, será mais fácil responder.
AttackingHobo
Se você deseja "replicar" exatamente a mesma forma, por que não simplesmente cloná-la ou criar uma nova instância?
bummzack
OK ... eis o que estou tentando fazer ... Estou usando o Box2D e coloco sprites ou clipes de filme como 'skin' do objeto Box2D. Anteriormente, eu criei uma combinação de formas primitivas do Box2D que se assemelhavam ao sprite, mas nunca era satisfatório, pois o sprite não era uma forma regular ... alguns bits estavam surgindo e não estavam sobre a forma subjacente do box2D. Então, eu queria uma maneira de replicar a forma do sprite programaticamente e criar uma forma Box2D que se assemelha à forma do sprite, para que as colisões pareçam realistas, não haverá sobreposição de sprites como no caso anterior.
Astromaz3

Respostas:

3

Se eu interpretei seu comentário corretamente, você deseja: Ter sprites de forma arbitrária no Flash e extrair automaticamente a forma desses sprites para usá-los como formas de colisão no Box2d

Geralmente, as formas de colisão são formas muito mais simples do que o ativo gráfico que representam (desempenho). Um modelo 3d altamente detalhado pode ser representado apenas por um cilindro chanfrado.

Alguns corpos físicos podem ser criados automaticamente por algoritmos, mas também é prática comum desenhá-los / modelá-los manualmente. A menos que você tenha uma quantidade enorme de sprites de formas diferentes, provavelmente não vale a pena implementar um algoritmo que extraia formas para você.

Se você der uma olhada na imagem a seguir, poderá ver que uma forma muito complexa pode ser representada por alguns círculos e polígonos simples (devem ser convexos!). Desenhar essas formas manualmente (provavelmente) será superior a qualquer algoritmo que você possa criar.

formas de colisão

Você pode desenhar essas formas em uma ferramenta vetorial como o Illustrator ou o Inkscape e exportá-las para o SVG, que pode ser facilmente analisado. Ou use o Flash e exporte as formas como FXG, que também é um formato que pode ser facilmente analisado.

Se ainda não o convenci e você realmente deseja criar programaticamente as formas de seus sprites, aqui estão duas abordagens que podem funcionar.

  1. Renderize o sprite em um bitmap (usando BitmapData.draw ) e execute a vetorização no canal alfa. Se a forma resultante for côncava, triangule-a.
  2. Use a biblioteca as3swf para analisar um arquivo SWF existente no flash. Você pode extrair informações de forma a partir daí. Seu principal problema aqui será: Encontrar as formas que formam o contorno do seu objeto. Converta essa forma em polígonos convexos.
bummzack
fonte
3

O "Flash" armazena todas as informações do filme ou videogame em um formato próprio. Os dados são armazenados em um formato vetorial, este é um formato que possui uma definição matemática. Essa é a principal diferença dos bitmaps, porque você pode dimensionar a imagem sem perda de dados.

Você pode acessar o arquivo .swf, aqui está a especificação http://www.adobe.com/devnet/swf.html e analisar os clipes de filme, formas, coordenadas etc. Como o formato .swf é muito grande, você pode usar o código do projeto SWFRIP em http://sourceforge.net/projects/swfrip/ e veja como você pode analisar um arquivo .swf.

Com um pouco de paciência, você pode obter os dados que deseja.

momboco
fonte