Flex
Flex SDK 3.1.0をダウンロードすると、flexTasksなるAntタスクが添付されていたので、それを利用してのmxmlのコンパイルを試してみました。以下、手順のメモです。 1.flexTasks.jarをAntのライブラリに追加する。 Flex SDKのアーカイブを展開したディレクト…
mx.collections.ArrayCollectionを使うと配列の変更をイベントリスナーの仕組みで検知することができます。 コンストラクタでソースとなる配列を指定してArrayCollectionを作成し、 イベントリスナーを設定した上で、 ArrayCollectionのAPIを呼び出して配列…
今更ながらlog.asなるものを発見したので使ってみます。これを使うと、「log()」関数1発で、FlexからFireBugのコンソールにデータを出力することができます。1つのソースファイルだけでできていて、プロジェクトへの導入も簡単。 log.asのソースをコピーして…
FireBugのコンソールに行番号付きでswfで発生した例外のスタックトレースを表示する手順です。ポイントは以下。 デバック版Flash Playerでswfを実行。 →発生した例外からスタックトレースが取得できるようになります。 コンパイルオプションでデバッグをオン…
ActionScriptで長めの複数行文字列を作るのってメンドウですよね。Rubyみたいにヒアドキュメントとか使えればいいのにー。という時にXMLリテラルが使えます! // XMLリテラルをヒアドキュメント風に使う! XML.ignoreWhitespace = false;// デフォルトだとテキ…
mx:Script@source、またはincludeステートメントで、外部のスクリプトファイルを読み込みます。 mx:Script@sourceを使う。 mx:Scriptのsource属性で指定した外部スクリプトファイルを読み込み、その中のmain関数を実行します。MXML(include_sample.mxml):
YahooのUIコンポーネントライブラリ「ASTRA」を使って棒グラフを描いてみます。 ダウンロード Flex SDKでASTRAを使うために必要なモノは次の2つです。 ASTRA ASTRAのサイトからダウンロードします。 Flash CS3のコアクラス(fl.core.UIComponentなど)のソース…
Proxyを使うと、オブジェクトのメソッド呼び出しやプロパティへのアクセスをインターセプトする仕組みが作れます。 機能的にはJavaのProxyに近い感じです。 メソッド以外にも、属性へのアクセスや「for...in」「for...each in 」で属性を列挙された場合の動…
「RubyクラスをJSONでアクセスできるWebサービス化する」で作ったJSONBroker(任意のRubyクラスのAPIをJSON-RPCライクなプロトコルでアクセスできるWebサービスとして公開するための簡易ユーテイリティ)のActionScript版クライアントを書きました。前に作った…
ObjectUtil#toStringでオブジェクトの属性一覧を示す文字列を生成できます。 // オブジェクトの属性一覧を表示 var obj:Object = { a:10, b:"bbb", c:true, d:[1,2,3,4,5], e:{foo:"foo",hoge:"hoge"}, f:function():void{} }; stdout.text = ObjectUtil.toS…
ActionScript3の「for .. in」では、静的に定義したクラスのメソッド/フィールドは列挙されません。 クラスフィールド、インスタンスフィールドとも。 Dynamicクラスも静的に定義したメソッドやフィールドは列挙されません。 ただし、動的に追加した属性は列…
FlashとCanvas+JavaScriptのどっちが描画が早いか、四角を16*16*16=4096個描くスクリプトを書いて試してみました。 →Flashで描く →Canvas+JavaScriptで描く(ExplorerCanvasを設定済み。IEでも見れます。) ちゃんとは計ってないけど、何回かリロードして試し…
やっぱり、ちゃんと測ってみようかな。ということで、プログラム上で画像を描き終わるまで(=graphics.drawRectやctx.fillRectから復帰するまで)の処理時間を出力するようにしてみました。 →Flashで描く →Canvas+JavaScriptで描く(ExplorerCanvasを設定済み。…
FlexというかActionScriptで、HTTPでサイトに接続しデータを取得するサンプルです。クロスドメインまわりのことがまだ良くわかってないので、とりあえず同じサイトのデータを取得してます。 package { import flash.display.Sprite; import flash.text.*; im…
クリップボードの値を更新するサンプルです。System#setClipboard()でさくっと設定できます。 package { import flash.display.*; import flash.system.System; public class SetClipBoard extends Sprite { public function SetClipBoard(){ // クリップボ…
配列をソートするAPIとして、Array#sortとArray#sortOnが提供されています。 Array#sort 配列の要素をソートします。 引数で比較関数(第一引数)とオプション(第二引数)が指定できます。 比較関数を指定することで、任意のロジックに基づくソートが可能です。…
JavaScriptと一緒かと思ったら微妙に拡張されてますね! > ActionScriptの配列。ということで、便利そうなAPIを使うサンプルを書いてみました。使ってみたAPIは以下。 Array#forEach 配列の要素を順番に取り出します。forループの代わりに。 Array#map 配列の…
Sprite#startDrag()で簡単に実現できます。 Sprite#startDrag()でドラッグ開始、Sprite#stopDrag()でドラッグ終了です。それぞれ、マウスダウン、マウスアップとかに割り当てておけばOK。 2つめの引数でドラッグ可能な領域を指定することもできます。 packag…
tweenerはFlex/Flashで使えるトウィーンライブラリです。定期的にスプライトの属性を変更することで、 スプライトの移動 スプライトの透明化 といったアニメーションがさくっと作成できます。 インストール tweenerのサイトからダウンロードします。Flexで使…
Sprite#hitAreaで、スプライトのあたり判定で使う領域を指定できます。 領域は別のスプライトで指定します。 hitAreaとしたスプライトは非表示でもOK package { import flash.display.*; import flash.events.MouseEvent; import flash.text.*; // 別のスプ…
Papervision3Dでは、org.papervision3d.objects.primitivesパッケージ以下に、立方体とか球といった基本的なオブジェクトが用意されています。どんなのがあるのかな、ということで、primitivesパッケージ以下のオブジェクトを並べてみました。 動いていると…
キーイベントを拾ってカメラを動かすサンプルを書いてみました。→キーイベントを拾ってカメラを動かすサンプル ←→キーで旋回、 ↑↓キーで前後に移動します。 動きがわかるように空間には点をちりばめています。(ParticleFieldを利用) はまりポイントは以下か…
Flex SDK + Papervision3Dで、ワイヤーフレームの球を描いて 回転させるまでのチュートリアルです。Flex SDK 4 + Papervision3D 2.1の組み合わせで試してみましたが、特に問題なくビルドできましたよと。お手軽にFlash 3Dで遊べます。 サマリ Flex SDKのダウ…
DisplayObject#maskを使うとスプライトを切り抜くことができますが、複数のスプライトを同じ形状で切り抜きたい場合、スプライトごとにマスク用スプライトを用意する必要があります。 複数のスプライトのmaskとして同一のスプライトを設定した場合、後に設定…
tweenerではtransitionプロパティを指定することで属性値の変化量を制御することができます。値を線形に変化させるLiner以外にも、組み込みでさまざまなTransitionが利用可能です。 ということで、各種Transitionの動作サンプルを作ってみました。 →各種Tran…
Sprite#maskを使って、スプライトを切り抜く(スプライトの特定範囲のみ表示する)ことができます。Sprite#mask属性値として任意のDisplayObjectを設定すればOK。 package { import mx.utils.*; import flash.display.*; import flash.text.*; import flash.ex…
FlexからJavaScript関数を呼び出す場合と同様、ExternalInterfaceを使います。 呼び出される側のswf : package { import mx.utils.*; import flash.display.*; import flash.text.*; import flash.external.*; // JavaScriptからのメソッド呼び出しを受け付…
Timerを使って定期的に処理を実行するサンプルです。Timerの基本的な使い方は次の通り。 引数で「次の呼び出しまでの待ち時間(ミリ秒)」と「実行回数」を指定してTimerを作成します。 「実行回数」を0にすると無限に実行されます。 「addEventListener」で定…
MouseEvent.MOUSE_OVERのイベントハンドラを設定するだけ。 Graphicsを使って書いた円や線もうまいこと当たり判定してくれます。 Filterを利用して作成した影には反応しないようだ。 package { import flash.display.*; import flash.filters.*; import flas…
ObjectProxyを使うとオブジェクトの属性変更を監視する仕組みがさくっと作れます。使い方は以下の通り。 監視するオブジェクトを作成。 作成したオブジェクトを引数として、ObjectProxyを作成してラップ。 「addEventListener()」でObjectProxyに属性変更リ…