ActionScript: 2008年4月アーカイブ

トップページのFlaファイルを開けてみたら、怖いくらいにActionScriptを忘れていることに気づいてしまいました。

久しぶりのFlashとはいえ、理解・記憶するよりも忘れていく方が多いなると、そもそも「学習」が成立しません。

備忘録のために、恥を忍んでコメント付きのScriptを晒しておくことにします。

//基本設定////////////////////////////

//左肩揃え
Stage.align = "LT";
//拡大縮小無し
Stage.scaleMode = "noScale";
//任意のマージンの設定
var margin = [32, 32, 32, 32];

//写真サイズ変更の関数////////////////////////////

//元々の写真のサイズを変数に収める。
var pw = photo_mc._width;
var ph = photo_mc._height;

//画面いっぱいに写真を表示する。
function scalePhoto() {
	//写真が足りるよう、拡大率の大きい方を使用。
	scaleW = Stage.width/pw;
	scaleH = Stage.height/ph;
	theScale = Math.max(scaleW, scaleH)*100;
	photo_mc._xscale = theScale;
	photo_mc._yscale = theScale;
	//写真の中央部分を優先して表示。
	photoX = (Stage.width-photo_mc._width)/2;
	photoY = (Stage.height-photo_mc._height)/2;
	photo_mc._x = photoX;
	photo_mc._y = photoY;
}

//アイテム配置の関数////////////////////////////

function layoutItems() {
	//リンク「blog/」を右下に配置。
	blog_mc._x = Stage.width-blog_mc._width-margin[1];
	blog_mc._y = Stage.height-blog_mc._height-margin[2];
}

//ボタン関連////////////////////////////

//リンク「blog_mc」の反応
blog_mc.onPress = function() {
	blog_mc._y += 1;
};
blog_mc.onRelease = function() {
	blog_mc._y -= 1;
	this.getURL("http://www.coluli.net/blog/");
};
blog_mc.onReleaseOutside = function() {
	blog_mc._y -= 1;
};

//やることをやる////////////////////////////

//ロゴを左肩に固定
logo_mc._x = margin[3];
logo_mc._y = margin[0];

//最初に一回。
this.layoutItems();
this.scalePhoto();

//リサイズされる毎に。
this.onResize = function() {
	scalePhoto();
	layoutItems();
};
Stage.addListener(this);


//参考資料
//ActionScript逆引きクイックレファレンス(2005年末版)Q*144
//等

トップページをxhtml(XHTML 1.0 Transitional)で書き直したら、中に埋め込んだ全画面表示のFlashが表示されなくなってしまいました。

ちょっとググったら、原因はすぐわかりました(ホントにすぐに。改めて、検索は便利だなぁ......)。

高さおよび幅が 100 パーセントに設定された Macromedia Flash Player ムービー (SWF) が以下のブラウザで正常に表示されないことが確認されております。

(中略)

XHTML コードで定義されている doctype および DTD がブラウザのレンダリングに影響を与えているのが原因です。

(中略)

回避策としては、HTML ファイルの上部に以下のような XHTML コードがあります。この XHTML コードを削除して対処してください。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

メモ: この回避策を適用したファイルは、XHTML に準拠したファイルでなくなりますのでご注意ください。

Adobe - Flash TechNotes : 100 パーセントに設定されている Flash Player ムービーが正常に表示されない

おいおい 、Adobeがそれでいいのか......。

いろいろ調べてみたら、 swffit を使えば、簡単に全画面表示ができるようでした。使ってみると確かに解決しますが、 swfobject日本語訳 )とあわせてふたつ、たかだかswfを埋め込むだけのために使うのもスマートでない気がしたので、もう少し調べると、cssに追加で記述すれば回避できることがわかりました。

cssにこちらを追加することで、あっさり解決しました。

body {
	margin: 0;
	padding: 0;
	position: absolute;
	width: 100%;
	height: 100%;
}

以上です。

調べる途中でこちらのサイトも参考にさせてもらいました。