Flash

Flash ゲーム用のスコアランキングライブラリを作りました

Flash ゲーム用のシンプルなスコアランキングライブラリを書きました。先日作った「さめがめ」でも使っています。 ダウンロード パッケージを GitHub のリポジトリからダウンロードしてください。 確認済みの動作環境 PHP 5.3 MySQL 5.1 PHP のバージョンは …

neocomplcache 導入時に ActionScript の補完がすべて小文字になってしまう

actionscript.vim と neocomplcache を同時に導入すると、キーワード補完が全て小文字になる不具合が発生します。 これは actionscript.vim 内に書かれている、 syn case ignore この一文が問題のようです (neocomplcache の Wiki より)。 使いづらいので修…

「さめがめ」の Flash ゲームを作りました

「さめがめ」の Flash ゲームを作りました。暇つぶしにどうぞ。 ルール 2 つ以上つながっているブロックを消せる つながっている数が多いほど得点が高い 消せなくなった時点で残っているブロックが少ないとボーナス得点が入る スクリーンショット フォントは…

選択されたアイテムのリンケージを解除する JSFL コマンド

ライブラリ内の選択されたアイテムのリンケージを解除する JSFL コマンド。 Commands/ReleaseLinkage.jsfl at master from tanabe's JSFL - GitHub (function (document) { var library = document.library; var selectedItems = library.getSelectedItems()…

相対パスを絶対パスに変換するクラスを書きました

相対パスを絶対パスに変換する ActionScript クラスを書きました。 tanabe's PathResolver at master - GitHub 基本的な使い方 PathResolver.getAbsolutePath メソッドの第 1 引数にベースとなるパス、第 2 引数にベースとなるパスからの相対パスを指定しま…

Flash の trace ログを出力する AIR アプリケーションを作った

Flash の trace ログを表示するツール「Trace Rabbit」の AIR 版を作りました。 ダウンロード (version 0.1) TraceRabbit.air セットアップ方法 Flash Debug Player がログを出力するように設定します。mm.cfg ファイルが存在しなければ、下記の場所に作成し…

Flash Player のバージョンを切り替えるアプリケーションを作った

Flash Player を切り替えるアプリケーション「Switch Rabbit」を作りました。タスクトレイに常駐し、メニューから IE (ActiveX) または Firefox の Flash Player のバージョンを切り替えることができます。 ダウンロード (version 0.3) Windows 版インストー…

画像を切り抜くだけのサービス crppr を作った

画像をクロップ (切り抜き) するだけのサービス crppr を作りました。是非、ご活用ください。 使い方 極力操作がシンプルになるように心がけました。 青いボタンを押して画像を選ぶ。 画像の上でマウスをドラッグして四角を書く。 緑のボタンを押して切り抜…

Flex SDK 3 と Flex SDK 4 ではフォントの埋め込み方法が若干異なる

Flex SDK 3 と Flex SDK 4 で、フォント埋め込みのための Embed メタデータタグの記述が若干異なるようです。 下記のコードは Flex SDK 3 では正しく動作しますが、Flex SDK 4 では上手くいきません。 [Embed(source="hoge.ttf", fontName="hoge")] Flex SDK…

電卓を起動する AIR 2.0 アプリを作ってみた

"電卓を起動する AIR 2.0 アプリ" ができるまでのメモ。 0. 開発環境 Windows XP FlashDevelop 3.0.6 RTM (C:/FlashDevelop) Flex 3 SDK (C:/flex_sdk_3) 1. AIR 2.0 Beta 2の SDK を入れる Adobe Labs からダウンロード。ランタイムも忘れずに。 zip を解凍…

ヒアドキュメントもどきを使って ActionScript 内に JavaScript を書く

AS3 では XML を使って、ヒアドキュメントもどきを実現できる。 ヒアドキュメントもどきを使えば、JavaScript を読みやすい形で ActionScript 内に書くことができる。 var script:String = <script type="text/javascript"> "; } document.getElementBy…

文字列を 1 文字づつの配列にする

文字列を 1 文字づつの配列にする方法。 var s:String = "hogehoge"; var splitted:Array = s.match(/./g); //h,o,g,e,h,o,g,e

Flash/ActionScript リファクタリング #2 for ループを for each ループに置き換える

#2 for ループを for each ループに置き換える インデックスが不要ならば、for ループの代わりに for each ループを使用する。 for (var i:uint = 0; i < array.length; i++) { ... } ↓ for each (var item:Hoge in array) { ... }

Flash/ActionScript リファクタリング #1 フレーム番号をラベルに置き換える

Flash/ActionScript のリファクタリングネタをシリーズで始めます。 #1 フレーム番号をラベルに置き換える gotoAndStop や gotoAndPlay の引数はラベルで指定したほうがよい。フレーム数で指定すると、アニメーションの尺に依存してしまう。 movieClip.gotoA…

ラベル名からフレームの番号を得る

FrameLabel クラスの存在を知った。MovieClip の currentLabels プロパティで配列として取得できる。 currentLabel プロパティも FrameLabel を返せばいいのに、ラベル名の String が返ってくる。 ラベル名からフレームの番号を得る function labelNameToFra…

