2006-01-01から1年間の記事一覧

デストラクタを定義する

生成したオブジェクトを破棄するには delete ステートメントを使用すればよいが、delete ステートメントによる削除の対象は、生成したオブジェクトの実体ではなく、オブジェクトの参照であることに注意したい。唯一、実体として扱われるのは「そのオブジェク…

グラフィックデザインとユーザインタフェースデザイン

プログラマのためのユーザインタフェースデザイン UCD の話である。プログラマでなくとも、ウェブ制作に携わる人には一読の価値がある。 ウェブサイトをデザインする行為の、デザインという言葉には、グラフィックデザインとしての意味の他に、情報デザイン…

無名イベントリスナの作成時の注意点

イベントリスナを関数内のローカル変数として作成することは多々ある。例えば、以下のようなコードだ。このコードは、ファイルパスを与えて、対象のファイルをロードする関数である。ロードの実行には、メモリ上に確保された 1 つのローダを使い回している。…

イベントドリブンモデルに登場するオブジェクトの意味

イベントドリブンモデルには、主に以下の 4 つのオブジェクトが登場する。作業者同士で、用語に対する認識の違いや混同を防ぐために、これらについて簡単にまとめてみようと思う。 イベントソース イベントオブジェクト イベントリスナ イベントハンドラ イ…

ナレッジマネジメント

自分を含む社内の一部で、ナレッジマネジメントが実践されている。イントラ内にブログを立ち上げて情報を書き込むという単純なものだ。この活動は現場の者だけで行われている。共有される情報は、業務で役に立つ tips レベルのものなので実用性が高い。 実は…

正確な工数見積もりを

新規 Flash サイトのプロジェクトが立ち上がる前には、上司から「ざっくりでいいからどれくらいの工数か教えて下さい」と言われる。僕はこの、工数の見積もりという行為が苦手だ。「3 日でできます」と大口を叩いて実際は 3 週間も掛かっては迷惑な話だし、…

ActionScript の辞書ファイル

Vim の補完機能は便利だ。例えば ActionScript を書くとき、 this.onE<C-n><C-n> と入力すると this.onEnterFrame となる。ただし、バッファ内のどこかで onEnterFrame という単語が登場していることが条件となる。そこで、辞書ファイルを用意することで、登場していな</c-n></c-n>…

これだけは知っておけ! vim 勉強会

Vim

5 月 2 日のはてな技術勉強会を見た。テーマは Vim。ここから得られた知識が幾つかあった。まず、範囲置換。これは便利だ……。行末 $ の置換は、結果として行末に文字列を挿入することになる。 範囲選択して :s/$/<br>/ あと、gj と gk の動作を j と k にバイン…

関連クラスの適用

相互参照している 2 つのクラスがある。これらの関連を疎にしたい。そのような場合には、互いの関係に注目した関連クラスを中間に作成することによって、結合を弱くすることができる。UML で言うところの「社員」と「会社」が「雇用」の関係で表された図がそ…

複数の FLA ファイルを一括でパブリッシュする

複数の FLA ファイルを一括でパブリッシュする JSFL コマンド。共通で使用しているクラスを書き換えた時や、納品時の最終パブリッシュに使用すると便利だ。 同一ディレクトリ内の FLA ファイルをパブリッシュする //ディレクトリを指定 var dir = "file:///c…

Macromedia.com が Adobe.com に統合

Macromedia 製品のサイトが Adobe の本体サイトに統合されている。macromedia.com に存在してたコンテンツにアクセスすると adobe.com の該当ページにリダイレクトされる。 Flash サイトの制作者は、Flash Player ダウンロードページへのリンク先を、リダイ…

onLoadProgress() がローカルでも機能するようになった

以前、MovieClipLoader の onLoadProgress() はローカルでは機能しないというエントリを投稿したが、Flash 8 ではこの問題が解決されている。イベントは、ダウンロードのシミュレート時だけでなく、通常のプレビューでも発生する。

OnEnterFrameBeacon の落とし穴

OnEnterFrameBeacon は便利なことこの上ないが、_root の深度 9876 に __OnEnterFrameBeacon という MovieClip が作成される仕様を理解しておきたい。 親 SWF ファイル (MovieClip) が、子 SWF ファイル (MovieClip) を読み込む構成の Flash サイトを構築す…

スタンドアロンプレイヤと Safari ではムービーの実行速度が異なる

Flash Player 8 になり、Mac での実行速度が改善されたと思いきや、一部の環境では遅くなるケースがあるという。実際、スタンドアロンプレイヤ上での実行速度に比べ、Safari 上での実行速度が半分近くに落ちてしまうのを確認した。 Mike Downey のブログで M…

Flash MX 2004 形式のファイルを Flash 8 で編集する際の注意点

今年になってから、ようやく Flash Player 8 専用のサイトを手がけるようになり、それに伴ってオーサリング環境は Flash MX 2004 から Flash 8 に移行しつつある。 とはいえ、Flash Player 7 用の案件の割合は多く、まだ半数のスタッフは Flash MX 2004 を使…

