CS3 導入に伴う自作クラスの修正(2)
2007/06/03 17:00 - AS3.0
以前、Flash のプラットフォームを Public Alpha から CS3 に切り替えた際、自作クラスの手直しを求められた件についてエントリーしました。
それは予想の範囲内、というか、当然そうなってしかるべきと思っていたことだったし、たった二つのクラスファイルに数文字追加するだけだったので、特に問題となることではありませんでした。
しかし今回新たにまた問題点が見つかりました。
しかも CS3 で新規作成した fla ファイルでのみエラーとなります。
Public Alpha で新規作成した fla ファイルだったら、CS3 で何度 Save しようが Save and Compact しようが、おそるべきことに Save As で別 fla にしてもエラーになりません。
Public Alpha からある程度、fla や as を蓄積してきた私としては非常に見つけにくく、また、やっかいなエラーです。
もっとも Livedocs のサンプルに忠実な記述をおこなっていれば、別に問題となるものではなかったので、自業自得と言えば自業自得なわけですが。
今回はそんなトホホなエラーの話です。
私は Shape や Sprite、MovieClip などといった表示オブジェクトに対して、生成と addChild を同時におこなう記述をおこなってきました。
var shp : Shape = addChild( new Shape() ); var sprt : Sprite = addChild( new Sprite() ); var mc : MovieClip = addChild( new MovieClip() );
なぜこんな記述をしてきたかというと、ケアレスミス対策と省力化が同時におこなえるという、二つの大きなメリットがあったからです。
ご存じのとおり、AS3 では表示オブジェクトは生成しただけではステージに表示されません。 addChild して初めて表示されます。
この点が AS2 との非常に大きな相違点ですが、私は addChild を完全に失念し、「あれ、どこかタイプミスしたか?」と慌てることが、いまだにあります。
そして、コードを何度も何度も見直した果てに、単純に addChild が抜けているだけということを発見し脱力しまくることがしばしば。
そんな私にとっては、上記の生成と addChild を同時に行う上記の記述方法は、そういったケアレスミスをなくすことができる、非常にありがたいものなんでした。
そして、普通だったら2行費やすべきところを1行で済ませることができるという省力化もできて、一石二鳥だったのです。
ところが、純正 CS3 fla ファイルでは、下記のように2行に分かち書きをしなければなりません。
var shp : Shape = new Shape(); addChild( shp );
さもないとコンパイラが以下のようなエラーを吐き出します。
でもわざわざ分かち書きしないとダメなら、なんで addChild で引数のパスを返値にするのか、さっぱり理解ができないよ!
一体全体 addChild の返値にどんな利用法があるっていうんだ!!
意味ないじゃん!!!
と、逆ギレしてみたりもするんですが、泣こうが怒ろうがエラーメッセージは表示される。
しかたないので全部の as ファイルと fla ファイルを見直しすることにします。
おかげでしばらく開発は中断です。