◆メモ帳◆

FlashやParaFlaに関しての個人的なメモを残していくよてーです。


index

ActionScript

Flash全般

ParaFla!

携帯用Flash

その他


文字列

文字列に関する処理一覧

■文字列の長さ
	変数名.length	//2バイト文字(日本語)も1文字としてカウント

■文字列の検索
	変数名.indexOf("文字/文字列");
	変数名.indexOf("文字/文字列",検索開始位置);
	変数名.lastIndexOf("文字/文字列");		//最後に見つかった位置

■文字列の抜き出し
	変数名.substr(開始位置,文字数);
	変数名.substring(開始位置,終了位置);
	変数名.slice(開始位置,終了位置);

■英文字の大小変換
	変数名.toUpperCase();	//小文字→大文字
	変数名.toLowerCase();	//大文字→小文字

■文字列の置換
	変数名.split("対象").join("文字");	//文字列中の対象を全て指定文字に置換

配列

配列に関する処理一覧

■作成
	配列名 = new Array();
	配列名 = new Array(要素0,要素1,要素2,・・・);
	配列名 = [要素0,要素1,要素2,・・・];

■要素の追加
	配列名.push(値);		//配列の最後に追加
	配列名.unshift(値);	//配列の先頭に追加

■要素の削除
	配列名.pop();		//最後の要素を削除
	配列名.shift();		//先頭の要素を削除

■要素の個数
	配列名.length

■要素の並び替え
	配列名.sort();		//昇順
	配列名.reverse();		//並びを逆にする

■要素の抜き出し
	配列名.slice(位置1,位置2);	//位置1から位置2までの要素を抜き出して新たな配列を作る
	配列名.slice(位置1);	//位置1から最後までの要素を抜き出して新たな配列を作る

■要素の削除/置き換え
	配列名.splice(位置,個数);		//指定の位置から指定個数分の要素を削除する
	配列名.splice(位置,個数,値1,値2,・・・);	//位置から個数分の要素を、指定の値に置き換える

■文字列との変換
	配列名.join("区切り文字");	//配列を区切り文字を使って文字列に変換
	変数名.split("区切り文字");	//文字列を区切り文字で区切って配列に変換
	配列名.toString();		//配列の値を文字列に変換

■配列の結合
	配列名.concat(配列名1,配列名2,・・・);	//配列に指定した配列を結合する

テキストフィールド

テキストフィールドに関する処理一覧

■作成
	createTextField("名前",深度,X座標,Y座標,幅,高さ);

■メソッド
	addListener()	//リスナー追加
	removeListener()	//リスナー削除
	setTextFormat()	//テキストフォーマットを設定
	setNewTextFormat()	//挿入するテキストにテキストフォーマットを設定
	getNewTextFormat()	//挿入したテキストに割り当てるテキストフォーマットを取得
	replaceSel()	//選択内容を置き換える
	replaceText()	//文字の範囲を置き換える
	removeTextField()	//削除
	getDepth()	//深度を取得
	getFontList()	//システムフォント名を配列で取得

■プロパティ
	htmlText		//HTMLデータ?
	variable		//関連付けられた変数名
	type		//タイプ("dynamic"/"input")
	html		//HTMLレンダリング?(B)
	password		//パスワード型(B)
	selectable	//選択可(B)
	multiline		//複数行(B)
	wordWrap		//折り返し(B)
	embedFonts	//埋め込みフォントの使用(B)
	length		//文字列の長さ
	maxChars		//最大文字数
	restrict		//入力可能な文字セット
	text		//文字列
	textColor		//文字色
	background	//背景(B)
	backgroundColor	//背景色
	border		//枠(B)
	borderColor	//枠色
	autoSize		//自動サイズ(B)
	textWidth		//境界ボックスの高さ
	textHeight	//境界ボックスの幅
	tabIndex		//タブ順
	tabEnabled	//自動タブ順に含まれるかどうか
	menu		//ContextMenuを関連付ける?
	scroll		//スクロール位置
	hscroll		//水平スクロール値
	maxscroll		//scrollの最大値
	maxhscroll	//hscrollの最大値
	mouseWheelEnabled	//ホイールでスクロールする(B)
	bottomScroll	//表示範囲の最終行数?

