これからはこっちで活動していきますよ。
izm-design.comはalterna.inへ
2009年11月21日Flash制作に欠かせない3つのツール・和泉編
2009年10月14日KAYACさんの、_level0.KAYACで「Flash制作に欠かせない3つのツール」というエントリが非常に面白かったので、僕も乗っかりました。
1.DeMonsterDebugger
おなじく_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を始めたメモ
2009年10月10日「演出は少ないけど画面遷移が膨大な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)
追記
↑これちがうよ!ただしくはIndex(manager.root.container)だよ!
こんな感じで参照できます。
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アカウント一覧
2009年10月4日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
自分のフォローしている人からリストアップしてみました。
この人がいない!とか自分がはいってねー!って人はコメント等でどんどん教えてください。
また、自分のアカウントが載っているのはちょっと…という方はお知らせください。
BetweenAS3使い方、Tweenerからの乗り換えのために。
2009年8月14日先日α版が公開されたBetweenAS3ですが、昨日から少しずつ触ってみました。
Tweenerしか使ってなかったので、BetweenAS3をTweenerレベルまで使えるようになったら移行しようと思ってます。アップデート終了しましたし。
impot周り
いわゆるcaurina.transitions.Tweenerにあたるもの(tweenの発行とeasing)を使おうとしたときに必要なのは以下。
org.libspark.betweenas3.BetweenAS3
org.libspark.betweenas3.easing.*
easingがlinerでいいよーという場合にはorg.libspark.betweenas3.BetweenAS3のみで問題ないはずです(あんまりないと思いますが。)
あと後述するイベントハンドラへの登録まで行う場合はさらに以下の内容のクラスが必要です。
org.libspark.betweenas3.tweens.ITween
org.libspark.betweenas3.events.TweenEvent
または
org.libspark.betweenas3.tweens.IObjectTween
org.libspark.betweenas3.events.TweenEvent
という感じでTweenEventと、ITweenもしくはIObjectTweenが必要。
ITweenと、iObjectTweenの違いも後述。
Tweenさせる。
本題です。どう書くか。
1 | BetweenAS3.tween(mc, { x:100 }, null, 1.0, Cubic.easeOut).play(); |
第一引数:ターゲットとなるオブジェクト
第二引数:tween先(Tweenerと同じように指定する)
第三引数:tween元(Tweenerにはなかった!)
第四引数:時間(BetweenAS3のデフォルトだと1.0、Tweenerだと0だったはず)
第五引数:easing(タイプを指定して、そのプロパティでin,outなどを指定)
注意:play()ってちゃんと書きましょう。
これで、Tweenerと同じようにtweenはできたはず。
TweenEvent
これが個人的に一番うれしいところ。
TweenerでもonCompleteはあるんだけど、コードが煩雑になってしまうので、あんまり使いたくなかったんです。(使ってたけど)
BeTweenAS3では、イベントハンドラへ登録することができるようになったのでかなりいい感じです。
1 2 3 4 5 6 7 8 | var myTween:ITween = BetweenAS3.tween(mc, { x:100 }, null, 1.0, Cubic.easeOut); myTween.addEventListener(TweenEvent.COMPLETE, onComplete); myTween.play(); private function onComplete(e:TweenEvent):void { trace("COMPLETE"); } |
非常にスッキリでわかりやすい!すてき!
これ、かなり好きなんですが、ITweenだとBetweenAS3.tween()でtweenをつくったときのターゲットとなるオブジェクトにアクセスできないみたいです。
なので、ターゲットにアクセスしたいときは、ITweenじゃなくて、IObjectTweenをつかいます。
1 2 3 4 5 6 7 8 | var objTween:IObjectTween = BetweenAS3.tween(mc, { x:100 }, null, 1.0, Cubic.easeOut); objTween.addEventListener(TweenEvent.COMPLETE, onComplete); objTween.play(); private function onComplete(e:TweenEvent):void { trace(e.target.target); } |
TweenEvent.target.targetでターゲットとなるオブジェクト(mc)にアクセスできます。
あとは、かなりお世話になっていたColorShortcutsとか、fladdictさん制作のMatrixShortcutの絶対座標でのTweenあたりをフォローできるようになれば完全に乗り換えができる気がします。
以上をふまえて、完全に個人的なテンプレコードを。
これ元に改変していけばTweenの発行、イベントリスナへの登録、ターゲットへの参照が楽ちんです。
1 2 3 4 5 6 7 8 9 10 11 12 13 | import org.libspark.betweenas3.BetweenAS3; import org.libspark.betweenas3.tweens.IObjectTween; import org.libspark.betweenas3.easing.* import org.libspark.betweenas3.events.TweenEvent; var objTween:IObjectTween = BetweenAS3.tween(mc, { x:100 }, null, 1.0, Cubic.easeOut); objTween.addEventListener(TweenEvent.COMPLETE, onComplete); objTween.play(); private function onComplete(e:TweenEvent):void { trace(e.target.target); } |
まとめ
BetweenAS3は、まだアルファ版なのでまだ修正が有ると思いますが、期待しつつ待ちたいと思います。
また、去年の今頃Tweenerに出会ってASを書く楽しさを知りました。
いろんなサイトを検索しまくって、それでもうまくいかなくて、Tweenできた時はすごくうれしかったです。
今後そういうBetweenAS3はそういう初心者が入門的する際に使ってもらえるライブラリになるんじゃないかな、と勝手に思っていたりもしています。
僕が体験したようなうれしい!みたいな感動を最初はコピペでもなんでもいいので体験できるとAS書く人がどんどん増えるんじゃないかなーと思います。
最後のテンプレコードはそういう意味も含めて書きました(半分は自分のためです)
iPhoneアプリ「eye clock」がリリースされました。
2009年8月12日最近サイトをリニューアルしたSNAPですが、新しく+ryuというデザインブランドを立ち上げました。
デザインは人々に「楽しさ」や「やさしさ」、「気づき」など、心に平和をもたらすものでなければならないと思います。
つまり、デザインのフィールドは常にポジティブでなければならないのです。
+ryuは限定された1つの目的のためだけにあるわけではありません。+ryu という流れの中にあります。デザインの可能性に光をあて、新たなフィールドを開拓し、「場」を育て、大きな流れとして機能します。その活動が結果として、社会を照らすあたたかな光となることを願っています。
この+ryuのプロダクト第1弾として、iPhoneアプリ「eye clock」をリリースしました。
「時間をエンターテイメントする」というコンセプトから生まれた作品です。
今後も+ryu名義でiPhoneアプリに限らず、いろいろな活動を行っていきますので、よろしくお願いします。
話し言葉から作るプレゼン資料。
2009年8月12日ahomuのところの伝えるために〜が面白かったんで、自分のやり方もまとめておこう。
といっても、最近はめっきり作っていないので、学生時代のプレゼン資料(主にslidesライブラリで作っていたんだけど)の作り方を振り返る。
この作り方は主に「話す、発表する」という時に使うパターン。配布資料がある場合はまた別途作るんだけど、話したい内容から、どんだけムダを削り、必要なもののみにしてビルドアップしていくか、っていう作り方。
1.しゃべりながら、テキストエディタに殴り書きをする
まずは、プレゼンをしている状況を思い浮かべながら、ひたすらしゃべってみる。そしてしゃべりながらメモ帳とか、テキストエディタに内容を書いていく。
話している内容にムダがあってもいい、どうせあとで削るんだから。
たとえば、グラフなどを入れたい場合も「このグラフを見ていただくと…」などと書いていく。
2.テキストエディタを見ながら、いらない部分を削る
しゃべり終わったら、そのテキストを眺める。膨大にムダな部分があるはず。
この段階で、プレゼンのおおまかな流れをつくっていく。話す順番に違和感はないか、内容にムダはないか、不利になることを話していないかなどを見つめて削ったり、順番を入れ替えたりする。
入れ替えると、話した内容の前後関係も調整したりする。
ここで、いわゆる「原稿」にあたる部分ができる。実際に見ながら話すことはほとんどないけど。
3.削った文章の中から、資料に含める内容を検討し、さらに削る。
原稿の文章をすべて入れる訳ではないので、原稿の中から、必要最小限の内容をリストアップしていく
見出しであれば20文字以内、テキストを1行程度にまとめていく。
この段階で、スライドがだいたい何枚くらいになっていくか分かる。
4.削った文章に優先度をつけ、見出し、文章、キャプション、画像、などの素材にしぼっていく
リストアップした内容から、実際にどの内容を大見出し、小見出し、文章、キャプションにするかを決定する。
グラフなどが必要であれば、それもリストアップし、準備しておく。
5.実際に資料にしていく。
実際に資料にしていく段階でも、文字の長さ、内容は適当か、前後関係に違和感はないか、などを見ながら調整をかけていく。
6.資料を見ながらまたしゃべってみる。
実際に資料ができたら、それを見ながらしゃべってみる。2でできた内容と話したい内容はぶれていないか、などに気をつけて自分でチェックしながらはなしていく。
基本的にはこんな作り方で作っていく。
この作り方の一番のメリットは、かなり制作時間が短縮できることと、資料を作りながらしゃべり込みを行っているので、内容が頭に入っているというのが大きいと思う。
結局は話して伝えるので、話ながら作っていった方がいいだろう、というのがこの作り方。
フリーでプライベートなリポジトリ「Unfuddle」
2009年6月2日会社でiPhoneのコードを書いているときに、やっぱりバージョン管理はあったほうがいいなーと思うようになり、いろいろ探してみた。
条件
- プライベートなリポジトリが作れる
- SVNが使える
- チケット、コードがブラウズなどある程度の機能がある
- フリー!
ってところで、Unfuddleがヒット。
- 基本的にリポジトリはプライベート
- 200M(有料版はもっとある)
- wikiのような機能あり
- チケット登録可
- ダッシュボード機能あり
- サイトのデザインが若干コテっとしている
XP-DEV.comってのも見つけたんだけど、コードのブラウジングめんどくさい。
Versionsのほうでブラウジングってのもありなんだけど、オンラインでやってるんだからやっぱほしいよね、っていう感じ。
あとは、wikiのように編集できるページもあり、チケット登録やノートなど、一定の機能はそろっている感じ。ダッシュボード機能がついているので、変更が確認できるのもよい。
また、チケットが登録されたり、あらたにコミットがあった場合は登録したメールアドレスに更新内容がすぐ届く。
プライベートなリポジトリがフリーで持てて、この機能であれば、十分使えると思います。
iPhoneアプリ雑記2
2009年6月1日アプリを作っているせいか、日常生活でもいろいろと考えます。
いろいろと作りたいものも出てきました。
前回のエントリに引っ張られるように音関連も作ってみたいですし、画像加工系のカメラも作ってみたい。
今回はそんなネタ。
- ウォーホールカメラ
- アンディ・ウォーホールみたいなエフェクトをつけてくれる。
ポートレート、ブツ撮り?見たいにエフェクト決めてからシャッター切る感じ。 - パーティクロック
- パーティクルが、文字の形を作る。
bit101の人が「dust」ってアプリを作ってて、ビジュアルはあれに近いけど、文字が集まってくる感じ。 - iDJ
- OS3.0から自分のiPodのライブラリにアクセスできるようになったみたいなので、自分のライブラリの曲を使ってDJができる。
もしくは、キー合わせとテンポ合わせと音量だけつけてMASHUPメーカーとか
でもそのまえに
自分ができることが少なすぎる。
パーティクルとかはやっぱOpenGLを使うってのが現実的、っていうかASでパーティクルも動かせない。ピクセル操作もできない。
音をやるにはまず音楽理論に明るくないといけない、と。
ひとまずは、ASでパーティクルやピクセル操作の勉強をして、それから作るっていうのが妥当かもしれない。
iPhoneアプリ作ってます。
2009年5月31日会社のプロジェクトでiPhoneアプリを開発することになりました。
少し前(前回の@自由が丘)の際にいじってみてはいたのですが、全然わからなかったのでスルー。
プロジェクトとしてスタートするし、ちゃんとやらないといけないということで、いろんな所からチュートリアルやtipsを見て作ってたけど、iPhoneSDKがかなり優秀。
特にinterfaceBuilderに関してはかなり感動。
ちょうどFlashでいうコンポーネントインスペクタを拡張した機能が備わっていて、サクサクとボタンなんかを配置して、コードとの結びつけができるのはかなりらくちん。
だと思っていたのですが、基本的にViewBaseのアプリしか作らないし、動的に生成することが多いので、あまり使わなくなりました。
interfaceBuilderが本領を発揮するのは、WindowBaseかな。
あと1ヶ月もすれば、会社のプロジェクトで制作したアプリ、個人アプリ双方ともリリース手続きを踏めるのではないかと。
あとは、先日、自宅のPC周りをかなり改善。
ルータを変えたことで、かなり劇的に変化して、いままで54Mbps安物のルータを使っていたのが300MBpsに変わるだけでもかなり快適。
Macには、ParallelsとWindowsXPをインストールし、Windowsに今まで使っていたCS3をインストール。これでやっと制作環境が整った。
あとはVersionsを購入し、Googleコードでホスティング。
このプロジェクトにiPhone、AS系のコードをコミットしていく予定。