Flash
FlashTracer を IE で使う方法。……という大げさな tips でもないが、IE に DebugPlayer が入っていれば、Firefox の FlashTracer ウィンドウに trace 内容が表示される。
Progression の Preloader クラスで、読み込み中のバイト数を得る方法。seyself さんの記事を参考にした。 Preloader クラスは flash.display.Loader クラスを継承した ExPreloader クラスを継承している。 従って progress イベントが発生するので、それを…
flash.display パッケージを理解するためのメモ。ActionScript 2.0 の MovieClip が細分化された感じ。 import flash.display.*; DisplayObject 表示オブジェクトの基本クラス。抽象クラスなのでインスタンス化できない。 Bitmap ビットマップの表示クラス。…
協業のためのクラス設計についての考察。 クラス毎に分業化する場合、 クラス名 API イベント プロパティ この 4 点について取り決めを行い、内部実装は各担当に任せる。 「目覚まし時計」を設計する例 クラス名 AlarmClock API setAlarmTime(time:Time):Tim…
久々の Flash プロジェクトで ActionScript 3.0 のキャッチアップに忙しい。下手に ActionScript 2.0 を知っていると、逆にラーニングコストが上がる気がする。 さて本題。コンテナ内の全ての子 DisplayObject を削除するには、幾つか方法がある。Essential …
Prototype.js の感覚で jQuery の $() を使ったら詰まった。 SWFObject で貼り付けた SWF のメソッドを ExternalInterface で呼び出そうとして、 $("flashMovie").doSomething(); と書いたら、$("flashMovie") には doSomething が無いと言われる。 それもそ…
Adobe - デベロッパーセンター : 外部APIを使用したFlashとJavaScriptの接続 FlashPlayer 7 以下では ExternalInterface が使えないので、Flash -> JavaScript の接続には getURL fscommand を使う。getURL はコードが単純になるが、IE でクリック音が鳴って…
追記 : 2008.05.08 ↓下記のサイトに置いてある辞書ファイルの方が性能がよいので、本サイトはスルーしていただいて構いません。 AS3 の辞書ファイル - PBD - subtech 追記ここまで ここの actionscript.vim からキーワードを抜き出して辞書ファイルを作った…
SWFObject の addVariable を使って何らかのパラメータを渡す際には、その値を URL エンコードした方がよい。 値に & などのスペシャルキャラクタを含むと正しく渡らない可能性があるからだ。 例えば、 so.addVariable("hoge", "http://example.com/?a=100&b…
サイト構成に必要な XML ファイルを外部ファイルにせず、flashVars で渡すのも一つの手だろう。 so.addVariable("hoge", "<hoge>foo</hoge>"); 利点は、 通信コストが減る 非同期の読み込みイベントが減る 欠点は、 FlashIDE で開発時に、flashVars を読み込めない→スタブ…
Flash で描画したベクター画像を img タグで表示させるデモを作った。肝はサーバプログラムを経由しないところ。 IE 以外のモダンブラウザなら、下の灰色の領域に線を描くと、その下に PNG 画像が現れるはず。 ペイントツール部分は、func09 さんのソースを…
Flash Player Version Flash 開発者に嬉しい、バージョンチェック&リンク集サイト。バージョン情報をコピー&ペーストできるので、クライアントに確認してもらうときにもよい。adobe.com のバージョンチェックページでは、それができない。
SharedObject のデバッグに SolVE を使っている。開発者は Darron Schall。 サイトによっては Unsupported type encountered -1 というエラーが出るが、幸いにも開発中のサイトでは発生していない。 TCSOFileReader.java を読むと readDataType メソッドに /…
3to2 に触発され、JavaScript で SWF ファイルを読み込んで中身を書き換えるデモを作った。 JavaScript で SWF を読み書きする (Firefox 限定) 主な仕組み XmlHttpRequest で SWF バイナリを読み込む (参考) SWF を解析する (3to2 などを参考) Base64 エンコ…
ExternalInterface で通信するとき、型に注意すること。 new Date("2007", "10", "7"); このコードは JavaScript で有効であり、ActionScript ではエラーになる。 年月日を文字列で渡してしまい、動かなくて困った。
How to Speed Up Flash 8's ExternalInterface ExternalInterface を使って、Flash から JavaScript へ 30000 文字前後の巨大な文字列を渡したら FlashPlayer 8 がクラッシュした。 ちなみに、FlashPlayer 9 では問題ない。 原因は、ExternalInterface が内…
Date オブジェクトのパラメータは、負の値も設定できる。Flex のフォーラムで知った。 var d = new Date(2007, 8, 21); //2007 年 9 月 21 日 var d = new Date(2007, 8, 0); //2007 年 8 月 31 日 var d = new Date(2007, 8, 21 - 365); //2006 年 9 月 21 …
Flash は、複数のレイヤーを一度にコピーすることができない。 例えば、_root に作ってしまった複数のレイヤー、複数のフレームに渡るアニメーションを、新規作成した MovieClip にコピーしたいというニーズが多々あるのに、できない。 いや、できないという…
可能な限りライブラリパネルを触らず、頻繁に編集するシンボルにアクセスする方法を模索している。思いついたアイデアは以下の 2 点。 同一の .fla ファイルを複数ウィンドウで開いておく シンボルのブックマークを作る 同一の .fla ファイルを複数ウィンド…
前エントリの派生で、Vim で編集中の JSFL ファイルを Ctrl-Enter で実行できるようにした。コマンドのテストが楽になって嬉しい。 Ctrl-Enter で JSFL を実行できるようにする JSFL の filetype を設定する。これは JavaScript のものをコピペでよい。 $VIM…
Vim で ActionScript を編集中に、Ctrl-Enter を押すとパブリッシュされるようにした。Alt-Tab で Flash IDE に移動しなくて済む。 Ctrl-Enter でパブリッシュできるようにする filetype を設定済みなことが前提条件で、 $VIM/runtime/ftplugin/actionscript…
このブログでもこれまでいくつかの JSFL を公開してきたが、一般的に (?) は MXP 形式での配布が主流らしい。 ということで、MXP の作り方を調べた。 MXP ファイルの作り方 (JSFL コマンド) JSFL ファイルを作成する。 MXI ファイルを作成する。MXI ファイル…
配置されたシンボルが、ライブラリ内のどのアイテムなのかを知るには「シンボルの入れ替え」ウィンドウを開く。 もっと良い方法は無いものか。
コレクションの開始値が 0 であったり 1 であったりと悩ましい。何が言いたいかというと、 hoge_mc.gotoAndStop(0); と書いていて、1 時間無駄にして悔しい (フレームは 1 始まり)。MovieClip のフレーム移動は、ラベルを使うのが鉄則なのだが、手を抜くとこ…
Flash 8 で、テキストフィールドに <a> タグを書いたところ、空白部分もリンクになってしまって困った。以下のようなコードで再現できる。 this.createTextField("my_txt", 1, 100, 100, 300, 100); my_txt.border = true; my_txt.multiline = true; my_txt.wor</a>…
ステージ上で選択されたインスタンスに、ライブラリ内と同じ名前を付ける JSFL を書いた。 /** * 選択されたインスタンスにライブラリ内と同じ名前を付ける */ var selectedItems = fl.getDocumentDOM().selection; for (var i = 0; i < selectedItems.lengt…
現在作業中の Flash 案件で、画面上にユニークなものを全てシングルトンにしていたら、案の定「これはひどい」コードになりつつある。免罪符として、コメントに「これはひどい」と記しておいた。結論を言うと、意思決定力が弱いのに、設計しながらコーディン…
デザイナから渡された .fla ファイルに「ラベルはついているが、stop() が書かれていない MovieClip」が大量にあった。これらの MovieClip をステージに配置した途端、アニメーションのループが始まってしまう。なんとしても、stop() を入れたい。 そこで、…
Reference 型を使いたいシーンが多々ある。例えば以下のようなコード。 var hoge:Hoge = new Hoge(); var task:HogeInitTask = new HogeInitTask(hoge); これは、タスクで、Hoge 型の hoge を初期化するもので、タスクは任意のタイミングで実行される。タス…
ダウンロードのシミュレートを行うと、グローバル変数やシングルトンがリセットされない。これは致命的。CS3 では解決したのだろうか。 5 1/2 blog のコメントを見ると、解決策が 2 つ上がっている。 System.capabilities.playerType で振り分ける delete 文…