■イベント
	onChanged		//変更されたとき
	onScroller	//scrollの値が変わったとき
	onSetFocus	//フォーカスを得たとき
	onKillFocus	//フォーカスを失ったとき

(B)のついているものはブール値。
?のついているものはよくわかってない。

フォーカス時の特殊な処理

■入力カーソルの位置を取得
	Selection.getCaretIndex();

■任意の範囲を選択状態にする
	Selection.setSelection(開始位置,終了位置);

■入力カーソルの位置を(擬似的に)移動
	Selection.setSelection(位置,位置);

「Selection」は、現在フォーカスのあるオブジェクト。
なのでインスタンス名とか入れずに、このまま使う。

テキストフォーマット

テキストフォーマットに関する処理一覧

■作成
	名前 = new TextFormat();

■適用
	テキストフィールド名.setTextFormat(テキストフォーマット名);
	テキストフィールド名.setTextFormat(適用開始文字位置,終了文字位置,TF名);

■プロパティ
	font		//フォント名
	size		//大きさ(ポイント)
	color		//色
	bold		//ボールド(B)
	italic		//イタリック(B)
	underline		//アンダーライン(B)
	align		//整列(left/center/right)
	leading		//行間
	url		//リンク先
	target		//ターゲット
	leftMargin	//左マージン
	rightMargin	//右マージン
	bullet		//箇条書き(リスト)(B)
	indent		//インデント
	blockIndent	//インデントの値?
	tabStops		//タブ(\t)の幅?

(B)のついているものはブール値。
?のついているものはよくわかってない。

ムービークリップ(スプライト)

ムービークリップ(スプライト)に関する処理一覧

■作成
	createEmptyMovieClip("名前",深度);

■複製
	duplicateMovieClip(複製元MCのパス,"複製後の名前",深度);
	attachMovie("スプライト名","複製後の名前",深度);

■削除
	MC名.removeMovieClip();

■マスク
	マスクするMC名.setMask(マスク用MCのパス);

■フレーム制御
	MC名.Play();
	MC名.Stop();
	MC名.gotoAndPlay(フレーム);
	MC名.gotoAndStop(フレーム);
	MC名.gotoAndPlay("ラベル名");
	MC名.gotoAndStop("ラベル名");
	MC名.nextFrame();
	MC名.prevFrame();

attachMovieを使う場合は、目的のスプライトをイベントに一度でも配置しておくこと。
"スプライト名" は、アイテムリストのスプライトのプロパティで設定されている「スプライト名」。

深度

深度に関する処理一覧

■深度を取得
	MC名.getDepth();			//深度を取得

■深度を変更
	MC名.swapDepths(深度);		//深度を変更する
	MC名.swapDepths(入れ替えるMCのパス);	//MC同士の深度を入れ替える

■その他
	getNextHighestDepth();		//次に利用可能な深度 なんかうまく使えないっぽい
	getInstanceAtDepth(深度);		//指定の深度にMCがあるかどうか 無ければundefinedが返る

利用可能な深度は、-16384~1048575。
ParaFlaで配置したオブジェクトは、ParaFlaでの深度0が、-16127に相当する。
負の深度にあるMCは、removeMovieClip()では消去できないため、
ParaFlaで配置したオブジェクトには、removeMovieClip()は通用しない。
ただしswapDepthsを使って深度を正の値にしてしまうことで、
ParaFlaで配置したオブジェクトをASで消去することができる。

外部ファイルの読み込み

外部のテキストファイルの読み込み。

■ファイルの読み込み
	System.useCodepage = true;
	loadVariables("ファイルのパス",読み込む場所);

■数値化
	変数名 = Number(変数名);

★読み込みチェック例
	[textfile]
		hoge1=xxx&hoge2=xxx&hoge3=xxx&...&check=1	//最後尾にcheck=1を記述
	[frame1]
		check = "0";
		loadVariables(xxx);	//読み込み
	[frame2]
		if(check == "0"){gotoAndPlay(_currentframe-1);}

パスはswfファイルからの相対パス。
製作中は_preview.swfからのパスになるので、ParaFla上のメニューから
[プレビュー] → [プレビューの設定] → [プレビューファイルをプロジェクトのフォルダに作成] をチェック。
loadVariables()の「読み込む場所」は、_rootとかthisとか。

