Tag { flash } 一覧

[haXe][js] “Flasher だけど js 案件増えてきたなー” みたいな人は haXe かじってみてもいいんじゃね?

Category:{ haXe, javascript }  Tag:{, , , } Comments:{ No Comments }
Posted:{ 2012.01.19 03:26:23 }

最近ちょくちょく haXeで js を試しているのでメモ。
※haXeは、エックス(とかヘックス)とか呼ばれてる。

そもそも haXe って?

haXe ってなに?って人のためにざっくり説明。
haXe は1言語で、Flash (AS2/AS3) 、 js 、PHP、C++、NekoVM、にかきだせる言語。(.hxファイルをコンパイラオブションで出し分ける)
haXe – haXe の紹介

記述は AS3 とか JAVA に似ていて、サーバー側もクライアント側も1言語でかけるってのが、特にメリット(かな?)。
※「1言語」ってのは「ワンソース」と同義ではないです。念のため。

特に、 haXe に興味を持った個人的理由は下記。
・(私自身が) オブジェクト指向 (AS3 or JAVA) に慣れている。
・ js に慣れていない。
・ js を仕事で書くことになった。
・ js でも AS3 みたいに継承とか書きたい。(prototype ふぁっこふ)
・ js は、コンパイルチェック(や型チェック)がないからデバッグがめんどい。
・いつも使ってる FDT が haXe の開発に対応している。(FlashDevelopも対応しているとのこと)

これはやってみるしかない(・∀・)

という感じ。

このご時世で「Flasherだけど js 案件増えてきたなー」みたいな人は、 haXe かじってみるのはあり?かもしれない。
「すべての道はインタラクションデザインに通ず」。

開発環境の準備

とりあえず無料で整う。

Mac なら FDT5 Free
Win でも FDT5 Free or FlashDevelop
※ほかにもあるのかな?

それぞれのIDEのhaXeチュートリアルをみればいいんじゃないかな。

FDT での haXe js プロジェクトチュートリアル動画は下記。
[1] haXe in action, check out a sample haXe project in FDT 5
[2] Complex HaXe example

ということで、以下、 js を書きだすメモ
(とくに js に限ったものではないメモも混じっています)

(続きを読む…)

[AS3] モーダルな ErrorDialog (エラーダイアログ) クラスを作成しました。

Category:{ actionscript, flash }  Tag:{, } Comments:{ 1 Comment }
Posted:{ 2011.04.21 04:09:47 }

モーダルな ErrorDialog というクラスを作りましたので公開します。

以下、特徴など説明です。

どの階層で addChild しても必ず stage 最前面に表示

そもそもモーダルダイアログとは、
そのダイアログを閉じるまで、他の操作をできなくするタイプのウィンドウの事です。
( Photoshop で言うフィルタのウィンドウみたいな物ですね)

この ErrorDialog クラスは、手軽にそれを実装するため、
どんな階層でも、addChilde するだけで、必ず stage の最前面 (&中央) に表示されるようになっています。

 import jp.itoz.display.window.ErrorDialog;
 
//どんな深い階層でaddChildしてもOK!
var errorDialog:ErrorDialog = new ErrorDialog("タイトル","メッセージ",new Error());
addChild(errorDialog);
 
stage.addChilde(hoge);//←以降こんな事しても問題なし

複数addChildしても、addChildされた順番通り表示

「必ず最前面に表示される」ということは、
複数addChildしたらどうなるの?
と思った方もいるかも知れません。

そこはご安心を!

例えば下記のように意図的に3回エラーを起こして、addChildしてみます。

 
    var arr : Array;
    for (var i : int = 0; i < 3; i++) {
        try {
            arr.push(i);//newArray()していないのでエラーが起きる。
        } catch(error : Error) {
            //第三引数にはError継承クラスを渡せる
            var errorDialog : ErrorDialog = new ErrorDialog("Error"+ (i+1)+" 回目" , "Error message.", error);
           addChild(errorDialog);
        }
    }

結果はこのような動作になります。

[SWF] ErrorDialogSample.swf

ちゃんと順番よく表示されたと思います。

例えば、下層の様々なエラーの起きそうな場所に、(try catchとかで) このクラスを記述しておくことで、エラーが起こった順番通りに表示してくれます。

デザイン変更もサクっと出来る

1. サイズ、マージン変更はコンストラクタで変更

第4引数 以降に、幅、高さ、マージンを設定できます。

 
//幅と高さ300 マージン20にする
var errorDialog:ErrorDialog = new ErrorDialog("サイズ変更","サイズを変更しました",new Error(),300,300,20);
addChild(errorDialog);

