2010
7/2

Error calling method on NPObject

ss

製作中のとあるフルFlashサイト。ブラウザで普通に確認してる分には問題なく動作していたため全く気がつかなかったが、Firefoxのエラーコンソールを開いてみると「Error calling method on NPObject」というJavaScriptエラーが頻発!「なんじゃこりゃ」ということで早速調べてみたところ、原因がわかりました。

まず、今回のサイトは以下のような条件が揃っていました。

  • SWFファイルのドメインと、そのSWFファイルを埋め込んで表示するHTMLファイルのドメインが異なっている(SWFは http://www.hogehoge.home/movie.swf にあり、HTMLファイルは http://user.hogehoge.home/index.html にある、というような感じ)
  • マウスホイール対応のためにSWFWheelを使用
  • SWFファイルの埋め込みにSWFObjectを使用

そしてSWFWheelのサイトを見ていたところ、以下のような注意書きが:

その他

外部ドメインからの読み込み

SWFWheelを使ったswfファイルを、外部ドメインから読み込む場合、HTML側とActionScript側の両方でExternalInterfaceの動作を明示的に許可する必要があります。

  1. HTML側にて、paramタグ及びembedタグでallowScriptAccessの値にalwaysを指定する。
  2. ActionScript側にて、Security.allowDomain等で許可するドメインを指定する。

ビンゴですね。1.の方は対応済みだったんですが、2.の方が未対応でした。ところで今回のサイト、サブドメインの数が一定でなく、運用後に随時追加される可能性があります。ので、ワイルドカードを使って以下のようなコードを追加。

Security.allowDomain("*.hogehoge.home");

結果は・・・?ダメでした。まだエラーが出ます。うーん、もしかしてワイルドカードでサブドメインを指定するのは無理なのか?ということで、今度は以下のコードで実験。

Security.allowDomain("*");

成功!エラーがでなくなりました。全ドメインを対象にしてしまうのは危険といえば危険ですが、現時点ではこれが最善の策でしょうか。


Filed under: ActionScript3,SWFObject,SWFWheel,TroublesComments (0)— tonpoo @ 11:37 AM

2010
4/6

Flashbugを導入したらFlashPlayerが落ちるようになった件とその解決策

今日、Flashbugの設定をちょっと変更した瞬間から、Flashコンテンツのあるページを表示させるとやたらとブラウザ(Firefox)が落ちるようになってしまった。これがFlashbugを無効化したり削除したりしても直らない上、Google Chromeでも発生したことから軽くパニクったんですが、結論からいうと、Flashbugの設定画面からFlashPlayerの設定を変更してしまったことが原因のようでした。

ss
ええ、仰るとおり、まさに"very easy to crash"でしたよ(涙)。上記のスクリーンショットのように、Undocumented Trace Log Settings欄のチェックを全て外したら、クラッシュせずに動くようになりました。

で、原因究明の過程でFirebugのオフィシャルページ(Flashbug – An extension for Firebug | Course Vector)の文章について簡単に翻訳してみた(してしまった)ので、備忘録をかねて参考までにアップしておきます。
(続きを読む…)


Filed under: Firefox,Flash,Software,Translation,TroublesComments (0)— tonpoo @ 1:10 PM

2010
3/24

Firefox3.6.2へのアップデートとCtrl+Wの設定

自動更新でFirefox3.6.2にアップデート。今のところ、特にアドオンの不調などもなくて快調・・・かと思いきや、閉じるタブが無い状態でCtrl+Wを押しても、ウィンドウが閉じない。

むむ、これ以前もあったなと思って、以下の方法で再設定して解決しました。
(続きを読む…)


Filed under: Firefox,TroublesComments (0)— tonpoo @ 12:10 AM

2010
3/3

BitmapDataの「2880ピクセルの罠」もとい、「幅or高さ8,192ピクセル&ピクセル総数16,777,216の罠」

またまた今更ながらの備忘録メモ。FlashPlayer8から使えるようになったBitmapDataクラスによって、動的にフィルターをかけたり、グラデーションのついたマスク表現などを使えるようになりました。

が、フィルターやグラデーションマスクといった機能、サイズ(ファイルサイズではなく、width x heightのサイズ)の大きな画像やオブジェクトに対しては効きません。具体的には、対象となるオブジェクトのwidthまたはheightが2880ピクセルを超過すると、こうした機能が無効になります。

で、その詳しい理由については下記のURLが詳しい:

Flash 8 のイメージ API の概要 | デベロッパーセンター

該当する部分の引用:

メモ : Flash Player では、ビットマップの最大サイズは幅、高さいずれも 2880 ピクセルに制限されています。この制約よりも大きい BitmapData インスタンスを作成しようとすると、ビットマップは作成されません。これは、クライアントの RAM を使い切るような Flash ムービーを作成できないようにするために設定されています。2880 × 2880 ピクセルのビットマップには、約 32 MB 程度の RAM が必要です。

残念ながらFlashPlayer10でもまだこの点についての変更は無い模様。なぜこの記事を書いてるかというと、今現在この問題で引っかかってるため。さて、どうして回避したものか・・・。

<追記>

kaedeさんからコメントで情報いただきましたが、FlashPlayer10からはBitmapDataサイズの制限が拡大されていますね。

BitmapData – ActionScript 3.0 言語およびコンポーネントリファレンス

当該部分を引用:

AIR 1.5 および Flash Player 10 では、BitmapData オブジェクトの最大サイズは幅または高さが 8,192 ピクセルで、ピクセルの総数は 16,777,216 を超えないようにする必要があります(したがって、BitmapData オブジェクトの幅が 8,192 ピクセルの場合、高さは 2,048 ピクセル以下にする必要があります)。Flash Player 9 以前および AIR 1.1 以前では、高さの制限は 2,880 ピクセル、幅の制限は 2,880 ピクセルです。幅または高さに 2880 より大きい値を指定すると、新しいインスタンスは作成されません。

なるほど、8192 x 8192ピクセル、ってのはダメなんですね。で、改めて今回作業してるファイルを見ると、cacheAsBitmapかけようと思ったインスタンスの横幅が9600ピクセル・・・。そ、そりゃあダメですよね。


Filed under: ActionScript2,ActionScript3,TroublesComments (2)— tonpoo @ 12:37 PM

2010
2/1

Firefox3.6でフルFlashサイトを表示した際に余計なスクロールバーが表示されてしまう問題の解決策(SWFObject2.x版)

Firefox3.6になってから、フルFlashサイト(ブラウザ領域の横100%x高さ100%にFlashコンテンツを表示しているサイト)で、「Flash領域をクリックすると余計なスクロールバーが表示される」という問題が出るようになった件、解決策を見つけました!

(続きを読む…)


Filed under: Firefox,Flash,Tips,Troubles,未分類Comments (5)— tonpoo @ 12:32 PM

2010
1/29

Firefox3.6の導入&挙動変更(Ctrl+W, window.open, フルFlashサイト)

All-in-one gesturesが、以前と同じく、開発者のサイトの方でFirefox3.6に対応するようになっていたこと、また、HttpFoxがもし使えなくても、Firebugの「接続」タブで代用できそうだと思ったので、あらためてFirefox3.6を導入!

・・・してみたら、あれ?HttpFoxのアイコンが出てる

試しにクリックしてみると、ちゃんと動作する。はて?前回試したときからのこの数日間で対応したのかな?まあいいや。というわけで、HttpFoxもそのまま使えて、晴れて3.5の時と同じアドオン環境になりました。

でもって、今のところ気が付いた点。

(続きを読む…)


Filed under: Firefox,Flash,TroublesComments (0)— tonpoo @ 11:19 AM

2010
1/12

navigateToURL+IE+wmode:”transparent”の憂鬱

addEventListenerの書き方の定番」や「ステージのインスタンスを自動宣言」と同じような、備忘録を兼ねたas3メモ。

as3で他ページへのリンクを実装する場合、通常はnavigateToURLメソッドが使われます。

package {
	import flash.display.MovieClip;
	import flash.events.MouseEvent;
	import flash.net.navigateToURL;
	import flash.net.URLRequest;

	public class Main extends MovieClip {
		btn.addEventListener(MouseEvent.CLICK, onBtnClick, false, 0, true);
	}

	public var btn:MovieClip;

	public function onBtnClick(e:MouseEvent):void {
		var url:String = "http://www.tonpoo.com/";
		var req:URLRequest = new URLRequest(url);
		navigateToURL(req, "_self");
	}
}

(続きを読む…)


Filed under: ActionScript3,Tips,TroublesComments (0)— tonpoo @ 9:36 PM

2009
12/22

ActionScriptで別ドメインの画像を読み込んで「使う」ときの注意点

別ドメインにある画像や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を用意しただけで安心してちゃいかんですね・・


Filed under: ActionScript3,TroublesComments (0)— tonpoo @ 7:59 PM

2009
12/15

ステージのインスタンスを自動宣言

ああ腹立たしい!!ActionScript3での開発もそれなりにやってきてるというのに、今でも結構単純な作業を行うのに思い通りにいかず、ストレスを感じることがあります。

今回は「ステージのインスタンスを自動宣言」について。

(続きを読む…)


Filed under: ActionScript3,TroublesComments (0)— tonpoo @ 6:55 PM

2009
11/17

Meiryo UIフォント導入顛末記~行間が詰まった~

窓の杜で下記の記事を発見。

窓の杜 – 【NEWS】MS、「Meiryo UI」フォントを追加するパッチをWindows Vista/2008向けに無償公開

OSのUI用フォント(デフォルトフォント)としてのメイリオは割と気に入っているので、早速こちらもダウンロードしようと思い立つ。

Windowsの七面倒くさいGenuine Advantageの認証(?)をクリアし、ダウンロードしたファイルはフォントファイルではなくて「Windows6.0-KB975929-x86.msu」というインストーラーファイル。これまた面倒くさいと思いながらもインストール。

再起動を求められたので仰せのままに再起動するも、インストール中であることを告げる画面のフォントやログイン画面のフォント、果てはログイン後のデスクトップアイコンのフォントに至るまで、その全てがあの忌々しい「MSゴシック」に!

「なんじゃこりゃ!」と思ってデスクトップアイコンをクリックしてみるとたちまちフォントがメイリオに変更。スタートボタン中のメニューもメイリオのままなので、メイリオ自体が無くなったわけではない模様。

気持ち悪いので改めて手動で再起動したところ、ログイン画面のフォントがメイリオに戻っていることを確認。「ああよかった」と胸をなで下ろし、エクスプローラーを開いたりWEBブラウザを開いたりしていると・・・ん?何かおかしい??何だろう・・・・・・。

あ、メイリオの行間が詰まってる!

ss1

あれ?なんかもっと行間空いてたはず・・・。エクスプローラーのフォルダーツリー部分のアイコン表示もなんかヘン・・・。

これってMeiryo UIをインストールしたことに起因するバグ?それとも、実は今までがおかしくて、これで正常になったとか?

まあ、とりあえずアプリのメニューとかも表示が詰まって便利になった面もあるので、違和感ありありだけどしばらくこれで使ってみましょう。

<追記>

下記のページに表示されているVistaのエクスプローラーのスクリーンショットと比べてみると、やっぱり明らかに行間がおかしい!むー、やっぱり今の状態はバグってるってことなんだろうか。

Windows 7 のエクスプローラー

<さらに追記>

上記の状態がどうにも気持ち悪かったので、「バックアップと復元センター」というやつで、Meiryo UIインストール前の状態に戻してしまいました。もしかしたら別の不具合を起こしたり、あるいはそもそもこのバグも戻らないかもという危惧もあったんだけど、特に問題なく復元できたようで一安心。


Filed under: Troubles,WindowsComments (4)— tonpoo @ 5:26 PM