swfやjpg、pngなんかの場合は、空のスプライトを作り、フレームアクションに記述。

■読み込み
	loadMovie("ファイルのパス", this);

■消去
	unloadMovie();		//loadMovieでロードしたムービーや画像を消去

ローカルデータの扱い

SharedObjectでのローカル領域の利用。

■共有オブジェクトの作成/読み込み
	インスタンス名 = SharedObject.getLocal("識別名");

■保存(共有オブジェクトのインスタンス名をsoとする)
	so.data.保存する変数名 = 保存する値(変数);
	so.flush();	//書き込み処理、成功:true/失敗:false

■読み込み
	変数名 = so.data.保存した変数名;

■削除
	so.clear();

■データサイズを取得
	so.getSize();

★保存例
	so = SharedObject.getLocal("game");	//作成
	so.data.highscore = _root.highscore;	//ハイスコア
	so.data.bgm = _root.bgm;		//BGMのON/OFF状態
	so.data.check = 1;			//チェック用変数
	so.flush();

★読み込み例
	so = SharedObject.getLocal("game");	//読み込み
	if(so.data.check != 1){		//データ存在チェック
		trace("データなし");
	}else{
		_root.highscore = so.data.highscore;
		_root.bgm = so.data.bgm;
	}

★削除例
	so = SharedObject.getLocal("game");
	so.clear();

★保存場所の指定
	so = SharedObject.getLocal("game","/");	//ドメインのルートディレクトリに保存

SharedObjectとしてディスクに保存されるsolファイルは、
swfファイルのアドレスごとに管理されているため、swfファイルを移動してアドレスが変わると
元のsolを読み込むことはせず、新しいアドレスで新たにローカルデータを作成する。
これを防ぐには、「★保存場所の指定」のように保存場所としてルートディレクトリを指定すれば、
同じドメイン内であればswfファイルがどこにあっても同じデータを呼び出せる。

カラーオブジェクト

MCの色に関する処理

■カラーオブジェクトの作成
	OBJ名 = new Color(対象MC名);

■対象MCに色をつける
	OBJ名.setRGB(0xRRGGBB);

上はMCにベタに色をつける場合。

サウンドオブジェクト

サウンドに関する処理

■サウンドオブジェクトの作成
	OBJ名 = new Sound(対象MC名);

■サウンドアイテムを割り当てる
	OBJ名.attachSound("サウンド名");	//サウンド名=アイテム欄で指定するオブジェクト名

■再生
	OBJ名.start(開始位置);	//ミリ秒

■停止
	OBJ名.stop();

■ボリューム
	OBJ名.setVolume(数値);	//100が基準?

■ループ関数
	OBJ名.onSoundComplete = function(){	//最後まで再生されたときの処理
		this.start();		//最初から再生する
	};

■その他
	OBJ名.position		//再生位置(ミリ秒、値はあまり信用できない?)
	OBJ名.duration		//継続時間?
	OBJ名.getBytesLoaded()
	OBJ名.getBytesTotal()
	OBJ名.getPan()/setPan()		//左右のバランスの設定
	OBJ名.getTransform()/setTransform()	//左右各チャンネルの値を設定
	OBJ名.getVolume()/setVolume()
	OBJ名.loadSound()
	

空のMCを用意し、そこのクリップアクションに記述する。(対象MCはthis)

数学関数(Math)

数学関数一覧

■メソッド
	Math.round(数値)	小数点以下を四捨五入する
	Math.floor(数値)	小数点以下を切り捨てる
	Math.ceil(数値)	小数点以下を切り上げる
	Math.random()	[0<=x<1]の範囲でランダムに値を求める
	Math.abs(数値)	絶対値を求める
	Math.sqrt(数値)	平方根を求める
	Math.pow(数値,指数)	べき乗を求める
	Math.max(数値1,数値2)	2値を比較し、大きい方を返す
	Math.min(数値1,数値2)	2値を比較し、小さい方を返す

	Math.exp(数値)	指数値を求める
	Math.log(数値)	自然対数を求める
	Math.sin(数値)	サインを求める
	Math.cos(数値)	コサインを求める
	Math.tan(数値)	タンジェントを求める
	Math.asin(数値)	アークサインを求める
	Math.acos(数値)	アークコサインを求める
	Math.atan(数値)	アークタンジェントを求める
	Math.atan2(?)	X軸から点までの角度を求める?

