Actionscript, Web, Interactive and Design

Flash制作に欠かせない3つのツール・和泉編

admin : 2009. 10. 14. 00:56 — ActionScript

KAYACさんの、_level0.KAYACで「Flash制作に欠かせない3つのツール」というエントリが非常に面白かったので、僕も乗っかりました。

1.DeMonsterDebugger

http://demonsterdebugger.com/

おなじく_level0.KAYACのこのエントリが分かりやすいです。

(1)DeMonsterDebugger側から、デバッグ用ライブラリをエクスポートする
(2)ドキュメンクラスでimport、初期化をする。
(3)Flashでプレビュー

といった簡単な手順でDeMonsterDebuggerに情報がずらっと表示されます。
FirexfoxアドオンのFireBugのような感じでプロパティを書き換えたり、traceをモニタすることができます。

DeMonsterDebuggerはすごく便利なので、後日もう少し掘り下げて書きたいですね。

2.ASDoc

ActionScript 3.0 コンポーネントリファレンスガイド

これ本当に読んでて楽しいです。
知らなかったプロパティとかメソッドを見つけてはニヤニヤしてます。
pdf版とかあるとオフラインでも読めてうれしいんですが…

3.英字配列キーボード

自宅のMacBookも英字配列、会社のiMacは英字配列キーボード持ち込んでで作業してます。
cmd+Spaceで入力を切り替えれるのと、アンダースコアが打ちやすいのが特に気に入ってます。
あと、自宅だとparallels+FlashDevelopでメインのコードを書いていますが、日本語キーボードだと面倒なキーの配列問題も特に発生せず、快適に使えています。
ちなみに会社のキーボードはこれです。
ストロークが浅めなので、パシパシとたたく感じです。

他のFlash制作者の方がどんなツールを使っておられるか気になりますねー。

このエントリを書いている間に独学ActionScriptさんがこのエントリで3つのツールを紹介されてました。

Flash初心者がProgression 4 publicBeta1.1を始めたメモ

admin : 2009. 10. 10. 13:50 — ActionScript

「演出は少ないけど画面遷移が膨大なFlashをつくってくれ、あと音を出したい」という案件が舞い込み、自分がアサインされました。
そこで、先日Betaが公開されたProgression4を使うことにしました。

結論:1週間程みっちりやれば、有る程度の遷移とかできるようになります。

あくまでBetaなので、今後変わる可能性もありますが、メモ程度に書き残しておきます。

manager、Scene、Castの関係

manager(Progressionクラス)

managerは画面遷移のすべてを統括。
addScene()されたSceneはすべてmanagerの管理下の置かれる。

Scene(SceneObject)

画面の大枠を担当。
この中にキャストをaddChildすることで表示を行う。

Cast(CastSprite,CastButtonなど)

表示オブジェクト。
Sceneとの関連性を持たない(直接Sceneを参照できない)
基本的にはDisplayObjectにmanagerへの参照+独自の機能を持つように拡張したクラス、という認識。
独自の機能というのは、CastButtonであればSceneIdを指定することで画面を遷移する。という感じ。

ハマリポイント

Progressionには「お作法」のようなものがあり、それを理解するまでは思い通りに作れません。どこでハマったかをメモして、今後に役立てたいです。

1.シーンイベント

これはProgressionを始めた人であれば間違いなく一番最初にはまる壁。
あれ、表示されないとか、なんで2個も表示されてんの!とかはだいたいこれな気がします。
これこそProgressionのお作法で、一番重要な部分だと思います。

理解する一番の早道は、とりあえずシーンとボタンをいくつか作ってとりあえず遷移させてみて、出力パネルを監視することだと思います。
Progressionはシーンイベントを逐一表示してくれるのですごくたすかります。

あとはMurakenさんのエントリとか、gihyoのnorthprintさんのエントリが分かりやすいです。
だいたいはMurakenさんのエントリの通り、atSceneLoadとatSceneUnloadでいけたりします。atSceneInitとatSceneGotoはたまに使います。

2.コンストラクタではmanagerを参照できない。

たとえば、以下のようなコード、エラーが出ます。

public class MyScene extends SceneObject
{
     public function MyScene(){
          trace(manager.root);
     }
}

scene:SceneObject=new SceneObject()した段階では、まだaddSceneされてない。
そのためmanagerを参照することができない、ということだと思っています。
こういう場合は、atLoadやatInitで参照すると回避できます。

protected override function atSceneLoad():void {
     addCommand(
          new Trace(manager.root)
     );
}

3.CastからSceneを参照

たとえば、indexSceneに配置されているindexPage(CastSprite)にsettingというプロパティを作り、他のSceneや他のCastから参照したい場合。

manager.root.page.setting

とすれば良さそうですが、うまく行きません。
いちいちキャスト(このキャストは強制型変換のこと。ややこしいですね。)してやる必要があります
上の例だとこんな感じ。

IndexPage(IndexScene(manager.root).page).setting

