まず、”name”, “birth”, “part”というプロパティを持つオブジェクトを生成し、それぞれのプロパティに値を入れる。
var obj1:Object = new Object();
obj1.name = "John";
obj1.birth = 1940;
obj1.part = "guitar";
trace(obj1.name); //出力:John
次に、このオブジェクトのコピーを作成し、一部のプロパティを変更するために、以下のスクリプトを実行する。
var obj2:Object = obj1;
obj2.name = "George";
obj2.birth = 1943;
trace(obj1.name, obj2.name); //出力:George George
すると、コピー先(obj2)だけでなく、コピー元(obj1)のプロパティまでも変更されてしまっている。
これは、obj2 = obj1; としたとき、obj1をコピーしているのではなく、obj1への参照を作成しているにすぎないためである。
(続きを読む…)
「Flash(swf)からLightboxを呼び出す」というニーズがこれまでに何回かあり、またついさっきもあって、その都度ちょっと面倒だったりしたのでメモ。なお、ウチの会社ではswfファイルの埋め込みには通常swfobject2を使ってるので、以下は「Lightbox2.04 + swfobject2 + ActionScript(ExternalInterfaceクラス)」という組み合わせが前提となっています。
Lightboxを入手
まず使用するLightboxのバージョンは2.04。Lokesh Dhakar氏によるLightbox 2の公式サイトで入手。
ベースHTMLの作成
次にベースとなるHTMLを作成。今回はとりあえずSWFObject 2 HTML and JavaScript ジェネレーターを使ってサクっと作りました。ポイントとしては、「SWFの定義」のオプションを一部変更すること。