■プロパティ
	Math.PI		円周率(π)
	

左辺にevalが使えない

Flash5以降では左辺にはevalを使えないので、配列アクセス演算子を使う。

(例1)
	× eval("_root.mc.obj"+i) = "test";
	○ _root.mc["obj"+i] = "test";

(例2)
	× eval("data"+num) = value;
	○ this["data"+num] = value;

SharedObject管理関数

ローカルデータの扱いに関する関数(フレームアクションに記述)
保存 saveSO(変数名,値);
読込 loadSO(変数名,存在しなかった場合の値);
消去 deleteSO();

//識別名
	so_name = "保存データの名前";
//保存場所
	so_dir = "ドメインルートからのパス?";

//保存
_global.saveSO = function(name,value){		//(変数名,値)
	so = SharedObject.getLocal(so_name,so_dir);	//呼び出し
	so.data[name] = value;			//データを保存
	so.flush();
};

//読み込み
_global.loadSO = function(name,def){			//(変数名,初期値)
	so = SharedObject.getLocal(so_name,so_dir);	//呼び出し
	value = eval("so.data."+name);		//データを保存
	if(value == undefined){value = def;}		//なければ初期値
	return value;
};

//消去
_global.deleteSO = function(){
	so = SharedObject.getLocal(so_name,so_dir);	//呼び出し
	so.clear();
};

オブジェクト複製関数(配列の完全コピー)

オブジェクトをコピーしたいとき、代入しようとしても参照されてしまうらしく、
思うように複製することができない。
また、配列も二次元、三次元と複雑化すると、同様の現象が起こるぽい。
ので、オブジェクトの中身自体をちゃんと複製するための関数。

apuさんが作られたモノなのでここには書きません

いつも apuさんトコ の関数を使わせてもらってます。
ので、↑のリンクからDOWNLOADへ→下の方を探して、ありがたく頂いてください。


外部スクリプトファイル

外部のスクリプトファイルの読み込み。

	#FILE "ファイルのパス"

パスの優先順位: pflファイルからの相対パス → parafla.exeからの相対パス

1つのフレームアクション、または1つのイベントハンドラにつき、1ファイル。
フレームアクション、またはイベントハンドラ全体を読み込む場合は、
#FILE文を一行だけ記述。その他のスクリプトは一切書かない。
個々のイベントハンドラを読み込む場合は、
「on(){}またはonClipEvent(){}」と「区切りのハイフン(-)」の間に#FILE文。

SWF4のスクリプト書式

ParaFlaでSWF4を扱う場合には、本家FLASH4やFlashLiteの書式はそのまま使えない。

■プロパティ
	x,y,alpha,・・・	//プロパティは、アンダーバー(_)抜きで扱う。

■文字列の扱い
	&		//結合。FLASH4「add」にあたる。「+」は数値専用で、文字列には使えない。
	===		//比較演算子。FLASH4「eq」にあたる。「==」は数値専用。
	!==		//比較演算子。FLASH4「ne」にあたる。「!=」は数値専用。

■ターゲットパス
	tellTarget("~"){};	//「with」にあたる。MC内部にアクセスできる。
				//プロパティへのアクセスのみ、ドットシンタクスが使用可能。
	/	//スラッシュシンタクス。MCをまたぐ場合に使用。
	/:	//「_root」にあたる。

	  ★例----------
		//mc1.obj.hensuu に _root.hoge を代入
		tellTarget("/mc1/obj"){
			hensuu = /:hoge;
		};
	
		//mc3._x に mc3.obj._x を代入する
		mc3.x = /mc3/obj.x;

■evalの扱い
	("hensuu" & i) = hoge;		//左辺の場合、evalを省く。
	hoge = valueOf("hensuu" & i);	//右辺の場合、valueOfを使う。

■使用できる制御構造(readme.txtより転載)
	for()
	while()
	do ~ while()
	switch() case
	if() ~ else
	tellTarget()

