Firefox3.6で空のURLをloadしてもIOErrorEventが取れない

Firefox3.6だけプリローダーが終了せず原因を調査したところ、
XMLから受け取った外部画像のパスが空のとき、
IOErrorEventによる読み込み失敗が取れていなかった。
IEやChrome,Firefoxも3.5等では読み込み失敗として取れていたのに・・・、
ハマったのでメモしておく。

Firefox3.6で読み込み失敗が取れない – wonderfl build flash online

MBAを買いまして、ブラウザでPHPのエラー箇所を標示


MacBook Airを買いました。
FlashとかやるメインのPCはWinなので迷いましたが、今はDropboxEvernoteなど環境に依存しない共有の仕組みが色々と整っているので問題ないだろうと。
その他Google Chromeのアカウントの同期、iPhoneアプリで圏外でもブックマークが読めるRead It Laterなど、本当に便利な世の中になったものです。
買った直後に発表された新MacBook Proのことは別に気にしていません。

さて、MacでPHPを弄ろうと思い、ローカルにWebサーバーを構築するフリーソフトMAMPをインストールしました。
Windowsだと多分XAMPPですね。Macにもありますが、どうせなら違うのを入れようとこっちを選びました。
PHPはすぐに動作するようになったのですが、スペルミス、構文エラー等発生したときにミスった箇所の行数などがデフォだと出ません、WinのXAMPだと出たんですが。
デバッグに不便なのでエラーを表示するよう設定する方法を調べましたが、PHPのバージョンなのか行数などが違っていたのでメモっておきます。

■PHPのエラー行をブラウザに表示(PHP5.3.2)
/Applications/MAMP/conf/php5/php.ini の 277行目
display_errors = Off を Onに。

忘れずにMAMPの再起動をしましょう、エラー行数等の表示が出る筈です。

 
ということでこれからFlash以外にも、まだ慣れないMac環境でのメモとかも書くかもしれません。
新しいMBPはiPhoneでテザリングっぽいことが出来るかもとのことですが、全然気にしていません。

Windows 7とWindows Vista で SoundChannelがnullになる

Windows7とWindowsVistaでSoundChannelがnullになる

プラットフォーム依存しないことが大きな売りである筈のFlash君が
Windows7とVistaでのみ動かない事態に遭遇し、
解決に多大な労力を費やしたのでメモ。
願わくば同じ境遇の人が検索で引っかかってくれますよう。

結論を述べると、Windows7とWindowsVistaのPCにサウンドの出力装置が接続されていないと、
SoundChannelがnullで返ってきます。

var sc:SoundChannel = sound.play(); //戻り値がnullらしい

sc.soundTransform = new SoundTransform(0.5);//エラー

if(sc  != null)sc.soundTransform = new SoundTransform(0.5);//解決

イヤホン指したら普通に動いたときは狐につままれた気分でした。。。

 
イヤホンで検索したら出てきた。
http://www.flash-jp.com/modules/newbb/viewtopic.php?topic_id=9794&forum=6

2880pxより下にあるダイナミックテキストが表示されないの対処法

この大きさのFlashを作ることはあまりないかもしれませんが、対処方法のメモ書き。
外部XMLを読み込み表示するFlashのエンベッドwmodeを変更したところ、
下の方のテキストが表示されなくなりました。
調査したところ発生条件は、

  • FlashPlayer9以下
  • wmodeが”transparent”
  • テキストフィールドへ動的に文字列を流し込んでいる
  • そのテキストフィールドのY座標が2880px以上

でした。
対処法は以下のいずれか。

  1. 書き出し&閲覧Playerバージョンを10以上にする
  2. フォントを埋め込む
  3. cacheAsBitmap = true (ビットマップとしてキャッシュにチェック)

Flashの表示オブジェクトの限界が縦横2880pxらしいのでそれが関係していると思われる。
FlashPlayer10からはその制限が緩和されているため(参考)、
試してみたところテキストが表示されました。

該当のテキストフィールドにフォントを埋め込んでしまうのも効果あり。

表示されないだけで、文字列自体は入っているっぽかったので、
テキストを含むMovieClipのcacheAsBitmapをtrueにしたところ、これも効果あり。
今回はレギュレーションがPlayer8で固定、
日本語も入るのでフォントを埋め込むと容量が大きくなりすぎるということで、
3番の方法で対処しました。

Adobe Max 2010 Retweet 公開資料まとめ

11月25日ベルサール汐留で行われたAdobe MAX 2010 RETWEET~ Adobe Flash Platform 最新情報 from MAXへ行って来ました。
10月に行われた本家MAXのおさらいイベントで、内容としてはAir for Androidなどスマートフォン成分が多めでした。
こういうのは行ってすぐまとめなきゃと思いつつ放置、そして内容を忘却・・・。
思い出そうとネットでレポートを探すと大半のスピーカーの方々が既に発表資料を公開されていたので、
下手にレポートせず、それらをここにまとめてお茶をにごしておきます。

【2010/12/17】
・上条彰宏氏「Flash Player描画機能の最新情報」の資料URLを追記
公式にもレポートが追加されました

“Adobe Max 2010 Retweet 公開資料まとめ” の続きを読む

JSFLメモ

JSFLメモ久しぶりにJSFLを自作する機会があったのでそのメモ。
いちいち何ができて何ができないのか分かりません。

■アイテム、インスタンスが『ボタン』かどうかを調べる
ライブラリにあるアイテムはitemTypeで「movie clip」、「graphic」、「button」等取得できます。
ステージ上にあるシンボルの場合instanceTypeでは、ムービークリップ、ボタン、グラフィックが一緒くた「symbol」としか表示されません。
何とかならないか調べたところ、ボタンインスタンスであればbuttonTrackingが取得できるのでそれで対応。

//ライブラリのアイテムがボタンか?
if(fl.getDocumentDOM().library.items[0].itemType == "button")

//ステージのインスタンスがボタンか?
if(fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0].buttonTracking != undefined)

 
■キーフレームかどうかを調べる
そのフレームがキーフレームかを調べるには、公式リファレンス(注:PDF) の例そのまんまですが、frame.startFrameプロパティが配列のインデックスと一致しているかどうかを確認。

//キーフレームか否か?
var frameArray = fl.getDocumentDOM().getTimeline().layers[0].frames;
var n = frameArray.length;
for (i=0; i<n; i++) {
	if (i==frameArray[i].startFrame) {
		alert("Keyframe at: " + i);
	}
}

//現在のタイムライン全体からキーフレームに置かれている要素一つ一つを走査する
var tl = fl.getDocumentDOM().getTimeline();
var layerNum = tl.layers.length;
for (var l = 0; l < layerNum; l++) { 
	var frameNum = tl.layers[l].frames.length;
	for (var f = 0; f < frameNum; f++) { 
		//キーフレームか否か
		if (f == tl.layers[l].frames[f].startFrame) {	
			var elementNum = tl.layers[l].frames[f].elements.length;
			var elts = tl.layers[l].frames[f].elements; 
			for (var e = 0; e < elementNum; e++) { 
				var elt = elts[e];
				fl.trace("element of Keyframe : " + elt);
			}
		}
	}
}