シェイプ_シェイプの構造_シェイプレコード - hsk/swfspec_ja GitHub Wiki

シェイプレコード

シェイプレコードには次の 4 つの種類があります。

  • End シェイプレコード

ENDSHAPERECORD

フィールド コメント
TypeFlag UB[1] エッジレコードではないので常に 0
EndOfShape UB[5] シェイプの終端フラグ。常に 0

STYLECHANGERECORD

style change レコードは、非エッジレコードです。 これは次の操作を実行するために使用することができます:

  1. 描画の塗りまたは線のスタイルを選択する。
  2. 現在の描画位置を移動する(描画なし)。
  3. スタイルの新しいセットで現在の塗りつぶしと線のスタイルの配列を交換する。

塗りつぶしと線のスタイルは、多くの場合、新しいパスの開始時に変化するので、それは単一のレコードに複数のアクションを実行するために有用である。 例えば、DefineShapeタグは赤い円と青の正方形を定義する場合を考えましょう。 円が閉じられた後、描画位置を移動させ、青色の塗りつぶしに赤色塗りつぶしを交換する必要がある。スタイル変更レコードは、単一の形状レコードでこれを実現することができます。

フィールド コメント
TypeFlag UB[1] エッジレコードではないので常に 0
StateNewStyles UB[1] 新しいスタイルフラグDefineShape2 と DefineShape3 でしか使わない
StateLineStyle UB[1] 線スタイル変更フラグ
StateFillStyle1 UB[1] 塗りスタイル 1 変更フラグ
StateFillStyle0 UB[1] 塗りスタイル 0 変更フラグ
StateMoveTo UB[1] 移動フラグ
MoveBits If StateMoveTo, UB[5] 移動用フィールドで使うビット数
MoveDeltaX If StateMoveTo, SB[MoveBits] X の移動量
MoveDeltaY If StateMoveTo, SB[MoveBits] Y の移動量
FillStyle0 If StateFillStyle0, UB[FillBits] 塗りスタイル 0
FillStyle1 If StateFillStyle1, UB[FillBits] 塗りスタイル 1
LineStyle If StateLineStyle, UB[LineBits] 線スタイル
FillStyles If StateNewStyles, FILLSTYLEARRAY 新しい塗りスタイルの配列
LineStyles If StateNewStyles, LINESTYLEARRAY 新しい線スタイルの配列
NumFillBits If StateNewStyles, UB[4] 新しいスタイルの塗りインデックス
NumLineBits If StateNewStyles, UB[4] 新しいスタイルの線インデックス

MoveDeltaXとMoveDeltaYはシェイプの原点を基準にしています。

スタイルの配列のインデックスは0ではなく1で始まる。 FillStyle属性=1は、塗りつぶしスタイル配列内の最初のスタイルを指し、FillStyle属性=2は、塗りつぶしスタイルの配列の2番目のスタイルを指し、等々。 ゼロの塗りつぶしスタイル·インデックスは、パスが充填されていないことを意味し、ゼロのラインスタイル·インデックスは、パスには、ストロークを持っていないことを意味します。 最初は塗りと線のスタイルインデックスはゼロ-塗りなしまたは線なしに設定されている。

FillStyle0 and FillStyle1

FillStyle0とFillStyle1:AdobeのFlashオーサリングツールは、エッジごとに2つの塗りつぶしのスタイル、エッジの各辺のための1つをサポートしています。 自己交差しないまたは重ならないシェイプについては、FillStyle0を使用する必要があります。 図形オーバーラップについては、状況はより複雑である。

例えば、形状は2オーバーラップの正方形で構成され、唯一のFillStyle0が定義されている場合、Flash Playerはパスが重なって「穴」をレンダリングします。 この領域はFillStyle1を使ってfillすることができる。 この状況では、規則はあらゆる指向ベクトルに対して、FillStyle0ベクトルの左側の色であることであり、FillStyle1は(次の図に示すように)ベクトルの右側の色である。

image-003.png

注:FillStyle0とFillStyle1はFILLSTYLEARRAYインデックスと混同してはならない。 FillStyle0とFillStyle1はFILLSTYLEARRAYへのインデックスが含まれている変数です。

移動