■使用できる関数(readme.txtより転載)
	random(num)
	time()
	length(str)
	int(num)
	concat(str1,str2)
	duplicateClip(target, new, depth)
	removeClip(target)
	startDrag(target, lock, [left, right, top, bottom])
	stopDrag()
	ord(num)
	chr(num)
	callFrame(label)
	getURL(url, window, [method])
	loadMovie(url, level, [method])
	loadVariables(url, level, [method])
	substr

  (Flash Lite関数)
	FSCommand(str1,str2)
	FSCommand2(str1,str2...)

  (SWF3関数群)
	nextFrame()
	prevFrame()
	play()
	stop()
	toggleQuality()
	stopSounds()
	gotoFrame(num or label)
	gotoAndPlay(num or label)
	frameLoaded(num)
	setTarget(target)

固定画面が変わらない?

以下のような状態の時、
ラベルA→ラベルB、ラベルA→ラベルC、ラベルB→ラベルC
などは問題ないが、
ラベルB→ラベルA、ラベルC→ラベルA
などのラベルジャンプを行った場合、スプライトを配置した固定画面が変わらない事がある。
(frame1であるにもかかわらず、画面にはスプライトBやスプライトCが表示される。)

	frame1	■ラベルA
		画像を消去:0
		固定画面[0] スプライトA
		停止
	frame2	■ラベルB
		画像を消去:0
		固定画面[0] スプライトB
		停止
	frame3	■ラベルC
		画像を消去:0
		固定画面[0] スプライトC
		停止

簡単な対策は、画像消去と固定画面の間に「何もしない:1フレーム」を挟む事だが、
アニメーションさせる場合などは、何も表示のないフレームが生じてしまう。
それが困る場合は、以下のようにして各々の固定画面の深度を変更することで回避できる。

	frame1	■ラベルA
		固定画面[1] スプライトA
		停止
	frame2	■ラベルB
		画像を消去:1
		固定画面[2] スプライトB
		停止
	frame3	■ラベルC
		画像を消去:2
		固定画面[3] スプライトC
		停止

スプラッシュウィンドウ

ParaFla及びParaDrawの起動時に表示されるスプラッシュウィンドウ。
これはそれぞれの実行ファイルと同じフォルダに、「parafla_splash.jpg」「paradraw_splash.jpg」というファイルを置くことで、オリジナルのスプラッシュ画面を設定できる。
画像サイズは295*74。くらい。


待ち受けに有効な命令

待ち受けに必要な情報を取得する命令一覧

■電波状態
命令:FSCommand2("GetSignalLevel");
 値 :0-4(圏外,0,1,2,3本)

■バッテリー残量
命令:FSCommand2("GetBatteryLevel");
 値 :0-3(残量:0-3)

■バッテリー源
命令:FSCommand2("GetPowerSource");
 値 :0-1(バッテリー電源,外部電源)

■時間(timeは変数名)
命令:FSCommand2("GetLocaleTime","time");
 値 :XX:XX:XX(時:分:秒)

■年
命令:FSCommand2("GetDateYear");
 値 :西暦

■月
命令:FSCommand2("GetDateMonth");
 値 :1-12

■日
命令:FSCommand2("GetDateDay");
 値 :1-31

■曜日
命令:FSCommand2("GetDateWeekday");
 値 :0-6(日曜-土曜)

■時
命令:FSCommand2("GetTimeHours");
 値 :0-23

■分
命令:FSCommand2("GetTimeMinutes");
 値 :0-59

■秒
命令:FSCommand2("GetTimeSeconds");
 値 :0-59

必要なだけテキストを配置し、必要な命令を毎フレーム実行することで、待ち受けとして機能する。
onClipEventが使えないので、ラベルループを使って毎フレーム実行する。
上記の命令はPC上では機能しないので、製作中はダミーデータを挿入しておく。

その他のFSCommand2

端末と連動させるためのコマンド

■入力テキストフィールドのオプション
書式:FSCommand2("SetInputTextType","txt","type");
補足:txtは変数名、typeは以下のいずれか。
   ・Numeric(数値のみ[0-9])
   ・Alpha(英文字のみ[A-Z/a-z])
   ・Alphanumeric(英数字のみ[0-9/A-Z/a-z])
   ・Latin(ラテン文字のみ)
   ・NonLatin(非ラテン文字のみ)
   ・NoRestriction(全て入力可)【デフォルト】