[SWF] ErrorDialogSizeChangeSample.swf

ある程度自動でレイアウトされる様になっています。

が、微調整したい場合は、addChild 後に変更してください。
( ※ addChild 時に自動レイアウトされるため )

 
//位置微調整の例
addChild(errorDialog);
errorDialog.titleTextField.y+=10;
errorDialog.closeButton.y -=5;

2. 背面パネル、クローズボタン、テキストフォーマットは、プロパティで変更

 
// 背面パネル変更 
// ※これを変更すると、コンストラクタで設定したサイズが無効化され
//渡されたDisplayObjectContainerを元にレイアウトされます。
 
errorDialog.background =  [任意のDisplayObjectContainer]
 
//クローズボタン変更
//※CLICKイベントは自動的に付加されます。
 
errorDialog.closeButton = [任意のInteractiveObject]
 
//テキストフォーマット変更
 
errorDialog.titleTextFormat = newTextFormat(null,20,0xcc0000,true);
 
errorDialog.messageTextFormat  = newTextFormat(null,15,0x00cc00);
 
errorDialog.errorTextFormat = newTextFormat(null,20,0x0000cc);

以上、簡単に変更できます!

ざっとまとめると例えばこんな感じ。

 
//背面パネル用スプライト
var bg : Sprite = newSprite();
bg.graphics.beginFill(0xc6d5cd);
bg.graphics.drawRect(-200, -75, 400, 150);
bg.graphics.endFill();
 
var errorDialog : ErrorDialog = new ErrorDialog("デザインカスタマイズ", "デザイン変更しました", new Error(), 300, 300, 5);
errorDialog.background = bg;//※コンストラクタで指定したサイズ無効になる
errorDialog.closeButton = new PushButton(null, 0, 0, "pushbutton");//Minimalcompのプッシュボタン
errorDialog.titleTextFormat = new TextFormat(null, 20, 0xcc0000,null,null,null,null,null,TextFormatAlign.CENTER);
addChild(errorDialog);
errorDialog.titleTextField.y += 10;
errorDialog.closeButton.y -= 5;

上記をパブリッシュすると、

[SWF] ErrorDialogCustomizeSample.swf

と、如何様にでも出来ます。

フェードイン、フェードアウト演出を変更したい

この場合、 AbstractErrorDialog の継承クラスを作成します。
( ※ ErrorDialog クラスもこの継承です )

サンプルとして OrigineErrorDialog クラスを作成しました。

[SWF] OriginErrorDialogSample.swf
[AS] OriginErrorDialogSample.as

継承ポイントは下記です

・初期表示状態はsetLayout()内で定義。(これがaddChild時に呼ばれる)
・open()をoverrideしフェードイン演出を実装
・フェードイン完了時、openComplete()を必ず呼ぶ
・close()をoverrideしフェードアウト演出を実装
・フェードアウト完了時、closeComplete()を必ず呼ぶ

また、背景パネルやクローズボタンも当然ここで変えられます。

背景パネルは、createBackground() 内で作成し、return するだけ。
同じくクローズボタンは、createCloseButton() 内で作成しreturn するだけ。

です。

背面全体を覆っているカバーを変更したい

これも簡単。

 
errorDialog.cover= [任意のDisplayObjectContainer];

で変更でき、自動で拡縮し画面全体を覆います。
ただ注意点として、複数ダイアログでcoverを変更しても、
全て最後に設定されたものになってしまいます。

ダウンロード

Github にアップしました。

※要Tweener

その他

今後こんな機能も追加したい

・複数表示される場合、キャンセルできる。
・マージンは上下左右別々に設定できる。
・非表示切り替え。(リリースビルドなどの時用)
・メッセージテキストフィールドにスクロールバーを付ける

修正履歴

-2011.4.24 複数同時addChild時、2番目以降の表示オブジェクト位置を調整しても反映されないバグを修正しました。
-2011.4.24 クローズボタンにオーバーを追加しました。

※2011.4.24 teraco – 東京てら子Vol.15 『Error Handling&Security』の回で発表しました。

以上、バグ発見されましたら教えていただけるとありがたいです。

では!

「Flashの演出」に困ったらここから盗め!

Category:{ flash }  Tag:{, , , , } Comments:{ No Comments }
Posted:{ 2011.03.21 04:02:55 }

Flashの演出を考える時に困ったら、よく参考にしている物を紹介します。
演出のヒントがたくさん転がっています。

