DefineShape => DefineBits 参照
SWF の CID 参照関係をテーブルにまとめる処理を実装していて、1 つの DefineShape から複数の DefineBits を参照するケースを発見。
多分、複数の画像をグラフィックシンボルでまとめたものと思われる。
シンボルなんだけど、Sprite でなく Shape になるケース。
[016] 140 DEFINESHAPE2 defines id 0084 | fillstyles(06) linestyles(00) | 1 ) BITMAPc 65535 | 2 ) BITMAPc 83 | 3 ) BITMAPc 65535 | 4 ) BITMAPc 82 | 5 ) BITMAPc 65535 | 6 ) BITMAPc 81 | | fill: 00/02 line:00 - moveTo -60.75 29.85 | fill: 00/02 line:00 - lineTo -115.75 29.85 | fill: 00/02 line:00 - lineTo -115.75 14.85 | fill: 00/02 line:00 - lineTo -60.75 14.85 | fill: 00/02 line:00 - lineTo -60.75 29.85 | fill: 00/00 line:00 - moveTo 0.00 0.00 | fill: 00/04 line:00 - moveTo -60.75 15.35 | fill: 00/04 line:00 - lineTo -115.75 15.35 | fill: 00/04 line:00 - lineTo -115.75 0.35 | fill: 00/04 line:00 - lineTo -60.75 0.35 | fill: 00/04 line:00 - lineTo -60.75 15.35 | fill: 02/02 line:00 - moveTo 0.00 0.00 | fill: 02/06 line:00 - moveTo -60.75 -14.15 | fill: 02/06 line:00 - lineTo -60.75 0.85 | fill: 02/06 line:00 - lineTo -115.75 0.85 | fill: 02/06 line:00 - lineTo -115.75 -14.15 | fill: 02/06 line:00 - lineTo -60.75 -14.15
あれれ。。
| fill: 02/02 line:00 - moveTo 0.00 0.00 | fill: 02/06 line:00 - moveTo -60.75 -14.15
これは表示間違えてないかな。00/00, 00/06 なら分かるんだけど。
それはともかく、1:n 対応すれば、purgeUselessContents が実装できて、
replaceMovieClip の制限事項付きモードを削除できる。
頑張ろう。