ActionScript

papervision 3D を始めてみたでござるの巻

何となく三次元にうつつを抜かしてみたり。ActionScript で動かせる 3D 系のライブラリを探していたのですが、最初にいじった away3D というライブラリはドキュメントが少なく理解がいまいち進みませんでした。 そこでちゅう君に教わったのが Papervision3D …

よく使う Sprite の小ネタ

スプライトの子オブジェクトをすべて取り除く public function removeChildren():void { while(this.numChildren > 0) { this.removeChildAt(0); } }while はあまり使わない方ですが、こういう場合簡単に書けてナイス。 上に子が乗ったスプライトで親エリア…

ステージからみた座標

あるオブジェクトからみた座標、つまり相対座標を得る場合。 private var sp:Sprite = new Sprite(); addChild(sp); trace(sp.getBounds(this));getBounds メソッドの引数になっているオブジェクトを基準として、そこからの座標情報等を Rectangle のインス…

is 演算子はインターフェイスにも有効

あるインスタンスが特定のクラス(または、そのサブクラス)かどうかを判定するには is 演算子を使います。このとき、インターフェイスを実装したクラスでは、そのインターフェイスも比較対象に指定できます。以下、サンプル。次のようなクラスを考えます。 …

ActionScript3 に抽象クラスが存在しない件