■画質指定
書式:FSCommand2("SetQuality","quality");
補足:qualityには以下のいずれかが入る。
   ・high
   ・medium
   ・low

■終了
書式:FSCommand2("Quit");



■バッテリー源
書式:FSCommand2("GetPowerSource");
 値 :0-1(バッテリー電源,外部電源)

■最大バッテリー
書式:FSCommand2("GetMaxBatteryLevel");
 
■バッテリー残量
書式:FSCommand2("GetBatteryLevel");
 値 :0-MAX

■最大音量
書式:FSCommand2("GetMaxVolumeLevel");

■音量
書式:FSCommand2("GetVolumeLevel");
 値 :0-MAX

■最大シグナル
書式:FSCommand2("GetMaxSignalLevel")

■シグナルレベル
書式:FSCommand2("GetSignalLevel");
 値 :0-MAX

■デバイスID
書式:FSCommand2("GetDeviceID","id")
補足:idは変数名。

■プラットフォーム
書式:FSCommand2("GetPlatform","pf")
補足:pfは変数名。

■デバイス(モデル名)
書式:FSCommand2("GetDevice","dv")
補足:dvは変数名。

■バイブレータ
書式:FSCommand2("StartVibrate",on,off,repeat);
補足:onは振動時間、offは非振動時間。ともにミリ秒で、0-5000(5秒まで)。
   repeatは繰り返し回数、最大3回。

■バイブレータの停止
書式:FSCommand2("StopVibrate");

機種により未対応の場合あり。

CA機(au)アイコン用ラウンチコマンド

auのCASIO機で使えそうなコマンド。
W31CAでのみ確認。

■フォト
fscommand("Launch", "photo");

■ムービー
fscommand("Launch", "movie");

■PCサイトビューアー
fscommand("Launch", "htmlviewer");

■PCドキュメントビューアー
fscommand("Launch", "pixelviewer");

■機能設定
fscommand("Launch", "M");

■データフォルダ
fscommand("Launch", "df");

■miniSD
fscommand("Launch", "memorycard");

■プレイヤー
fscommand("Launch", "player");

■アラーム
fscommand("Launch", "alarm");

■ツール
fscommand("Launch", "tools");

■エンジョイツール
fscommand("Launch", "enjoytool");

■履歴
fscommand("Launch", "history");

■QRコード
fscommand("Launch", "qr");

■メール
fscommand("Launch", "mail");

■カレンダー
fscommand("Launch", "calendar");

■メモ帳
fscommand("Launch", "notebook");

「履歴」は、w31CAでは動作せず。

アイコンDL用のHTML

アイコンはそのまま転送しても使えないので、
どこかにUPしてから携帯でDLする必要がある。
その際にHTMLタグの記述を正しくしないと、アイコンとして認識しない。

<object data="①URL" type="application/x-shockwave-flash" copyright="no" standby="②ボタンの文字">
<param name="disposition" value="③機種の識別記号" valuetype="data" />
<param name="size" value="④ファイルのサイズ" valuetype="data" />
<param name="title" value="pack" valuetype="⑤携帯上の表示ファイル名" />
</object>

①にはswfファイルのURLを入れる。
②にはボタン上に表示される文字を入れる。なんでも可。
③については後述。
④にはファイルの正確なサイズを入れる。swfを更新した際にはここも忘れずに書き換える。
⑤には携帯にDLしたあとで、端末側に表示されるファイル名(タイトル)を入れる。

③のdispositionには、機種ごとに異なった文字列を入れる必要がある。
以下の情報は、W31CA以外は未検証。

W41CA
→ ca33fl7k
W31CA
→ ca32fl7k
W21CA / W21CA-II
→ ca31fl7k
W41H
→ hi36fl7k
W32H
→ hi35fl7k
A5512CA / G'z One TYPE-R (aka A5513CA)
→ ca27fl7k
A5507SA / talby (aka A5508SA) / Sweets (aka A5510SA)
→ stfl01

カレンダースクリプト

カレンダーを表示して、今日の日付にマークを付けるスクリプト。

