フラッシュはムービークリップとスプライトをどのように格納(表現)しますか?


7

フラッシュでオブジェクトを描画し、それをムービークリップまたはスプライトに変換する場合、どのように格納またはフラッシュで表現されますか。ベクトルアートでは、数式を使用して線分として保存または表されることを知っています。描画された形状の頂点を取得する方法はありますか?

たとえば、単純な長方形が描画され、ムービークリップに変換されるとしましょう。とにかく、スプライトから頂点と線分を取得する方法はありますか?その形が得られるように。形状を再現できるように、十分な情報を取得する必要があります。それが鍵です-複製。

簡単に言えば、フラッシュは、描画された図形に関する情報をどこに格納して、それを取得して自分で図形を複製できるようにするのでしょうか。


これは何のために使うのですか?私たちがあなたが達成しようとしていることを知っていれば、答えるのは簡単になります。
AttackingHobo

まったく同じ形状を「複製」したい場合は、単にそれを複製したり、その新しいインスタンスを作成したりしないでください。
bummzack 2011年

OK ...私がやろうとしていることは... Box2Dを使用していて、スプライトまたはムービークリップをBox2Dオブジェクトの「スキン」として配置しています。以前は、スプライトに似たBox2Dプリミティブシェイプの組み合わせを作成しましたが、スプライトが通常のシェイプではなかったため、満足のいくものではありませんでした。したがって、スプライトの形状をプログラムで複製し、スプライトの形状に似たBox2D形状を作成して、前の例のようにスプライトの重複がないように衝突が現実的に見えるようにする方法が必要でした。
Astromaz3 2011年

回答:


3

コメントを正しく解釈した場合、次のことを 行います。Flashで任意の形状のスプライトを作成し、これらのスプライトの形状を自動的に抽出して、Box2dの衝突形状として使用します。

通常、衝突形状は、それらが表すグラフィックアセット(パフォーマンス)よりもはるかに単純な形状です。非常に詳細な3Dモデルは、面取りされた円柱だけで表すことができます。

一部の物理ボディはアルゴリズムによって自動的に作成できますが、手動で描画/モデル化することも一般的です。さまざまな形状のスプライトが大量にない限り、形状を抽出するアルゴリズムを実装する価値はほとんどありません。

次の画像を見ると、非常に複雑な形状がいくつかの円と単純な多角形(凸型でなければならない!)で表すことができることがわかります。これらの形状を手動で描画することは、(ほとんどの場合)考えられるアルゴリズムよりも優れています。

衝突形状

これらの形状をIllustratorやInkscapeのようなベクターツールで描画し、簡単に解析できるSVGにエクスポートできます。または、Flashを使用して、図形をFXGとしてエクスポートします。これも、簡単に解析できる形式です。

まだ納得していないのに、プログラムでスプライトからシェイプを実際に作成したい場合は、次の2つの方法が有効です。

  1. BitmapData.drawを使用して)スプライトをビットマップにレンダリングし、アルファチャネルでベクトル化を実行します。結果の形状が凹型の場合は、三角形化します。
  2. as3swfライブラリを使用して、フラッシュ内の既存のSWFファイルを解析します。そこから形状情報を抽出できます。ここでの主な問題は、オブジェクトの輪郭を形成する形状を見つけることです。この形状を凸多角形に変換します。

3

「Flash」は、映画やビデオゲームのすべての情報を独自の形式で保存します。データはベクトル形式で保存されます。これは数学の定義を持つ形式です。データを失うことなく画像を拡大縮小できるため、これがビットマップとの主な違いです。

.swfファイルにアクセスできます。ここにhttp://www.adobe.com/devnet/swf.htmlの仕様があります。ムービークリップ、形状、座標などを解析します。.swf形式は非常に大きいため、 SWFRIPプロジェクトのコードはhttp://sourceforge.net/projects/swfrip/にあり、.swfファイルを解析する方法を確認できます。

少しの忍耐で、必要なデータを取得できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.