パッケージ名を取得する

パッケージ名を取得する方法。 package foo.bar.baz { import flash.utils.getQualifiedClassName; public class Hoge() { public function Hoge() { trace(getQualifiedClassName(this).match(/(^[^:]+)/)[1]); //foo.bar.baz trace(getQualifiedClassName(…

FlashDevelop で F5 を押したときの FlashPlayer のバージョンを指定する

FlashDevelop with FlashPlayer 9.0.115 でテストしたい。 まず、Flash Player を落としてきて、 Tools -> Program Settings -> FlashViewer -> External Player Path c:/path/to/flashplayer9r115_win_sa_debug.exe ここが空の場合、どこかに存在する、9.0.…

ステージに配置された 2 つの要素の位置を入れ替える JSFL

ステージに配置された 2 つの要素の位置を入れ替える JSFL を書いた。 var selection = fl.getDocumentDOM().selection; if (selection.length === 2) { var temp = {}; temp.x = selection[0].x; temp.y = selection[0].y; selection[0].x = selection[1].x…

Event クラス用のテンプレートを作った

.as のテンプレート周りをさらに改良。XxxEvent.as のように Event.as で終わるファイル名ならば Event クラス用のテンプレートを読むようにした。 gvimrc au BufRead,BufNewFile *.as call LoadASTemplate() function! LoadASTemplate() if (line("$") == 1…

新規 .as ファイル作成時のテンプレート読み込みを改良した

以前設定した、テンプレートを適用する設定を強化して、クラス名 = ファイル名になるようにした。 gvimrc au BufRead,BufNewFile *.as call LoadASTemplate() function! LoadASTemplate() if (line("$") == 1) && (match(getline(1), "^$") == 0) "Windows 0…

FlashDevelop で件付きコンパイルを使ってみる

mxmlc のコンパイルオプションが便利かも。 条件付きコンパイルの使用 (livedocs) 特定のビルドでコードブロックを包含または除外するには、条件付きコンパイルを使用します。mxmlc コンパイルでは、コンパイル時に定数の値をアプリケーションに渡すことがで…

リンケージ設定を入れ替える JSFL

ライブラリ内の 2 つのアイテムのリンケージ設定を入れ替える JSFL を書いた。 //SwapLinkageSettings var selectedItems = fl.getDocumentDOM().library.getSelectedItems(); var itemA = selectedItems[0]; var itemB = selectedItems[1]; var source; var…

Flash 開発ツールが出力する HTML をそのまま使うのはまずい

Flash CS3 と FlashDevelop がはき出す HTML の、FlashPlayer のバージョン指定の所が 9.0.0 になっている。Event.ADDED_TO_STAGE などを使用すると 9.0.0 では動かないので、素の HTML をそのまま使うのはまずい。

FlashPlayer 9.0.115 で追加や仕様変更のあったメソッドとプロパティ

職場で FlashPlayer 9 のマイナーバージョン絡みでハマる。要件定義の際には、マイナーバージョンまでの同意を得るべきだと痛感した。 リリースノートに書かれている以外にも、メソッドやプロパティがしれっと追加や仕様変更されているようなので調べてみた…

JSFL ファイルを UTF-8 で書くときは BOM を付けた方がいい

JSFL を UTF-8 で書くときは BOM を付けた方がいい。 //取 fl.trace(1); BOM なし UTF-8 だと、このコードが動かなかった (Windows/Flash CS3)。 Vim で BOM を付けるには :se fenc=utf-8 bomb とする。

AS3 では asfunction の代わりに TextEvent.LINK を使う

TextField の htmlText に target="_blank" 付きでリンクを貼ると、IE でポップアップブロックされる。 ActionScript textField.htmlText = "<a href='http://google.co.jp' target='_blank'>Google</a>"; なので、それを回避するため asfunction 経由の ExternalInterface を使おうと思ったら、AS3 には asfunc…

ExternalInterface 経由で HTML 要素を削除すると、Safari が落ちる

以下の条件で Windows 版 Safari 3.2.2 が 100% 落ちる。 ExternalInterface 経由で、SWF 自身が置いてある HTML 要素を削除する。 フレームスクリプトで ExternalInterface を呼び出す。 その SWF の wmode が transparent である。 ActionScript //in cras…

動的に生成した HTML 要素に Flash タグを貼り付けると ExternalInterface が動作しない場合がある

ExternalInterface でハマった。 var hoge = document.createElement("hoge"); hoge.innerHTML = "

新規 .as ファイルを作成時にテンプレートを読み込むようにした

空の .as ファイルを開いたときにテンプレートを読み込むようにした。 :he skeleton :he au を参考。 Vim スクリプト au BufRead,BufNewFile *.as call LoadASTemplate() function! LoadASTemplate() if (line("$") == 1) && (match(getline(1), "^$") == 0)…

DisplayObject を表示リストの一番上に持ってくる

DisplayObject を表示リストの一番上に持ってくるやり方は幾つかある。 setChildIndex setChildIndex(displayObject, numChildren - 1); addChildAt addChildAt(displayObject, numChildren); addChild addChild(displayObject);