ささきち流 Suzuka & ParaDraw 講座
Suzuka & ParaDraw
TOP
PROFILE
ActionScript Editor
LINK
BBS


フリーのFlash作成ソフト SuzukaParaDraw でFlashな生活を楽しもうというサイトです。
更新履歴ティッカー サンプル&作成方法解説

 

 


サンプルダウンロード
PDRファイル・CSFファイル在中
「kousin.zip」 9.41 KB (9,641 バイト)



更新履歴ティッカー 作成方法解説

ParaDraw Ver.0.3a4 で作成した絵を,Suzuka Ver.0.6.5 でアニメーションさせています。

簡単な階層構造は次のようになっています。

 _root
  ├ link_btn (リンク用ボタンインスタンス)
  ├ my_musk (マスク用のスプライトインスタンス)
  └ mojiMC (テキストフィールドを入れたスプライトインスタンス)
     └ mojiTXT(テキストフィールド)

そして,フレーム1 には次のように書いています。

// ストップ
stop();
// カウント用変数 cnt の初期値を設定
var cnt = -1;
// ------
// Shift-JIS でロード
System.useCodepage = true;
// XMLインスタンスの作成
var myXML = new XML();
// 余分な空白などを削除
myXML.ignoreWhite = true;
// 更新データロード時の動作定義
myXML.onLoad = function() {
	// 変数 total に更新データのトータル数を取得
	_root.total = this.childNodes[0].childNodes.length;
	// 再生開始
	_root.play();
};
// キャッシュ参照防止策
// 今の時刻オブジェクトの作成
var myday = new Date();
// 1970年1月1日0時からのミリ秒数を取得
var mytime = myday.getTime();
// 外部更新データXML を XMLインスタンスにロード
myXML.load("kousin.xml"+"?num="+mytime);
// ------
// スクロール文字にマスクをかける
_root.mojiMC.setMask("_root.my_mask");

大きな流れは,外部「kousin.xml」を「myXML」というXMLインスタンスにロードして,
ロードが完了次第,_root の再生を開始させるということです。

キャッシュ参照防止策は,「kousin.xml」をキャッシュからロードしないようにしている処理です。
 myXML.load("kousin.xml");
で,外部XMLをロードしてもかまいませんが,ブラウザがキャッシュを参照した場合,XML を更新しても,その更新がFlash内に反映されないので,
kousin.xml というファイル名の後に ?=○○○○ という適当にでたらめな引数を加えてロードさせています。
○○○○ の部分はいつも変わるので,以前に表示させたファイルとは違うファイルだと認識されて,ブラウザは以前の kousin.xml のキャッシュを参照しなくなります。
キャッシュを防止するという策ではありません。キャッシュを参照させない策です。
なお,この策のため,SWFを直接開いても XML はロードされないと思います。
SWF を貼り付けた HTML をブラウザで開くと,XML はロードされると思います。
動作検証などは,ZIPファイル内の 「sample」フォルダ内のサンプルで行ってみてください。

また,SWF 内に埋めこまれていないテキストには,レイヤーのマスク機能ではマスクがかかりません。
したがって,
 // スクロール文字にマスクをかける
 _root.mojiMC.setMask("_root.my_mask");
という ActionScript によってテキストフィールド入りスプライトインスタンスにマスクをかけています。
テキストフィールドをスプライトの中に入れているのは,ActionScript でマスクをかけるためです。
setMask はMovieClipクラスのメソッドなので,テキストをMovieClip(スプライトインスタンス)の中に入れる必要があります。

 

フレーム2 には次のように書いています。

if(cnt<total-1){
	cnt++;
}else{
	cnt=0;
}
// 文字を表示
_root.mojiMC.mojiTXT.text = 
	myXML.childNodes[0].childNodes[cnt].firstChild.nodeValue;
// ボタンにリンクを設定
_root.link_btn.onRelease = function(){
	getURL(myXML.childNodes[0].childNodes[cnt].attributes.kousinURL);
};

これで,myXMLインスタンス内の XML データから,
順次表示データをテキストフィールドに表示させたり,ボタンのリンクするURLを変えています。

 

そして最終フレームには次のように書いています。

gotoAndPlay(2);

これで,フレーム1 には戻らず,フレーム2-最終フレーム間の再生がループされ,XML のデータが順次 Flash に反映され続けます。