ザ・プロフィット 利益はどのようにして生まれるのか

『ザ・プロフィット』を読んだ。23 の利益モデル (ビジネスモデル) をストーリー仕立てで解説している。普段、自社の利益のことをあまり気にせずに仕事をしていたので、「自分の仕事がどれだけ自社の利益に結びついているか」「自社のサービスで新しい利益モ…

メモリを疑う

自宅で使用しているノート PC(LaVie) が、起動中に突然、画面が真っ暗になった。強制的に電源を落として入れ直しても、ファンが猛烈な勢いで回るだけで NEC のロゴすら出ないという悲惨な状況。ファンクションキーを連打して BIOS 画面を出そうとしたら「パ…

リンケージの設定を自動化する

MovieClip のリンケージを設定するときは、ライブラリを右クリックしてチェックボックスをクリックして、識別子を命名して……という手順を踏む。リンケージを設定する MovieClip の数が少数なら、その都度手動で行えばよいが、大量の、しかも似たような種類の…

複数個のオブジェクト同士の衝突判定

andre michelle による、AS3 のサンプルにある 200 個の円の衝突判定。これのアルゴリズムが気になって、ソースをダウンロードした。 こういった、個々のオブジェクト同士が相互作用するプログラムって、ループの回数が恐ろしい数になりそうだけど、ループの…

二重引用符の機種依存文字

Flash で読み込む XML データに機種依存文字が含まれていると、その文字以降の解析に失敗するようだ。 というのも、何故か Mac でのみ起こるバグがあって、原因は機種依存文字だった。丸付き文字ならすぐに気づくけど、まさか二重引用符の機種依存文字があっ…

イベントクラスを定義する

EventDispatcher.dispatchEvent() で発行するイベントオブジェクトのクラスを定義すると、より厳密なイベントの管理が可能になる。 例えば、「車が走った」というイベントを考える。この場合、イベントオブジェクトのイベントソースは車で、イベントタイプは…

コメントを活用する

ActionScript のクラスには、必ず JavaDoc スタイルのコメントを書くようにしている。プログラムを流し読みしたときに、コメント部分だけに目を通せば内容が大体把握できるし、関数ブロックの区切りも判りやすい。また、ネストされた if 文や再帰関数のよう…

ActionScript 2.0 Best Practices

Developer Center に ActionScript 2.0 Best Practices というページがあった。ActionScript 2.0 のコーディング標準と一般的なルールを解説している。一部を抜粋してみた。 一般的な命名規則 略語の使い方に注意する。例えば、"sec" だと "section" と "sec…

パッケージ名とインスタンス名が同じだと不具合が生じる

クラスファイルをパッケージに振り分けたら、今まで動いていたものが急に動かなくなった。原因は、パッケージ名とインスタンス名の衝突だった。パッケージ名とインスタンス名が同じだと、そのインスタンスが生成されず、しかも、コンパイルエラーは出ない、…

OOP と トゥイーンアニメーションの連携

OOP を使って Flash サイトを制作するとき、簡単なアニメーションならば ActionScript で書いてしまう事が多い。でも、複雑なトゥイーンアニメーションを表示させる部分も必ずあるわけで……。トゥイーンアニメーションこそが Flash の面白い部分であり強みな…

onLoadProgress はローカルでは機能しない

MovieClipLoader クラスの onLoadProgress イベントは、ローカルだと動作しない。「ダウンロードのシミュレート」ですら、完全に無視されます。リファレンスにもそう書いてあり、バグではなく仕様なのだそうだ。仕方がないので、従来通りタイマーを使って ge…

XML の解析エラーを調べる

今まで、XML の onLoad イベント発生時に seccess の値で処理を振り分けるイディオムは書いていたけれど、解析の成否までは確認していなかった。XML ドキュメントを読み込むこと自体に成功しても、解析の段階で失敗していると、後々の処理で問題が生じてしま…

並列で行うタスクの種類

自分が所属しているチームは、各人が複数のプロジェクトを掛け持ちで進行している事が多い。誰がどのプロジェクト (またはプロジェクト内のタスク) を受け持つかは、時に、ジャンケンで決めたりする。先々月、僕はそのジャンケンで勝利を収め、それ以来ずー…

コレクションとイテレータ

コレクションとイテレータを使用するには mx.utils パッケージ内の Collection と Iterator を実装すればよい。ただ、それらが標準で用意されているかと思いきや、Remoting MX Components のソースコードをダウンロードし、Classes 以下に配置しないといけな…

年度末

忙しい。しかし、忙しいといっても、普段よりやるべき事が単純に多いだけで、それらを淡々とこなしていけばなんてことはない。コントロールを失わず、つまらぬミスで慌てないようにしたい。……そんなわけで、Stress-Free の生産性を得るべく Getting Things D…