ここらへんはprogressionというより、AS自体ではまった所かもしれません。

4.リンクしないボタンの処理

CastButtonはすごく便利です。
自分でaddEventListenerしなくてもすでにoverrideしてありますし(重要)
だけどsceneIdプロパティが必須です。


sceneId=""
sceneId="実際に存在しないId"

とかするとエラーで怒られます。
なのでその場合は普通にCastSpriteで作ってaddEventListenerする、という従来通りの作り方をします。

managerへの参照を持たないオブジェクトの中に配置したCastはmanagerを参照できない
なにを言っているんだという感じですか、コードだとこんな感じです。


sp:Sprite=new Sprite();
cast:CastSprite=new CastSprite();
sp.addChild(cast);

とした場合、Castはマネージャーに参照できません。
spもCastSpriteにする必要があります。

rootの定義

シーンからドキュメントクラスにアクセスするときは注意が必要です。


SceneObject.root
CastSprite.root

上記は同じようにrootを参照していますが実体は違います。
SceneObjectのrootはmanager.rootと同じです。
Castのrootはindex。いわゆるドキュメントクラスです。
CastからindexSceneを参照したい場合は、manager.rootとすればよいですが、SceneObjectからドキュメントクラスを参照したい場合


Index(manager.container.root)

こんな感じで参照できます。

Progressionの便利ポイント

さんざんはまったポイントを書いてきましたが、それよりも便利な部分が多すぎる!
ということでProgressionのナイスなポイントも。

1.コード量が最小限ですむ。

ほんとうに作りたいところだけ作れます。
こーいう構造でー、こーいう遷移でー、これ読み込んでーというのがかなり直感的にできます。

2.Command

めちゃくちゃ便利です。とくにLoader周り。
とりあえず最初に読んどいて、それから表示して。みたいなことが簡単にできます。
SeriaLList万歳。

3.超協力な参照力。

だいたいmanager.rootとか、manager.currentとかすると必要なプロパティやシーン情報が取れます。
なのでとりあえずindexとか子シーンで設定系を定義しておいて、孫シーンとかでそれを参照して処理。とかってやってます。
先ほどのはまりポイント2でやったような強制型変換で強引に、というようになりがちですが、こういう強引なコードでもちゃんと取れるのはうれしい。

これから勉強したいポイント

Progressionは機能がてんこもりなフレームワークです。
1回使っただけじゃ機能を一通り試すこともできませんでした。
今後は以下の部分に注意して使ってみたいと思っています。

initObjectとResource

一応なんとなく分かってはいるつもりなんですけど、実際使ってないのでなんとも。という感じ。
ちょうどdokeさんがlevel0でエントリを書いておられました!これを読んで勉強します。

Command

serialListでばんばん直列なcommandを発行しているだけなので、あまりよろしくないですね。。

XMLまわり

ページ情報をXMLで記述できるみたいなので、今度やってみたいです。

Flasherがフォローすべきtwitterアカウント一覧

admin : 2009. 10. 4. 00:42 — Diary

Webデザイン科の後輩である@skyguildがこんなことをつぶやいていました。

skyguild:もっともっとツイッターを情報収集に活用したい。いいついっこか、Webの人いないかな? つぶやき元

izm_design@skyguild Flash人でよければ笑 つぶやき元

skyguild@izm_design オススメ教えて下さい>< つぶやき元

という流れで、Flash人を@skyguildに紹介することになりました。

日本人

beinteractive:SparkProjectの主催者、フリーランスで活動
fladdict:fladdict.net、フリーランスでiPhoneアプリやFlash作品を発表
keita:tha所属、FFFFOUND!などのサービスを手がける
maaash:KAYAC所属、wonderflの開発者
mariroom:adobeの所属
minoru_tanaka:pickles代表、インタラ塾運営
muraken:undifined.inc代表
nitoyon:テック煮ブログを運営
nium:ProgressionFrameWorkの開発者
oshige:AS入門ノートの著者
Saqoosha:FLARToolKitの開発者。katamari所属
t_o_t_a:tomato所属、WebDesigningに連載など
trick7:trick7.comを運営、リクルートメディアテクノロジーラボ所属
yugop:tha代表

グループアカウント、bot、ついっこなど

adobeflash:Flash情報、英語
FITC:Flashカンファレンス、FITCのアカウント、英語
fla:Flash情報、日本語
flash_dev_jp:Flash情報、日本語
Flash_Platform:Flash情報、英語
FlashIDE:Flash情報、英語
libspark:SparkProject情報、日本語
theFlashBlog:flash関連ブログ、英語

おまけ。外国のFlasher

leebrimelow
gskinner
Quasimondo
bit101
flight404
JoshuaDavis

自分のフォローしている人からリストアップしてみました。
この人がいない!とか自分がはいってねー!って人はコメント等でどんどん教えてください。

また、自分のアカウントが載っているのはちょっと…という方はお知らせください。

This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.
(c) 2010 blog.alterna.in | powered by WordPress with Barecity