2007年12月アーカイブ
2008年に向けての第一歩。Advanced ActionScript 3 with Design Patternsを購入。基礎体力の向上を目指すのだぁ。

AS3.0のデザパタ本は オライリーからもリリースされていますが、「JavaやC++のデザパタをそのままAS3.0に持ち込むのはどうよ?」みたいな趣旨のAmazon.comの書評があり、あまり良くなさそうかなぁーと。
昨日、渋谷シネマアンジェリカにて、雪の女王[新訳版]を渋谷で鑑賞。劇場外の壁に宮崎駿監督のサインを発見。

帰りは映画館のすぐ横にあった「さか」という名の韓国家庭料理家で夕食。2800円で食べ放題で、なかなか良かったです。
メリークリスマス。みなさまハッピーな時間を過ごされましたでしょうか?いよいよ今年も残すところあとわずかですね。今年ハッピーだった方は更にハッピーに、そして今年はイマイチ、イマニくらいだった方には、2008年がリア充な1年でありますように、ボクと一緒に頑張りましょう。
さて、今日は年末らしく、2007年という年が僕にとってどんな1年だったかを、FLASHを軸にざっくりと振り返ってみようと思います。
- 不明
- ライブラリなんていう便利なものが存在していることを初めて知る。とりあえずFuseKitを使ってみる。Shortcutsクラスくらいしか使わなかったけど、ものスゴく便利でクリビツ。
- 日本のスーパーFLASHerの方々のblogの存在を知る。
- はてダにてようやくblogを開始。
- 「The Essential Guide to Flex 2 with ActionScript 3.0: The Complete Guide」を読んで、Flex Builderを弄ってみる。自分で作成したらメチャクチャ時間がかかる or 一生できないようなインターフェースを数行のmxmlで実装できてしまうことにクリビツ。
- 会社の業務では相変わらずnone Flashな毎日。Photoshop、html、css。新しいとこでは、Google Maps APIとか?
- ActionScript 3.0 Cookbook読了。しかし相変わらず本を読んで、チョロチョロとコードを書いてみるくらい。自分であまり考えないので、身に付かずすぐ忘れる、といういつものパターン。進歩なし。
- AMFPHPを知る。DBと連携したFlashを作れるようになりたいので、弄ってみる。MySQLは「MySQL入門以前」と、ウチにあった「PHP+MySQL Web制作ガイド featuring DREAMWEAVER MX 2004」という本を読んでみました。
- 特になし。仕事でjQueryをボチボチ使ってみたくらい。
- Flash CS3購入。
- PaparVision 3Dをやってみる。ここで初めて自分でActionScript 3.0を書いてみる。
- 特になし。会社ではバナー作成とか、日本の都道府県の地図のホットスポット作成とかというスーパーエキサイティングな作業をこなす毎日。
- 退社。
- 元同僚からの依頼でフルフラサイト作成開始。AS 3.0で組むことを決意し、ようやく本格的に自分の手を汚す。
うーん。こうして振り返ると、大したことやってないなぁ。でもFLASHerな方々のblogを読み、ライブラリとかフレームワークとかというものを知り、いかに自分が遅れているかを確認できたことは大きかったと思います。
今度は来年の抱負でも書いてみようかなぁ。
[memo]
オブジェクトのクラス名を変数に代入し、それを用いてインスタンスを生成したい時。
flash.utils.getDefinitionByNameを使う。
var ClassReference:Class = getDefinitionByName ("MyClass") as Class;
var instance:Object = new ClassReference();
実はこれ、2chの某スレで教えてもらいました。感謝。
ちなみにAS2.0の場合はこんな感じ。
var className:String = "MyClass"; var instance:MyClass = new [className]();
scaleX, scaleYプロパティに-1を代入すると、表示オブジェクトを反転できたんですね。知らなんだ。(そもそもscaleに負の値を代入できるという事実を知らなかったり…)
displayObject.scaleX = -1 //水平反転 displayObject.scaleY = -1 //垂直反転
Matrix.createBox()とか、MatrixTransformer.rotateAroundInternalPoint()とか、たくさん調べてしまったオイラ乙。
ここ数年ですっかり定着してしまったイベント、「両親の年賀状作成代行」をやっています。僕の親くらいの年代の人たちは大抵そうだろうと思いますが、ウチの両親も合わせてちょうど200枚くらい年賀状を送るので、さすがにそれを全て手書きで書くのはシンドイだろうと、僕が代わりにプリントしているわけです。
といっても、パソコンでプリントするのも結構大変。何せウチのプリンタCannon iP90はコンパクトが売りな反面、年賀はがきはせいぜい15枚程度しかトレイにセットすることができないのです。そして専用の年賀状作成ソフトがとてつもなく僕と相性が悪いようで、何をやるにしても神経を逆なでてくれます。「痒いところだけ掻かずに、その周りだけ掻いてくれる」感じなのです。もー、来年からは絶対別のソフト使ってやる。
ところで、僕が年賀状を送る相手は毎年10人くらいです。友達少なすぎorz
英語版購入後、まさかの日本語翻訳版が発売され嬉しいやら悲しいやらのMaking Things Moveですが、9割方読了しました。「もっと早くからこの本を読んでおくべきだった」と思うくらいの充実の内容です。書評は改めてエントリーしようと思いますが、とりあえず今日は本書で紹介されている3D回転のカスタマイズについてです。
15章で紹介されている、Y軸を中心にオブジェクトが回転し続けるサンプル(RotateY.as)を、任意の角度だけ回転して止まる様に改良しようと、出来の悪い頭を随分と悩ませてみました。その際、以前エントリーしたTweenerでprivateプロパティをイージング操作する方法が役に立ったので、情報共有をば。
[こんな感じでトゥイーンで回転]
http://www.studio-hedgehog.com/prototype/as3/3dRotation/
本書掲載のコードはご紹介できないので、以下主な改良点だけざっくりと書きます。この本を持っていない方は、なんのことやらさっぱり分からないと思います。ごめんなさい。
- Ball3Dクラスに新たに、initX, initY, initZというインスタンスプロパティを用意。これらの値にはメインクラスのinit()実行時にxpos, ypos, zposの値を代入(サンプルに従い、ここではpublicメンバにしてあります)
public var initX:Number;
public var initY:Number;
public var initZ:Number;
- メインクラスにy軸回転用のプロパティを用意
private var _angleY:Number = 0;
- Event.EnterFrameリスナーを登録する代わりに、Tweenerを使用
Tweener.addTween (this, {
//y軸を中心に時計回りに360度回転
angleY:Math.PI * -2,
time:3,
transition:"easeInOutBack"
});
- getterとsetterを用意
public function set angleY(angleY:Number):void {
_angleY = angleY;
for each (var ball:Ball3D in balls) {
rotateY(ball, angleY);
doPerspective(ball);
}
sortZ();
}public function get angleY():Number {
return _angleY;
}
- メソッドrotateY()の3,4行目を以下のように変更
var x1:Number = ball.initX * cosY - ball.initZ * sinY;
var z1:Number = ball.initZ * cosY + ball.initX * sinY;
angleYをpublicにして、TweenerのonUpdateで回転させるメソッドを呼んでやるよりは、こちらの方がスマートだと思います。Tweener.addCaller()でも同様のことができるのかと思ったのですが、どうもこのメソッドはtimeとcountプロパティを併用して、「○秒で△回任意のメソッドを呼ぶ」ような時に使うメソッドっぽいですね。