MarkColeran

映画等に出てくるコンピューター画面のUIをデザインしている、
MarkColeran氏のポートフォリオ映像、2本。

これらは、言ってしまえば所謂「インタラクション」では無く「映像」として作られていて、実際このようなUIがあったら本当に使いやすいかどうか?は分かりません。

が、しかし、このような映像で一番重要なのは、使いやすさでは無く、
「一瞬しか映らないコンピュータ画面で、どんな処理が行われているか直感的に視聴者に伝わる事」
なはずです。
彼のモーションデザインを見ると「今、顔認証したな」とか「指紋を解析してるな」とか「敵が建物に侵入してきたな」とか、そういう事が一瞬で理解できるのです。

Microsoft Sustainability

Microsoft が予想するテクノロジーと未来をテーマにしたムービー。

人々の行動に寄り添って、自ら意志を持っているように振舞うUI。

これも MarkColeran 氏と同じく使い安さではなく「直感的なデータのビジュアライジング」という点で、演出の参考になります。

※数年前初めてこの映像を見た時は「スゴイ未来だ!」と思ったのですが、iPadやらタッチデバイスが勃興してきた今、そんな遠い未来でもない感じがするのはなんだか凄いです。

ということで、以上。
他にもこんな映像があったら是非教えてください。m(__)m

ではよいFlash演出ライフを!

補足

※当エントリは東京てら子Vol.13 『Flashでの演出&落とし込み方』で発表した内容の抜粋&加筆です。

[FDT4] Progression(4.0.22) プロジェクトテンプレート

Category:{ FDT, Progression }  Tag:{, , } Comments:{ No Comments }
Posted:{ 2010.11.05 09:53:52 }

FDT用 の プログレッション(4.0.22) プロジェクトテンプレートを作成し、スパークにコミットしたので、fdt.jpに利用方法などのエントリを書きました。

fdt.jp » Progression(4.0.22)用プロジェクトテンプレート

デフォルトで Compiler Argument が設定されているので設定後すぐに、デバッグビルドが出来るようになっています。

当サイトにアップしてある過去のバーションは取り急ぎそのままにしておきますが、今後Updateはsparkの方で行っていこうと思います。

[Flash Builder] “Burrito” の QuickFixを試してみた

Category:{ FDT }  Tag:{, , , } Comments:{ No Comments }
Posted:{ 2010.10.26 05:13:00 }

FDTでおなじみの機能 Quick Fix が Flash Builder “Burrito”(以下FB) でも搭載されたと言うことで、昨日公開されたプレビュー版を使用してみました。

Adobe Labs – Adobe Flash Builder "Burrito"
下部の[Download Flash Builder "Burrito"]リンクからダウンロード。

結論からいうと今のところ FDT の QuickFix の方がまだ便利かな?という印象。

1. FDTの場合は [cmd+1]で次々と対象を移動してQuickFixしてくれますが、
FBの場合は選択中の行に対象が無いとQuickFix出来ません。
(FBにはリアルタイムエラー検知が無いから?かな)

2. 例えば hoge.fuga() で、fuga()メソッドが存在しない場合、
FDTだとQuickFixで対象クラスにfugaメソッドを作成できますが、FBだと出来ません。

FDT の QuickFix よりいい点としては、
1. ローカル変数 を メンバー変数 に変換できる
2. 変数のリネーム、ファイルのリファクタリングが出来る
と言ったところでした。

その他、違いがあるかもですが、追って調査中でっす。

[AS3][FDT] 意外と使えるAS3のFDTテンプレート10個

Category:{ actionscript, FDT, flash }  Tag:{, , , } Comments:{ No Comments }
Posted:{ 2010.08.06 09:32:03 }

よく使っている、AS3のFDTテンプレート10個です。

importや宣言って結局書かなきゃいけないから使うのメンドイよね?」と思ったあなた!
QuickFixで処理すればザクザクっと瞬殺で実装できまっすよ。(・∀・)

[1] 簡易スプライト作成

「あれっ?表示されるはずのMCが表示されない!?」なんて時に、その中にサクっと作って確認したり。

1
2
3
4
${name} = addChild(new Sprite()) as Sprite;
${name}.graphics.beginFill(0xcc0000);
${name}.graphics.drawRect(0,0,100,100);
${name}.graphics.endFill();

[2] 簡易テキストフィールド作成

何かとよく使います。

1
2
var ${_tf}:TextField = addChild(new TextField( )) as TextField;
${_tf}.text = "${cursor}";