まず、マークの画像をスプライトに入れ、そのスプライトをルートに配置し、インスタンス名を「mark」とする。

次に、テキストアイテムをひとつ作る。
カレンダーに使用するフォントを選択し、ダイナミックテキストにチェック。変数名を「d」とする。
テキストには「0123456789」と数字を入れておき、幅・高さはサイズに合わせて大きめに設定する。
このテキストを複製して合計3つにし、それぞれ平日/赤い日/青い日に合わせて色を設定する。

そして、スプライトをひとつ作り、その中に今のテキストアイテムを上から [平日/赤い日/青い日] の順に配置する。
それぞれの下に「停止」を入れ、赤い日の所に「red」、青い日の所に「blue」のラベルを貼る。

そのスプライトをルートに配置し、インスタンス名を「c」とする。
ルートイベントにスクリプトを挿入し、以下をコピペ。

cx = 90;		//カレンダーのX座標・・・①
cy = 50;		//カレンダーのY座標
w = 20;		//マスの幅・・・②
h = 20;		//マスの高さ

//祝日設定・・・③
h1m1=1; h1m8=1; h2m12=1; h3m21=1; h4m30=1; h5m3=1; h5m4=1; h5m5=1;
h7m16=1; h9m17=1; h9m24=1; h10m8=1; h11m3=1; h11m23=1; h12m24=1;

//月設定・・・④
mn1="Jan"; mn2="Feb"; mn3="Mar"; mn4="Apr"; mn5="May"; mn6="Jun";
mn7="Jul"; mn8="Aug"; mn9="Sep"; mn10="Oct"; mn11="Nov"; mn12="Dec";

//設定ここまで----------------------------------

week=fscommand2("GetDateWeekday");
day=fscommand2("GetDateDay");
month=fscommand2("GetDateMonth");
year=fscommand2("GetDateYear");
m1=31; m2 = 28; m3=31; m4=30; m5=31; m6=30; m7=31; m8=31; m9=30; m10=31; m11=30; m12=31;
if(year/4==int(year/4)){m2=29;}
if(year/100==int(year/100)){m2=28;}
if(year/400==int(year/400)){m2=29;}
days=valueOf("m"&month);
mname=valueOf("mn"&month);
b = week-((day-int((day-1)/7)*7)-1);
if(b<0){b+=7;}

for(i=1; i<=/:days; i++){
	/:ti = i;
	duplicateClip(/c,("d"&i),i);

	tellTarget(("/d"&i)){
		this.x = /:cx + /:w * ((/:ti-1+/:b) - 7*int((/:ti-1+/:b) /7));
		this.y = /:cy + /:h * int((/:ti-1+/:b)/7);
		d = substr(this.name,2,2);
		if(1 == valueOf("/:h"&/:month&"m"&/:ti)){	//祝日設定
			gotoAndPlay("red");
		}else if(this.x == /:cx){
			gotoAndPlay("red");
		}else if(this.x == /:cx + /:w*6){
			gotoAndPlay("blue");
		}
		if(/:ti == /:day){
			/mark.x = this.x;
			/mark.y = this.y;
		}
	};
}
c.visible=0;

①にカレンダーの左上を基準点とする配置座標を入れる。
②はカレンダーの日付1マス分の大きさ。
③では、「h●m▲=1;」という書式で、「赤い日」を設定する。
 ここでいう赤い日とは、日曜日以外にカレンダーで赤く表示される日を指す。
 ●に月、▲に日を入れて、これを必要な分だけ記述する。
 なお、上のスクリプトでは2007年の「赤い日」を設定済み。
④では、「mn■="★";」という書式でそれぞれの月の表示名を設定する。
 ■に月、★にその月の表示名([1月]や[January]など)を入れる。
 ここで設定した文字は「mname」という変数に入るので、変数名「mname」のテキストを配置すれば表示できる。
 なお、埋め込みフォントを使う場合は、あらかじめ使用する文字を入力しておくのを忘れずに。
 必要なければ、月設定の部分を削除してしまってもOK。

黄色い枠を消す

ボタンなどを操作する時の黄色い枠を消すには、最初の方に以下のスクリプトを配置する。

this.focusrect = 0;

はみだし部分を隠す