タイトルの通り、ないものはないので何とかしようと頑張ってみたのですが… package { import flash.display.Sprite; public class Sample extends Sprite { public function Sample() { super(); if(this.className == "Sample") { throw new Error(this.cla…

FLV プレイヤーを書いてみた

_人人人人人人人人人人人人人人人人人人人人_ > あんたたち!サンプルよ!サンプルよ!!! <  ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄ _,,,, --──-- ,,,__ , '´ __ `ヽ、,ヘ .くヽ_r'_ヽ 、 ,、_) ヽ ,______r'´イ´ ['、イ_,-イ…

flash.net.NetStream の onPlayStatus がうまく動かない

まずはこのコードを見てくれ、こいつをどう思う? private var param:Object; private var stream:NetStream; // 中略 stream.client = this; public function onMetaData(param:Object) { this.param = param; } public function onPlayStatus(info:Object)…

ContextMenu のラベル

右クリックや Ctrl + クリックで出現するメニューが ContextMenu です。 Flash では ActionScript を使ってこれを変更できますが、以下のような値はラベルにできません。 Save Zoom In Zoom Out 100% Show All Quality Play Loop Rewind Forward Back Movie …

Vista における信頼されたローカル swf

Vista の場合のユーザ別 cfg ファイル格納位置。 C:\Documents and Settings\hoge\AppData\Roaming\Macromedia\Flash Player\#Security\FlashPlayerTrust以上、 AppData は隠しディレクトリなので注意。XP などの場合 Roaming というディレクトリを挟まない…

FlashPlayer のバグ?仕様?

ActionScript を使った開発を行う時には、デバッグしやすいスタンドアロンのプレイヤーを利用しています。ダウンロードは下のアドレスから。スタックトレースはじめ、何だかんだ言って便利です。http://www.adobe.com/support/flashplayer/downloads.htmlさ…

矩形と矩形の衝突

矩形同士の衝突判定には Rectangle.intersects メソッドを使います。 var a:Rectangle = new Rectangle(0, 0, 100, 100); var b:Rectangle = new Rectangle(0, 0, 100, 100); trace(a.intersects(b)); // => true // 逆にしても同じ trace(b.intersects(a));…

onMetaData の使い方

NetStream から FLV などを扱うときに、全体の再生時間が知りたい事は良くあります。しかし NetStream から総バイト数は取得できても、直接秒数を取得できるプロパティは存在しません。 この場合 onMetaData というイベントを使って FLV 自体からメタデータ…

フォーカス設定を扱う

ActionScript の Event クラスからフォーカスを扱うには FocusEvent クラスを利用します。しかし、このイベントは実装されていないクラスも多く、すぐに使う事は難しいケースも存在します。 そこで、このイベントが実装されていないコンポーネントにフォーカ…

カスタムコンポーネントと呼び出し元の名前の関係

例えば、以下のような配置を考えます。 ┬Test.mxml └jp─ne─sakura─hl2─Text.asこの時 Text.mxml で以下のように記述します。 <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" initialize="init()"> <mx:Script> </mx:script></mx:application>

RubyAMF で関連を扱う

RubyAMF の続き、今度は関連を扱います。一対多と多対多のケースについて。 ここを読む前に、以前の記事を参照してとりあえず RubyAMF を動かしてみることをオススメします。 一対多のサンプル 以下のようなモデルと関連を考えます。ユーザ登録画面のユーザ…

とりあえず動く RubyAMF

RubyAMF とは Flash と Rails の間でオブジェクトの相互変換を行ってくれるプラグイン。 サンプルでは Hello World の送信をしているくらいのものしかなかったので、モデルの情報を Flash 側から入力して Rails で受け取るまでの最小限のサンプルコード。例…

右クリックメニューを変更する

Windows の右クリック(Mac では Ctrl + クリック)で表示されるメニューを変更するには ContextMenu クラスを用います。 API サンプルソース とりあえず最低限のソースを貼り付け。ここではメニュー選択時(例えば、『コピー』というメニューをクリックした…

ActionScript3 で扱える mp3 の形式

320kbps の mp3 をライブラリに読み込もうとしたらエラーになってしまい、なぜかと思ったら制限があったようです。読み込み可能な形式は以下のとおり。 固定ビットレート 44.1/22.05/11.025kHz のサンプリングレート 8/16/20/24/32/48/56/64/80/112/128/160k…

その this は何なのか?

Tweener という便利なライブラリを使って Tween アニメーションを作っていたところ、エラーは起こらないのに動作がおかしい箇所を発見しました。 該当する箇所の共通点を探してみたところ、以下のような条件があてはまりました。 イベントリスナーの登録時に…

ActionScript3 の Event 関連

ActionScript ではさまざまな条件をイベントとして扱う事ができます。初期状態でライブラリに存在するイベントだけでもマウスのクリックやキーボードのあるボタンが押されたかどうかなど、一通りの操作を行う事ができます。 が、例によって使い方に癖がある…

ActionScript3 の Sound 関連

ActionScript3 で Sound クラスを扱う際のまとめ。癖があるので、少し使いにくいです。 Sound クラスの初期化 まず Sound クラスの利用方法から。オブジェクトとして Sound を使うには、外部のファイルをロードするかリンケージを利用してライブラリに登録し…

LocalConnection の使い方

外部の SWF を読み込んで操作したいとき、 LocalConnection を使います。API がちょっと分かりにくかったので、軽くまとめておきます。 呼び出し側 まず、呼び出す側の定義から。サンプルコードで示します。 // Sender.as package { import flash.net.LocalC…

渡す値とその返り値

ActionScript3 で、明らかに正しいはずのコードが動かなくて困ったのでメモ。 きっかけは TextFormat テキストの見た目を整える場合、 TextFormat を使います。このとき、以下のようなコードを考えます。 var myTextFormat:TextFormat = new TextFormat(); m…

リンケージで外部 swf からクラスを呼び出し

必要に迫られて、方法を調べてみました。 以下、 ActionScript3/Flash CS3 で検証しています。 Step1. ActionScript でクラスを定義する まず、呼び出し元のクラスを作成します。 ここでは、以下のような MyTree クラスを MyTree.as 内で定義しました。 pack…

XML と XMLList

XML の形式は正しいはずなのにパースエラーになる場合、 XML と XMLList の違いを考慮する必要があるかもしれません。 XML ルートノードの直下に並列した属性が存在しない場合、こちらを使います。具体的には、以下のような XML の場合は XML にキャストでき…

複数ファイルのローダ

ファイルひとつをロードする場合、 Loader クラスの COMPLETE イベントで簡単にロード完了を待つ事ができます。 ですが、複数のファイルをロードしたい場合、それだけではうまくいきません。 以下、私が考えた方法を記述。 コード package { import flash.di…