[3] 簡易グラデーションボックス作成

背景にサクっと敷いたりする時に。

1
2
3
4
5
6
7
8
9
var gradType:String = GradientType.LINEAR;
var gradColors:Array = [ ${0xffffff} , ${0x0} ];
var gradAlphas:Array = [ 1, 1 ];
var gradRadios:Array = [ 0, 255 ];
var gradMrx:Matrix = new Matrix( );
gradMrx.createGradientBox( ${800},  ${600} , Math.PI/2, 0,0);
var gradSpread:String = SpreadMethod.PAD;
${this}.graphics.beginGradientFill( gradType , gradColors ,  gradAlphas , gradRadios , gradMrx ,gradSpread);
${this}.graphics.drawRect( 0 , 0, ${800}, ${600} );

[4] 配列を作る(要素番号指定で)

ループで作成できない配列作る時ってメンドいですよね。
下記だと、name とvalueの値が一気に指定できて便利。とりあえず10個

1
2
3
4
5
6
7
8
9
10
11
var ${name} : Array= new Array();
${name}[0]=${value};
${name}[1]=${value};
${name}[2]=${value};
${name}[3]=${value};
${name}[4]=${value};
${name}[5]=${value};
${name}[6]=${value};
${name}[7]=${value};
${name}[8]=${value};
${name}[9]=${value};

[5] 簡易ローダー作成

LoaderContext(true)にしているので、wonderflなんか用にサクっと使っています

1
2
3
${loader}= new Loader();
${loader}.contentLoaderInfo.addEventListener(Event.COMPLETE, loadCompleteHandler);
${loader}.load(new URLRequest("${cursor}"), new LoaderContext(true));

[6] ラジアン、角度、変換公式