SWF4では、描画メソッドもsetMaskも使用できないため、正攻法でいくしかなさそう(?)

Flashのサイズからはみ出して表示されてしまう部分を隠すには、
素直にステージの大きさの画像(pdr推奨)を用意して、それを全体にマスクする。
10*10の画像をひとつ用意しておけば、拡大して使うことでいろんなサイズに対応できるので便利。

やりかたわかんない人はコレ参考に。
⇒サンプル(pfl+pdr+swf)

携帯サイトのFlashボタン

携帯サイトでFlashを扱う場合、タグを用いてHTML等にswfを埋め込むと、Flash内のボタンにフォーカスできなくなる。
よって、Flashメニューなどを作って配置しても、他のページにリンクしたりはできない。
どうしてもFlash内でボタンやリンクを使用したい場合は、swfファイルに直接アクセスさせ、ページをまるごとFlashで作る必要がある。


フォント埋め込み用の文字一覧

半角英数記号(94)+非漢字(524)+JIS第一水準(2965)
ただし、機種依存文字と、いわゆる「半角カナ」を除く

abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789,./\;:@[]-^!"#$%&'()=~|`{}+*<>?_ 

 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐
/\~∥|…‥‘’“”()〔〕[]{}〈〉《》「」『』【】+
-±×÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★
○●◎◇◆□■△▲▽▼※〒→←↑↓〓∈∋⊆⊇⊂⊃∪∩∧∨¬⇒
⇔∀∃∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬ʼn♯♭♪†‡¶◯012
3456789ABCDEFGHIJKLMNOPQRSTUVW
XYZabcdefghijklmnopqrstuvwxyzぁ
あぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞた
だちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽ
まみむめもゃやゅゆょよらりるれろゎわゐゑをんァアィイゥウェエ
ォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテ
デトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤ
ュユョヨラリルレロヮワヰヱヲンヴヵヶΑΒΓΔΕΖΗΘΙΚΛΜ
ΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσ
τυφχψωАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦ
ЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрсту
фхцчшщъыьэюя─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣
┳┫┻╋┠┯┨┷┿┝┰┥┸╂

亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎
或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移
維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引
飲淫胤蔭院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦
瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅
悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩
於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺
卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼
箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解
回塊壊廻快怪悔恢懐戒拐改魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害
崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚
角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且
鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪
姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶
翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願
企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄機帰毅気汽畿祈季稀紀
徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉
吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究
窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共
凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰
凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金
吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈掘窟
沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契
形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎
鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸
拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄
現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷
雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公
功効勾厚口向后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃
更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講
貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠
黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐
叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災
采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋
搾昨朔柵窄策索錯桜鮭笹匙冊刷察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三
傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士
始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞
詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔
辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞
舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取
守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周宗就州修愁拾洲秀
秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃
叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡
遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召
哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼
消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦
鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾
拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹
真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須
酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙
菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精
聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟
碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗
染潜煎煽旋穿箭線繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕
膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮
奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬
蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族
続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対
耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓
啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只叩但達辰奪脱巽竪辿棚谷狸鱈樽
誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談
値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽
昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢
朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌
追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃
貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓邸鄭釘鼎泥摘
擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田
電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐
塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩
藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得
徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇
鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日
乳入如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納
能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩
配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝
漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺
塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番
盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛
樋簸備尾微枇毘琵眉美鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百
謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏
瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武
舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤
扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑
箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母
簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋法泡烹砲縫胞芳萌蓬蜂褒訪
豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠
頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎
哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬
密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝
滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問
悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒諭輸唯佑
優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預
傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃
浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃
痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両
凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠
塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣
煉簾練聯蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎
六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕

Perlの構文チェック

そんな機能のついたエディタを使ってるのなら必要ないけど。
以下を2行目(Perlのパス指定の次の行)にコピペして、ブラウザでアクセス。

BEGIN{ $| = 1; print "Content-type: text/html\n\n"; open(STDERR, ">&STDOUT"); } 

必要なくなったら消しとく。
ローカルの場合はPerlのパスに注意。(#!C:/Perl/bin/perl)

かにかま

アルミホイルに間を空けて並べて包み、ほんのり焦げ色がつくまで焼く。
焼けたらとにかく熱いうちに食べる。