サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
買ってよかったもの
bitmap.dyndns.org
デザイナから渡された .fla ファイルに「ラベルはついているが、stop() が書かれていない MovieClip」が大量にあった。これらの MovieClip をステージに配置した途端、アニメーションのループが始まってしまう。なんとしても、stop() を入れたい。 そこで、手作業で 1 つ 1 つに stop() を入れようとしたが、数えると 70 以上の MovieClip があった。時間も惜しいが、単純作業は精神的にきつい。そんなときこそ、JSFL の登場である。 script レイヤーを追加して、1 フレーム目に this.stop(); を書く JSFL /** * scriptレイヤーを追加してthis.stop();を書く */ var items = fl.getDocumentDOM().library.getSelectedItems(); for (var i =
Red5 が面白そう。インストールしてちょっとさわってみた。 環境 CentOS 4.5 with VMware Server Java をインストール Java を JPackage から入れる。 cd /etc/yum.repos.d wget http://www.jpackage.org/jpackage.repo jpackage.repo をエディタで開いて、 [jpackage-rhel] name=JPackage (free) for Red Hat Enterprise Linux $releasever mirrorlist=http://www.jpackage.org/jpackage_rhel-$releasever.txt failovermethod=priority gpgcheck=1 gpgkey=http://www.jpackage.org/jpa
SWF ファイルヘッダの読み方を解説してみる。ヘッダの仕様は、File Format Specification PDF の 16 ページにある (Specification へのリンクはエントリ下部)。 用意するもの Stirling などのバイナリエディタ 基数変換ができる電卓 ヘッダからわかる項目 ヘッダには、以下の 6 つの値が記述されている。 プレイヤのバージョン ファイルサイズ ステージの幅 ステージの高さ FPS ルートのフレーム数 バイナリエディタで開く Flash 8 を起動した直後の状態でパブリッシュを行い、書き出された SWF ファイルをバイナリエディタで開くと、下記のようなバイト列が表示される。 46 57 53 08 24 00 00 00 78 00 05 5F 00 00 0F A0 00 00 1E 01 00 44 11 00 00 00 00 43 0
Ruby スクリプトの結果を手軽に Vim のバッファに適用できないものかと調べた結果、Vim には Ruby/Python/Perl インタフェースなるものが実装されていることを知った。詳しくは、:he ruby (和訳) にある。 主に使用するコマンドは以下の 2 つ。 :ruby {command} command を実行する。現在のバッファは VIM::Buffer.current または、グローバル変数の $curbuf で参照が可能。例えば、現在のバッファに hoge0 ~ hoge9 を挿入するには、VIM::Buffer オブジェクトの append メソッドを利用して :ruby 10.times{|x|$curbuf.append($curbuf.count,"hoge#{x}")} とすればよい。 :[range]rubydo {command} [range] に指
Windows では :grep コマンドの実体が findstr.exe で、いまいち使いづらいので GNU grep と grep.vim を使うようにした。特に、バッファ内を検索する :GrepBuffer が便利。 GNU grep をインストールする 以下の 2 サイトからバイナリをダウンロードする。 Grep for Windows FindUtils for Windows インストール場所は、スペースを含まない所が良い。スペースを含むと grep.vim がエラーを起こす。 grep.vim をインストールする grep.vim の最新版をダウンロードし、$VIM/runtime/plugin に配置する。そして gvimrc に以下のような設定を追加する。 :let Grep_Path = 'c:/GnuWin32/bin/grep.exe' :let Grep_Find
Vim7 から、内蔵の grep プログラムが使えるようになっている。との情報を「grep を使いやすくする」のコメントでいただいた。結論から言うと内蔵 grep は便利。 vimgrep を使う Vim7 内蔵の grep を使うには :vimgrep コマンドを使えばよい。 :vimgrep /hogehoge/ *.txt 最初にマッチしたファイルを開かないようにするには j フラグを使う。 :vimgrep /hogehoge/j *.txt 再帰的に検索するには **(starstar) を使う。 :vimgrep /hogehoge/j **/*.txt 検索結果は Quickfixリストに表示される。:copen で開き :ccl で閉じることができる。詳細は :he quickfix-window。 vimgrep をデフォルトの grep プログラムとして使用する :gr
Apollo がリリースされた。が、自分の PC の Flex 2 Builder は、試用期間を過ぎてしまい Apollo を試すことができない……と思いきや、コマンドラインツールも提供されているのでそちらで試した。参考にしたのは、Apollo for Adobe Flex Developers Pocket Guide。 開発ツールをインストールする Flex 2 SDK と言語パックをダウンロードする 解凍後、"C:/Program Files" などに配置する Apollo SDK をダウンロードする 解凍後、Flex 2 SDK のフォルダに上書きコピーする 環境変数に Flex 2 SDK の bin フォルダへのパスを通す 以上で環境設定は完了となる。 Apollo SDK Apollo SDK には 3 つのコマンドラインツールが含まれる。 AMXMLC MXMLC のラッ
Vim の補完機能は便利だ。例えば ActionScript を書くとき、 this.onE<C-n><C-n> と入力すると this.onEnterFrame となる。ただし、バッファ内のどこかで onEnterFrame という単語が登場していることが条件となる。そこで、辞書ファイルを用意することで、登場していない単語の補完が可能となる。 ActionScript の Vim 用辞書を設定する Web のリソースに ActionScript の辞書ファイルが無かったので、シンタックスファイルから keyword を抜き出して作成した。 ActionScript の Vim 用辞書ファイル 上記の辞書ファイルを適当なディレクトリ ($VIM/runtime/dict/ 等) に移動し、Vim の設定ファイルに以下の行を追加する。ファイルタイプの設定方法は「Vim で ActionScr
Flash の trace 出力を表示するアプリケーション "Trace Rabbit" を作った。以前エントリした FrashTracer のスタンドアロン版となる。 Trace Rabbit 1.0.1 スクリーンショット ダウンロード (13 KB) 実行に必要なもの .NET Framework 2.0 Flash Debug Player 9 注意事項 Debug Player 9 (9.0.28.0?) から、ログファイルの出力先が以下の場所に変わっている。Trace Rabbit はデフォルトでこのファイルを参照する。 C:/Documents and Settings/user_name/Application Data/Macromedia/Flash Player/Logs/flashlog.txt Debug Player 8 で Trace Rabbit を使用する
ActionScript では型付き配列 (typed array) がサポートされていない。もし実装するなら、以下のようになるだろう。要素を追加する際に constructor プロパティでふるいにかけている。 Typed Array class TypedArray { private var array:Array = null; private var type:Function = null; /** * コンストラクタ * @param type 要素の型 */ public function TypedArray(type:Function) { this.array = new Array(); this.type = type; } /** * アイテムを追加する * @param item 追加するアイテム */ public function push(item:Ob
Flash をデバッグするための Firefox extention を Alessandro Crugnola(SEPY の開発者) が配布している。Flash デザイナや開発者は是非とも入れておきたい。 FlashTracer FlashTracer は、Firefox から trace の出力を見ることを可能にする extention。デバッグ用の TextField を作成したり、JavaScript の alert を呼ばずとも値のチェックができるのは嬉しい。この extention を入れる前に、debug player をインストールしなければならないので注意。 FlashTracer をデバッグツールとして使用すると便利だが、公開済みのコンテンツに trace 文が含まれていた場合、この extention を導入しているユーザに見られてしまうという捉え方もできる。デバッグ
エクスプローラなどからテキストファイルを開いた際、デフォルトの設定では Vim が多重起動してしまう。既に立ち上がっている Vim 内にファイルを読み込ませるには、Vim をサーバとして起動すればよい。 まず regedit で、以下のキーに移動する。 HKEY_CURRENT_USER\Software\Classes\applications\gvim.exe\shell\open\command 次に、値のデータに、起動オプション --remote-silent を追加する。 "C:\Program Files\vim-6.4-w32j\gvim.exe" --remote-silent "%1" これで、新しい Vim が次々に立ち上がることは無くなる。
先日、Flash ムービーのボタンが押せなくなる不具合に遭遇した。wmode を transparent に指定していたことが根本の原因のようだ。 発現環境は、Windows の Firefox のみ。wmode が transparent に指定されていることに加え、幾つかの条件が重なることで発生する。また、「押せない」状況にも 2 つのパターンがある。1 つは、ボタンの上にカーソルを移動すると、一瞬だけカーソルの形状が変わるパターン。2 つ目は、ボタンのヒットエリアがズレるパターンである。 一瞬だけカーソルの形状が変わる wmode が transparent に指定されている Flash ムービーを梱包している要素の overflow が auto/scroll に指定されている 場合に起こる不具合。ボタンの上にカーソルを移動して over イベントが発生するものの、over 状態を
連続する代入文は = の列を揃えるとコードの可読性が上がる。しかし、列を揃える作業は時間を取る上に、整列させたとしても、ある変数名の長さが変わる度に、他の行のスペースの数を調整しなければならない。 そこで、Align.vim を使う。Align.vim は、面倒な整列を数回のキー操作で実現してくれる。もし、Ruby が得意ならば Ruby でフィルタ処理を行うという手もある。 ここでは、Align.vim の例を示す。 var hoge = 10; //this is hoge var foo = 200; //this is foo var barbarbar = 3000; //this is barbarbar 上記のような崩れたコードを選択後、\t= を入力すると一瞬で整列する。代入文に加えて、コメント開始の列も揃っていることに注目。 \t= var hoge = 10; // t
Flash を GUI の要素としてではなく、データ通信コンポーネントとして利用する動きがある。JavaScript には実装されていない Socket 通信などの機能を Flash の API を間接的に用いることで、より表現に幅を持ったサイトの制作が可能になるからだ。また、FlashPlayer をミドルウェアとして利用するので、プラットフォームを気にする必要も無くなる。 代表的なコンポーネントとしては以下のものがある。XML 通信は XMLHttpRequest の代替にあたる。リストには無いが、Remoting API を持ったコンポーネント Flash も、既に誰かが開発しているだろう。 SocketJS Flash は XMLSocket 通信を行う。 Fjax Flash は XML 通信・パースを行う。 SwfJax Flash は XML 通信・パースを行う。XPath
生成したオブジェクトを破棄するには delete ステートメントを使用すればよいが、delete ステートメントによる削除の対象は、生成したオブジェクトの実体ではなく、オブジェクトの参照であることに注意したい。唯一、実体として扱われるのは「そのオブジェクトが、他のいかなるオブジェクトにも参照されていない」ときだけである。オブジェクトは完全に孤独にならない限り、生かされ続ける運命にある。プログラマがオブジェクトの生存管理を怠ると、行き場を失ったオブジェクトは思わぬ所でバグを発生させるだろう。用済みのオブジェクトは大人しく退場して貰った方がよい。 以下のコードでは、hogeRef の存在により、hoge を削除しても実体は残ってしまう。 var hoge:Hoge = new Hoge(); var hogeRef:Hoge = this.hoge; delete this.hoge; 不要に
複数の FLA ファイルを一括でパブリッシュする JSFL コマンド。共通で使用しているクラスを書き換えた時や、納品時の最終パブリッシュに使用すると便利だ。 同一ディレクトリ内の FLA ファイルをパブリッシュする //ディレクトリを指定 var dir = "file:///c:/hoge/foo/bar"; //dir が存在しない、かつ Flash 8 ならばオープンダイアログを出す if (!FLfile.exists(dir) && fl.browseForFolderURL) { dir = fl.browseForFolderURL("フォルダを選択して下さい"); } //FLA ファイルリストを得る var fileList = FLfile.listFolder(dir + "/*.fla", "files"); //パブリッシュを実行する for (var i = 0
OnEnterFrameBeacon は便利なことこの上ないが、_root の深度 9876 に __OnEnterFrameBeacon という MovieClip が作成される仕様を理解しておきたい。 親 SWF ファイル (MovieClip) が、子 SWF ファイル (MovieClip) を読み込む構成の Flash サイトを構築する際、子の内部で OnEnterFrameBeacon を使用していると、_root である親の方に __OnEnterFrameBeacon が作成される。そのため、子を unloadMovie() や removeMovieClip() で削除しても、子が作成した onEnterFrame() イベントが発生し続けるという問題が起こる。これにより、単体テストで動いてたものが結合テストで急に動かなくなったりと、意外なところで不具合が生じる。 この問
Vim で ActionScript 2.0 のシンタックスハイライトを設定する手順。 ActionScript 2.0 シンタックスファイルをダウンロード ファイルを $VIM/runtime/syntax/ に移動する $VIM/runtime/filetype.vim の任意の場所に、以下の行を追加 " ActionScript au BufNewFile,BufRead *.as setf actionscript
MovieClip のリンケージを設定するときは、ライブラリを右クリックしてチェックボックスをクリックして、識別子を命名して……という手順を踏む。リンケージを設定する MovieClip の数が少数なら、その都度手動で行えばよいが、大量の、しかも似たような種類の MovieClip 全てにリンケージの設定を行わなければならないシチュエーションがたまに訪れる。例えば、デザインされた 0 から 9 の数字であったり、ゲームのキャラクタなどがそう。 同じような繰り返しの作業をしないために、またミスを防ぐためにも、リンケージの設定を JSFL のコマンドに任せてしまうという手段がある。 まとめてリンケージの設定をする var library = fl.getDocumentDOM().library; var items = library.getSelectedItems(); for (var
テスト用のコードを書くときは、末尾に trace を入れておくと消し忘れ防止になる。 hoge();trace("テスト用のコードが含まれています。"); Google の検索結果ページに 10 キーのショートカットをつける Greasemonkey スクリプトを書いた。 GoogleResults10KeyShortcut.user.js // ==UserScript== // @name Google Results 10Key Shortcut // @namespace http://bitmap.dyndns.org/ // @description Add 10key shortcut to Google search results page // @include http://www.google.co.jp/search?* // ==/UserScript== (f
Developer Center に ActionScript 2.0 Best Practices というページがあった。ActionScript 2.0 のコーディング標準と一般的なルールを解説している。一部を抜粋してみた。 一般的な命名規則 略語の使い方に注意する。例えば、"sec" だと "section" と "second" で混同してしまう。 抽象的な名前を付けない。例えば、ユーザネームを得るメソッドの名前は "getData()" ではなく "getUserData()" とする。 予約語は避ける。また、将来的に予約語になりうる単語も避ける。 変数の命名規則 必ず型宣言を行う。 大文字、小文字が異なるだけの、同じ綴りの名前を付けない。"firstname" と "firstName" は別の変数として扱われる。 Object 型を使いすぎない。どうしても、という時だけ使う。
OOP を使って Flash サイトを制作するとき、簡単なアニメーションならば ActionScript で書いてしまう事が多い。でも、複雑なトゥイーンアニメーションを表示させる部分も必ずあるわけで……。トゥイーンアニメーションこそが Flash の面白い部分であり強みなのだけど、OOP で書いたコードと トゥイーンアニメーションは、結合・連携がなにかと面倒だ。 また、MovieClip の Object 的な「何でもできる」部分が扱いづらい。なので、僕は MovieClip には、単なるアニメーションの表示と、マウスのイベントを受け取るだけの View としての役目のみを割り当てることにしている。中途半端に MovieClip 内に変数や関数を持たせると保守の範囲が広がってしまう。 その延長で、MovieClip のサブクラスや Object.registerClass 等も使わない。以
このページを最初にブックマークしてみませんか?
『bitmap.dyndns.org』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く