(続きを読む…)
別ドメインにある画像やxmlを読み込んで処理するswfコンテンツの制作中。ポリシーファイルが必要なのはわかっていたので、画像やxmlの置いてあるサーバー(http://www.sample.server/)のルートに下記のcrossdomain.xmlを設置。
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*" secure="true" />
</cross-domain-policy>
でもって、swfの方から上記サーバーのrss(http://www.sample.server/rss.php)を読み込んだ所、問題ナシ!
続けて、JPEGファイルを読み込み、BitmapData.draw()で描画しようと思った所:
セキュリティサンドボックス侵害 : BitmapData.draw:http://www.tonpoo.com/hogehoge/foobar.swf は http://www.sample.server/images/photo.jpg にアクセスできません。ポリシーファイルが必要ですが、このメディアがロードされたとき、checkPolicyFile フラグが設定されませんでした。
あれえええええ?
おかしいなと思って調べてみたら、出てきた:
AS で別ドメインの画像を読み込むときの注意点 – てっく煮ブログ
クロスドメインポリシーファイルは設置してるけどなあ、と思いながら読んでいると下記の記述:
これ以外に、Security.loadPolicyFile() メソッドを使って、事前に読み込んでおく方法もある。
これだこれだ!というわけで早速リファレンスを参照。
Security – ActionScript 3.0 コンポーネントリファレンスガイド
でもって下記の記述を追加(www付きの場合とナシの場合と両方対応するように両方を併記)。
Security.loadPolicyFile("http://sample.server/crossdomain.xml");
Security.loadPolicyFile("http://www.sample.server/crossdomain.xml");
そしたら無事解決!
crossdomain.xmlを用意しただけで安心してちゃいかんですね・・
前にECMAScript HarmonyとActionScriptという記事を書きましたが、そのECMAScriptの最新版、ECMA-262第5版の仕様策定が完了したそうです。
・ECMAScript 第5版 承認 – スラッシュドット・ジャパン
・InfoQ: ECMAScript 5リリース
上記ページを読んでも正直よくわかんないんですが、前者の記事では
Microsoft/Yahooが主導するマイナーチェンジとバグフィックスが主のECMAScript 3.1と、 Adobe/Mozilla/Opera/Googleが主導する野心的な機能拡張である ECMAScript 4の間で対立があったが、 ECMAScript Harmonyと呼ばれる統合計画によって ES3.1をベースに ES4のサブセットを取り込む形で両者が合意した経緯がある。
・・・と書かれている一方、後者の記事では
ECMAScript 4を合理化しようという初期の試みは大失敗に終わった。結局、Adobe社のActionScriptだけが提案された変更点に対応しただけだった。
・・・と書かれています。これはつまり、
●ECMAScript本体の方は3.1をベースにES4の一部機能(仕様)を取り込むにとどまった。
●ES4に対応したのはActionScriptだけだった。
・・・というようなことなんでしょうか?
とりあえず、ActionScript次期バージョンへの影響が心配されます。AS3にやっと慣れてきた手前、この学習資産が無駄にならなきゃいいんだけど・・・。

Browser Size
確認したいページのURLを入力すると、何%のユーザーがどのくらいの範囲を一目で表示できるかを色分けして示してくれるツール。
国や地域、ターゲット層によって、ディスプレイのサイズ(解像度)やブラウザのツールバーの有無などの影響で、表示領域の平均値は異なるだろうけど、ざっと見る(説明する)には便利そうですね。
詳しくは下記の記事を参照のこと。
Google、ページの表示範囲シミュレートツール「Browser Size」発表 – ITmedia News
ちなみにこのツールもGoogleの20%ルールから産まれたそうな。
昨日の「ステージのインスタンスを自動宣言」に続いて、AS3の開発ですぐ忘れてしまう件について、備忘録をかねて。ボタンアクションやらENTER_FRAMEやらの処理を行う際など、頻繁に使うのが「イベントリスナの登録」。例えばステージ上にbtn_mcというMovieClipがあったとして、このボタンをクリックしたらonBtnClickというメソッドを実行させたいというような場合、通常は下記のように記述します。
btn_mc.addEventListener(MouseEvent.CLICK, onBtnClick);
これを、addEventListenerの5つめの引数をtrueにする(3つめはfalse、4つめは0)ことで、より効率的なメモリ管理を実現出来ます。
btn_mc.addEventListener(MouseEvent.CLICK, onBtnClick, false, 0, true);
詳しくは上条氏の下記記事を参照下さい。
イベントリスナ (AS3) とガーベジコレクション – akihiro kamijo
ああ腹立たしい!!ActionScript3での開発もそれなりにやってきてるというのに、今でも結構単純な作業を行うのに思い通りにいかず、ストレスを感じることがあります。
今回は「ステージのインスタンスを自動宣言」について。
(続きを読む…)

ついに出たみたいですねー。
ついにMac版&Linux版Chromeが登場! : ライフハッカー[日本版], 仕事も生活も上手くこなすライフハック情報満載のブログ・メディア
マルチプラットフォームになったことで、いよいよ本格的にFirefoxの強力な対抗馬となった感じでしょうか。互いに切磋琢磨して、よりすばらしいWEBブラウザの開発を進めてもらいたいと思います。
ImpressのPC Watchに掲載された、InternetExplorer9の開発者のインタビュー記事の末尾で、インタビュアーの本田雅一氏との興味深いやりとりがあった。
【本田雅一の週刊モバイル通信】 IE9開発者のライアン・セルヴァティウス氏インタビュー ~IE9が目指す“速い”ブラウザ
以下、該当部分の引用を示す(強調はTonpoo.comによる):
--最後に“日本語”でWindowsを使っているユーザーとして、要望をしたい。もう少しWebページの表示が美しくなるよう、ブラウザ側でも努力してもらえないだろうか?
セルヴァティウス ブラウザは筆記用具でいえばペンのようなもので、どのようにレイアウトするかはWebページデザイナーが決めることだ。Webスタンダードがあって、同じスタンダードに準拠していれば、同じようなレンダリング結果を生むことができる。だから、日本語でも英語でも、ブラウザがやることは同じ。支持されたとおりにページをフォーマットすることだと思う。そういうことじゃないのかな?
--単なるレイアウトではなく、ページ全体に見栄えについて。例えばWindowsとMac OS Xでは文字のレンダリング品位、レイアウトバランスがOSレベルで違う。画像をスケーリングする際の品質も異なる。特に文字品位については圧倒的にMac OS Xの方が上だと感じる。美的観点からの主観評価なので“きれい”か“きれいじゃない”かは、人によって異なって感じるかもしれない。特に英語ならば、目くじらを立てて食い下がるほどの違いは出ないと思うが、日本語では大きな差があると思う。日本語が読めなくとも、単純にビットマップをキャプチャして見比べるだけで、その違いはわかるのでは。
セルヴァティウス それは興味深い。確かに英語以外の言語で、Windowsプラットフォームの文字品位が低いという話は聞いたことがある。我々に何ができると思うか?
--Safari のWindows版は、独自のフォントレンダラを内蔵して、Mac OS Xに近い表示をしてくれる。Windowsのフォントレンダリングについては、もう10年以上も前から品質の問題を指摘されながら変化してないことを見ると期待できない。Safariと同じようにすればいいという話ではないが、“Webページの見やすさ、美しさを改善する”という観点からすれば、ブラウザなりにOSとは独立した文字レンダリングや文字組みの仕組みがあってもいいのでは?
セルヴァティウス 見やすさや文字の美しさといった、感性に関する部分をブラウザ側でカバーするという発想は、これまでしたことがなかった。しかし、重要な点だと思うので開発にフィードバックして内部で検討をしたい。我々はよりよいレンダリングを目指しているので、技術の枠組みにこだわることなく、より良い方向を見つけることができるならば、是非とも取り組んでいきたい。
たまたま現在欧米系の多国籍企業の方とお仕事をさせていただいていて、日本語という言語の抱えるフォントの問題をなかなか理解していただくことができずにいたところ。上記のセルヴァティウス氏の発言を見て、改めてWEBやPCといった分野において、日本語(を含む非欧米系言語。特に漢字を使うアジア系言語?)の存在やその特性というのは、まだまだ充分に考慮されていない、ないし認識されていないのだなあ、ということを感じてしまった。
「10年以上も前から品質の問題を指摘され」ていて、「英語以外の言語で、Windowsプラットフォームの文字品位が低いという話は聞いたことがある」にも関わらず、(セルヴァティウス氏がOSやフォントではなくブラウザの開発担当であるとは言え)本田氏に聞かれて初めて「我々に何ができると思うか?」などと尋ねているようでは、問題解決に対する積極的な姿勢が見られないですよねえ。
Windows Vistaと共に登場した「メイリオ」フォントによって、Windowsのフォント環境は、MS P ゴシックの時代からは相当向上したと思うけど、やっぱりまだまだMacのそれには遠く及ばない。社交辞令やポーズとしてではなく、是非ともセルヴァティウス氏やマイクロソフトには、本気でその辺の問題解決に取り組んでもらいたいですね。

Webのバグを燃やしまくるFirebugと、そのアドオン7選 (1/3) – @IT
上記の記事で初めて知ったんだけど、Firebugっていつの間にかメニューとか日本語で表示されるようになってたんですね!Firebugのアドオンがあるってのも知りませんでした。
あと、上記スクリーンショットの「接続」ってタブ、これもしかしてHttpFoxと同じ機能?