覚えろって話ですが( ´д`; )、いつも忘れるので。

1
2
3
//radian<->angle
//var rad = angle *(Math.PI/180)
//var angle = rad * 180 / Math.PI;

[7] FlashVersを列挙する

デバッグ時などに何かと使えます。

1
2
3
4
var vars:Object = loaderInfo.parameters;
for (var i:String in vars) {
    _txt.appendText(i + "=" + vars[i] + "\n");
}

[8] プレイヤーのバージョンとタイプをトレース。

同じくデバッグ時などに何かと使えます。

1
2
3
4
trace( "************************************" );
trace( "[Player Version] " + Capabilities.version );
trace( "[Player Type]    " + Capabilities.playerType );
trace( "************************************" );

[9] Loggerテンプレート

@cellfusioinが作成したLoggerクラスを使用するためのテンプレート。
sosMaxと組み合わせると強力なログ出力環境が整います。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// @see http://github.com/cellfusion/Logger
Logger.initialize(Logger.LEVEL_FATAL);
//Logger.initialize(Logger.NONE);
 
Logger.trace(${cursor});
 
Logger.debug(${cursor});
 
Logger.info(${cursor});
 
Logger.warning(${cursor});
 
Logger.error(${cursor});
 
Logger.fatal(${cursor});

[10] コンパイルオプションで一部のコードを無視させる。

詳細はこちらの記事を御覧ください。
FDTでコンパイル時に一部のコードを無視させる

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 //-define=CONFIG::Debug,true
//-define+=CONFIG::Release,false
/*FDT_IGNORE*/
CONFIG::Debug
{
/*FDT_IGNORE*/
		trace( 'Debug' );
/*FDT_IGNORE*/
}
CONFIG::Release
{
/*FDT_IGNORE*/
		trace( 'Release' );
/*FDT_IGNORE*/
}
/*FDT_IGNORE*/

上記10個セットをダウンロード

動作確認環境 [FDT4 M3 / MacOS10.5]

東京てらこ6「SWF最適化・制作効率アップ術」で発表した内容

Category:{ FDT }  Tag:{, , , , } Comments:{ No Comments }
Posted:{ 2010.07.29 08:41:52 }

2010.7.18 に東京てらこ6「SWF最適化・制作効率アップ術」で発表した内容です。

発表した内容

FDTでANTを使用し、操作一発
1. swfコンパイル
2. FTPアップロード
3. Firefoxでリロード表示”
する方法。
ついでにFirefoxで再生されたswfのトレースもFDT内で確認しちゃう

サンプルデータ

利用方法

詳細はREADMEファイルを御覧ください。
また、このエントリを元に発表しましたのでご参考下さい。

そもそもANTを使用するメリット

自動化によるヒューマンエラーの防止。に尽きるかと思います。
ANTは設定するまでがちょっとメンドく、シンプルなプロジェクトであれば、作成するまでもないかもしれません。
が、少し複雑なプロジェクト構成なら設定する価値があります。

例えばカスタムクラスAを継承した、ドキュメントクラスB,C,D,Eがあったとして、Aを修正しB,C,D,Eから全てswfを書き出し直し、アップしなおし、クライアント確認に出す。等の場合。
これを使用することでミスが起こりにくくなります。
プロジェクトも後半になると、頻繁にこういった作業を行うかと思いますので、最初に作成しておくと、後々楽だったりします。

その他

元エントリにプラスアルファされている内容

<fdt.startDebugger>タスクを利用し、FireFoxで再生されたswfのトレースを、そのままFDTで確認出来るようにしています。

ANTの実行にショートカットを割り当てる!

僕の場合、環境設定 > General > Keysで”Run Last Launched External Toool”に「Command+Shift+Return」を割り当てています。
これにより操作一発で全てを実行できますし、ローカル確認、サーバー確認の切り替えが容易になります。

[FLARToolkit] マーカーに「蝶」がとまる。 (Butterfly Animation)

Category:{ FLARToolkit, Wonderfl }  Tag:{, , , , , , } Comments:{ No Comments }
Posted:{ 2010.04.12 04:54:35 }

マーカー位置に「蝶」がとまるFLARToolkitサンプルを作ってみた。

認識中はマーカーにとまり、非認識の時は飛び回ります。
また、認識中極端にマーカー位置が動くと一端飛び上がりまたマーカー位置にとまります。

TODO:
蝶のアニメーションをもっと自然にしたい。(とまる瞬間の動きとか)
アニメーション部分のコードがぐちゃぐちゃなので、のちのち直す。

(続きを読む…)

Wonderflに投稿したFLARToolkitサンプル幾つか

Category:{ FLARToolkit, Wonderfl }  Tag:{, , , , } Comments:{ No Comments }
Posted:{ 2010.04.11 04:44:10 }

2値化された解析画像を表示確認

FLARToolkitはカメラからの入力画像を、2値化(白と黒の2階調化)に変換し、
マーカー位置の解析用画像としているのですが、その2値化画像を表示確認するサンプルです。

非認識時は、2値化画像上でも視覚的にマーカーが欠けていたり、潰れていたりするので、
非認識の原因がわかりやすく、マーカーが認識する位置や角度を探りやすいと思います。

閾値の値をスライダーにより調整

そして、2値化するための「閾値」をスライダで調整できるサンプルが下記。
※ここで言う閾値とは「どの明度を堺に白と黒にわけるか?」という堺になる基準値のこと。

WEBコンテンツとしてのARは、どんな光源環境で再生されるか全く想定ができません。
なので、こういう閾値調整機能をUIデザインとして入れ込んで、
ユーザー側に調整してもらう手法もアリなんじゃないか?という提案。

そうすることにより、
(1)非認識時に、なぜ認識しないのかという納得感をユーザーに与えられる。
 (自分の光源環境が悪いという事を気づかせられる)
(2)そして認識率を調整できることにより、ストレス無いAR体験ができる。
 (コンテンツへのクレームも減る?)
のではないでしょうか。

※前提としてユーザーに、「2値化画像上でマーカーが認識できてないとダメ」という事を
把握してもらう事と、スライダをわざわざ操作させるというハードルがありますが、
それはデザイン等で解決すればよいと思う。

2010.4.11現在、wonderfl のFLARToolkitライブラリはver1.0.0なので、
2値化された画像はマルチマーカー利用時しか表示できません。
シングルマーカー時でも表示したい場合は、sparkに上がっているv2.5系を利用すると良いそうです。

wonderflでFLARToolkitサンプル

Category:{ actionscript, FLARToolkit, flash, Wonderfl }  Tag:{, , , , , } Comments:{ No Comments }
Posted:{ 2010.04.08 02:19:30 }

WondreflでFLARToolkit(1.0系)が動くようになったので、
3Dモデルがマーカー位置にイージング移動するサンプルを作ってみた。

マーカーはこちらにアップしました。
プリントして、ウェブカメラにかざしてくださいな。

ただイージングさせたいなら、わざわざ
@rokubouさんのコードをFORKしなくてもよかったけど、
まぁいいか。

@tarotarorg さんが早くも
マルチマーカーサンプルも上げてますね。(シゴトガハヤイ!)
http://blog.tarotaro.org/archives/718


レンタルサーバー豆知識