ファイルの読み込みについて
読み込み可能なフォーマットについて
■バージョンごとに読み込み可能なファイルフォーマットの一覧
Flash のバージョンごとに対応しているフォーマットの一覧です。
Flash バージョン | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
SWF | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
TXT(専用書式)(AS1.0 & 2.0) | × | ○ | ○ | ○ | ○ | ○ | ○ |
XML | × | × | ○ | ○ | ○ | ○ | ○ |
CSS | × | × | × | × | ○ | ○ | ○ |
JPEG(ノンプログレッシブ) | × | × | × | ○ | ○ | ○ | ○ |
JPEG(プログレッシブ) | × | × | × | × | × | ○ | ○ |
GIF | × | × | × | × | × | ○ | ○ |
アニメーションGIF | × | × | × | × | × | △ | △ |
PNG | × | × | × | × | × | ○ | ○ |
MP3 | × | × | × | ○ | ○ | ○ | ○ |
FLV(Sorenson Spark) | × | × | × | × | ○ | ○ | ○ |
FLV(On2 VP6) | × | × | × | × | × | ○ | ○ |
MP4(H.264/HE-AAC) | × | × | × | × | × | × | ○ |
テキスト形式 | × | × | △ | △ | △ | △ | ○ |
バイナリ形式(AS3.0) | × | × | × | × | × | × | ○ |
TXTファイルを読み込みたい
■テキストのフォーマットについて
テキストファイルを読み込むためには、テキストファイルの中身を「application/x-www-form-urlencoded」形式にする必要があります。
変数名とデータをセットにして記述します。下が記述例です。空白や改行はデータの一部に含まれるので注意して下さい。
変数名が text 、 データが "表示テスト"(テキストの中身)
text=表示テスト
複数のデータを記述したい場合は、& で区切ります。下が記述例です。
複数のデータを & で区切って記述する(テキストの中身)
data1=123&data2=abc&data3=表示テスト
Flash 6 以降から使用できる LoadVars クラスを使用するとテキストファイルをそのまま読み込む事も可能です。
■テキストの読み込み先である Flash 上の場所について
テキストファイルの読み込みに成功すると、変数が作成されデータが代入されます。
例えば『text=表示テスト』と記述されたテキストファイルを _root に 読み込むと、_root.text という変数が作成され 文字列 "表示テスト" が代入されます、
例えば『text=表示テスト』と記述されたテキストファイルを _root に 読み込むと、_root.text という変数が作成され 文字列 "表示テスト" が代入されます、
読み込む先は、ムービークリップ上のどこのターゲットでも可能です。また、ムービークリップ以外にも _level という16段階用意された階層にも読み込む事が可能です。
■_level 階層について
_level 階層は、外部から読み込んだデータを格納する為に用意されている領域です。16 段階 (_level0 ~ _level15) まで存在します。
level0 が _root にあたります。数値が高いほど手前になります。
_level0 階層に絶対パスでアクセスする場合は、_level0. と記述します。
_level2 の _x,_y プロパティにアクセスする
_level2._x = 100;
_level2._y = 200;
■文字データから数値データに変換する
テキストファイルを読み込んだ場合すべて文字型として扱われます。数値として使用したい場合は、 parseFloat() 関数を使って数値型に変換します。
文字型から数値型に変換する
var str = "123.45";
var num = parseFloat(str);
■文字データから配列データに変換する
文字列を指定した文字ごとに区切って配列に格納することも可能です。String クラスの split メソッドを使用すると、指定した文字ごとに区切って配列に順番に格納してくれます。
ただし、配列の各データは文字列のままなので数値として使用する場合は注意してください。カンマで区切った文字列を配列に変換する例です。
カンマで区切られた文字列をそれぞれ配列に格納する
var str = "123,abc,test,テスト";
var ary = str.split(",");
■文字化けを防止する
Flash 5 以前では、「 Flash Player 内部の文字コード」が「 OS 内部の文字コード」と同じものになります。例えば、英語版の Windows XP では "CP1252"、日本語版の Windows XP では "Shift-JIS" となります。
Flash 6 以降では、「 Flash Player 内部の文字コード」が「UTF-8」 となります。
Flash 5 以前の場合、テキストファイルの文字コードを Shift-JIS にします。
Flash 6 以降の場合、テキストファイルの文字コードを UTF-8 にします。
Flash 6 以降で、どうしても Shift-JIS のテキストファイルを読み込む場合は、 System.useCodePage プロパティを true に変更します。
コードページを有効にすると、「テキストファイルの文字コード」を「 OS 内部の文字コード」と同じものと解釈します。(日本語版の Windows XP では "Shift-JIS")
「OS 内部の文字コード」と同じ文字コードとして解釈する
System.useCodepage = true;
■テキストファイルを読み込む
テキストファイルを読み込む方法は、3 通りあります。バージョンが上がるにつれて、読み込み状況を詳細に把握する事ができます。
■Flash 4 以降の場合
Flash 4 では、loadVariables 関数 と loadVariablesNum 関数を使用することができます。
■loadVariables 関数を使用する
loadVariables 関数を使用すると、指定したムービークリップにテキストを読み込む事ができます。
loadVariables ( "テキストファイルまでの相対パスか URL" , ターゲットパス);
第01引数 | テキストファイルまでの相対パスか URL |
第02引数 | 読込先であるFlash上のターゲットパス |
第03引数(略可) | "GET" か "POST" |
戻り値 | なし |
http://hakuhin.jp/text.txt を _root に読み込む(URL 指定)
loadVariables ("http://hakuhin.jp/text.txt" , _root);
相対パス指定で ../text/test.txt を _root に読み込む(相対パス指定)
loadVariables ("../text/test.txt" , _root);
■loadVariablesNum 関数を使用する
loadVariablesNum 関数を使用すると、指定した _level 階層にテキストを読み込む事ができます。
loadVariablesNum ( ターゲットパス , 数値を指定);
第01引数 | テキストファイルまでの相対パスか URL |
第02引数 | 0 ~ 15 までの数値を指定 |
第03引数(略可) | "GET" か "POST" |
戻り値 | なし |
http://hakuhin.jp/text.txt を _level0 に読み込む(URL 指定)
loadVariablesNum ("http://hakuhin.jp/text.txt" , 0);
../text/test.txt を _level1 に読み込む(相対パス指定)
loadVariablesNum ("../text/test.txt" , 1);
■読み込み状況を調べる
Flash 4 では、読み込み状況や読み込みエラーを調べる事はできません。読み込まれる変数名を常に監視して、変更があれば読み込みが完了した事がわかります。
例えば『str=表示テスト』と書かれたテキストが、_rootへ読み込まれたか調べたいとします。読み込みを開始する前にあらかじめ_root.str 変数をnull にしておきます。
読み込みを開始したら、_root.str 変数の中身へ格納されたか常にチェックします。
■Flash 5 以降の場合
Flash 5 では、ムービークリップクラスに loadVariables() メソッドが追加されました。loadVariables 関数と同じ動作をします。_level 階層に読み込みたい場合は、従来どおり loadVariablesNum 関数を使用します。
■loadVariables メソッドを使用する
テキストファイルを読み込みたいムービークリップ先から loadVariables() メソッドを使用すると、呼び出したムービークリップにテキストを読み込む事ができます。このメソッドを使って _level 階層に読み込む事はできません。
ムービークリップ.loadVariables ("テキストファイルまでの相対パスか URL");
第01引数 | テキストファイルまでの相対パスか URL |
戻り値 | なし |
http://hakuhin.jp/text.txt を _root に読み込む(URL 指定)
_root.loadVariables ("http://hakuhin.jp/text.txt");
相対パス指定で ../text/test.txt を _root に読み込む(相対パス指定)
_root.loadVariables ("../text/test.txt");
■読み込み状況を調べる
Flash 5 では、読み込み状況や読み込みエラーを調べる事はできません。読み込まれる変数名を常に監視して、変更があれば読み込みが完了した事がわかります。
例えば『str=表示テスト』と書かれたテキストが、任意のムービークリップへ読み込まれたか調べたいとします。読み込みを開始する前にあらかじめ str 変数をnull にしておきます。
読み込みを開始したら、str 変数の中身へ格納されたか常にチェックします。
読み込みたいテキストファイル (test.txt)
data=読み込みテスト
読み込み状況を調べる
onClipEvent (load) {
var step = 0; // 状態遷移
var time = 1000; // タイムアウトカウント
data = null; // 読み込まれる変数をあらかじめNULLとする
// 読み込み開始 --------
this.loadVariables("test.txt");
}
onClipEvent (enterFrame) {
// 読み込み中 ----------
if (step == 0) {
if (data) {
trace("読み込み完了");
step = 1;
} else if (-- time < 0) {
trace("タイムアウトエラー");
step = 1;
}
// 読み込み終了後 ------
} else if (step == 1) {
}
}
■Flash 6 以降の場合
Flash 6 では、テキストファイルを読み込むための LoadVars クラスが追加されました。このクラスを使用するとロード状況の把握だけでなく
読み込みに失敗しているかも調べる事ができます。
1.LoadVars クラスを使用する
まず、LoadVars クラスをインスタンス化します。
LoadVars オブジェクトを作成する
var vars = new LoadVars ();
2.読み込みを開始する
テキストファイルの読み込みを開始するには load() メソッドを使用します。引数に テキストファイルまでの URL か相対パスを文字列で指定します。
http://hakuhin.jp/test.txt を読み込む
var vars = new LoadVars ();
vars.load("http://hakuhin.jp/test.txt");
../text/test.txt を読み込む
var vars = new LoadVars ();
vars.load("../text/test.txt");
3.読み込み状況を把握する
どれだけ読み込まれたかバイト数で調べたい場合は、getBytesLoaded() メソッド 、ファイルの総バイト数が知りたい場合は、getBytesTotal() メソッドを使用します。
読み込み状況を調べる
var vars = new LoadVars();
vars.load("test.txt");
onEnterFrame = function (){
trace("読込" + vars.getBytesLoaded());
trace("全体" + vars.getBytesTotal());
trace("パーセント" + Math.floor(vars.getBytesLoaded() / vars.getBytesTotal() * 100));
};
読み込みが完全に終了して変数にアクセスできるか知りたい場合は、onLoad イベントを使用します。
読み込みが成功したか調べる
var vars = new LoadVars();
vars.load("test.txt");
vars.onLoad = function (check){
if(check){
trace("読み込みが完了して変数にアクセスが可能");
}else{
trace("読み込み失敗");
}
};
404 などのHTTPステータスを取得したい場合は、onHTTPStatus イベントを使用します。(Flash 8 以降)
HTTPステータスを取得
var vars = new LoadVars();
vars.load("test.txt");
vars.onHTTPStatus = function (code){
trace(code);
};
4.読み込んだデータにアクセスする
読み込みが成功した場合、LoadVars オブジェクトのプロパティにデータが追加されます。例えば『str=表示テスト』というテキストファイルを読み込んだなら、str というプロパティが作られ、"表示テスト" が代入されます。
読み込んだデータはLoadVars オブジェクトのプロパティとして作成される
trace(vars.str);
テキストファイルをそのまま読み込みたい場合は、onData イベントを使用します。ただしこのイベントを使用すると onLoad イベントが使用できなくなるので注意して下さい。
テキストファイルを読み込んだデータをそのまま取得する
var vars = new LoadVars();
vars.load("test.txt");
vars.onData = function (buf){
if(buf != null){
trace(buf);
}else{
trace("エラー");
}
};
XMLファイルを読み込みたい
1.XMLクラスを使用する
XMLファイルを読み込むためには、XML クラスを使用します。
XML クラスをインスタンス化する
var xml_obj = new XML();
読み込むXMLファイルに含まれる空白や改行を無視したい場合は、ignoreWhite プロパティを true に変更します。
空白や改行を無視する
var xml_obj = new XML();
xml_obj.ignoreWhite = true;
文字化けを防止する
Flash 5 以前では、「 Flash Player 内部の文字コード」が「 OS 内部の文字コード」と同じものになります。例えば、英語版の Windows XP では "CP1252"、日本語版の Windows XP では "Shift-JIS" となります。
Flash 6 以降では、「 Flash Player 内部の文字コード」が「UTF-8」 となります。
Flash 5 以前の場合、XMLファイルの文字コードを Shift-JIS にします。
Flash 6 以降の場合、XMLファイルの文字コードを UTF-8 にします。
Flash 6 以降で、どうしても Shift-JIS のXMLファイルを読み込む場合は、 System.useCodePage プロパティを true に変更します。
コードページを有効にすると、「XMLファイルの文字コード」を「 OS 内部の文字コード」と同じものと解釈します。(日本語版の Windows XP では "Shift-JIS")
「OS 内部の文字コード」と同じ文字コードとして解釈する
System.useCodepage = true;
2.XMLファイルを読み込む
XMLファイルの読み込みを開始するには、load() メソッドを使用します。引数にXMLファイルまでの URL か相対パスを指定します。
http://hakuhin.jp/test.xml を読み込む
var xml_obj = new XML();
xml_obj.ignoreWhite = true;
xml_obj.load("http://hakuhin.jp/test.xml");
../text/test.xml を読み込む
var xml_obj = new XML();
xml_obj.ignoreWhite = true;
xml_obj.load("../text/test.xml");
3.読み込み状況を把握する
読み込みが完全に終了して変数にアクセスできるか知りたい場合は、onLoad イベントを使用します。また、status プロパティからエラーの詳細を把握する事ができます。
読み込みが成功したか調べる
var xml_obj = new XML();
xml_obj.ignoreWhite = true;
xml_obj.load("test.xml");
xml_obj.onLoad = function (check){
if(check){
trace("読み込みが完了して変数にアクセスが可能");
}else{
trace("読み込み失敗");
}
if (xml_obj.loaded) {
trace("load()を使った読み込み終了");
} else {
trace("load()を使った読み込み失敗");
}
if(xml_obj.status == 0){
trace("解析が正常に終了しました。");
}else if(xml_obj.status == -2){
trace("CDATA セクションが適切に終了されていません。");
}else if(xml_obj.status == -3){
trace("XML 宣言が適切に終了されていません。");
}else if(xml_obj.status == -4){
trace("DOCTYPE 宣言が適切に終了されていません。");
}else if(xml_obj.status == -5){
trace("コメントが適切に終了されていません。");
}else if(xml_obj.status == -6){
trace("XML エレメントの形式が正しくありませんでした。");
}else if(xml_obj.status == -7){
trace("メモリ不足です。");
}else if(xml_obj.status == -8){
trace("属性値が適切に終了されていません。");
}else if(xml_obj.status == -9){
trace("開始タグに対応する終了タグがありません。");
}else if(xml_obj.status == -10){
trace("対応する開始タグのない終了タグが見つかりました。");
}
};
どれだけ読み込まれたかバイト数で調べたい場合は、getBytesLoaded() メソッド 、ファイルの総バイト数が知りたい場合は、getBytesTotal() メソッドを使用します。(Flash 6 以降)
読み込み状況を調べる(Flash 6 以降)
var xml_obj = new XML();
xml_obj.load("test.xml");
onEnterFrame = function (){
trace("読込" + xml_obj.getBytesLoaded());
trace("全体" + xml_obj.getBytesTotal());
trace("パーセント" + Math.floor(xml_obj.getBytesLoaded() / xml_obj.getBytesTotal() * 100));
};
404 などのHTTPステータスを取得したい場合は、onHTTPStatus イベントを使用します。(Flash 8 以降)
HTTPステータスを取得
var xml_obj = new XML();
xml_obj.ignoreWhite = true;
xml_obj.load("test.xml");
xml_obj.onHTTPStatus = function (code){
trace(code);
};
4.データを取り出す
XML オブジェクトから文字列としてデータを取得したい場合は、toString() メソッドを使用します。
読み込みが成功したか調べる
var xml_obj = new XML();
xml_obj.ignoreWhite = true;
xml_obj.load("test.xml");
xml_obj.onLoad = function (check){
trace(xml_obj.toString());
};
XML ファイルをテキストとしてそのまま読み込みたい場合は、onData イベントを使用します。ただしこのイベントを使用すると onLoad イベントが使用できなくなるので注意して下さい。
XML ファイルを読み込んだデータをそのまま取得する
var xml_obj = new XML();
xml_obj.ignoreWhite = true;
xml_obj.load("test.xml");
xml_obj.onData = function (buf){
if(buf != null){
trace(buf);
}else{
trace("エラー");
}
};
5.データを解析する
■ XML オブジェクトからオブジェクト型へ変換する
XML オブジェクトから Object 型でデータを取得したい場合の例です。
XML ファイルの記述例
<XML>
<DATA1>データ1</DATA1>
<DATA2>データ2</DATA2>
<DATA3>
<CHILD1>123</CHILD1>
<CHILD2>456</CHILD2>
<CHILD3>789</CHILD3>
</DATA3>
</XML>
終了タグから次の開始タグまでにデータを入れないで下さい。属性は無視されます。
XML ファイルからオブジェクトに変換する
// --------------------------------------------------
function XmlToObject(xml){
return _XmlToObject(xml).value;
}
function _XmlToObject(node){
var i;
var obj = new Object()
var child = node.childNodes;
var l = child.length;
for(i=0;i < l;i++){
var cld = child[i];
if(cld.nodeType == 1){
var c = _XmlToObject(cld);
obj[c.name] = c.value;
}else if(cld.nodeType == 3){
return {name : node.nodeName,value: cld.nodeValue};
}
}
return {name : node.nodeName,value: obj};
}
// --------------------------------------------------
var xml_obj = new XML();
xml_obj.ignoreWhite = true;
xml_obj.load("test.xml");
xml_obj.onLoad = function (check) {
if (xml_obj.loaded) {
var obj = XmlToObject(xml_obj);
}
};
■ Object 型から XML オブジェクトへ変換する
Object 型からXMLオブジェクトに変換する場合の例です。
オブジェクト型の記述例
var obj = {
data1 : "データ1",
data2 : "データ2",
data3 : {
CHILD1 : 123,
CHILD2 : 456,
CHILD3 : 789
}
};
オブジェクトはObject型と数値型、文字型の変数のみで構成してください。
オブジェクトからXML オブジェクトに変換する
// --------------------------------------------------
function XmlFromObject(obj){
var my_xml = new XML();
_XmlFromObject(obj,my_xml);
return my_xml;
}
function _XmlFromObject(obj,node){
for(name in obj){
var value = obj[name];
if(typeof(value) == "object"){
var element = new XMLNode(1,name);
_XmlFromObject(value,element);
node.appendChild(element);
}else{
var element = new XMLNode(1,name);
var text = new XMLNode(3,value);
element.appendChild(text);
node.appendChild(element);
}
}
return node;
}
// --------------------------------------------------
var obj = {
data1 : "データ1",
data2 : "データ2",
data3 : {
CHILD1 : 123,
CHILD2 : 456,
CHILD3 : 789
}
};
var xml_obj = XmlFromObject(obj);
trace(xml_obj);
CSS ファイルを読み込みたい(Flash 7 以降)
サンプルをダウンロード
1.StyleSheet クラスを使用する
CSS ファイルを読み込んでテキストフィールドに反映する事ができます。
CSS ファイルを読み込むためには、TextField.StyleSheet クラスを使用します。
StyleSheet クラスをインスタンス化する(AS1.0)
var ss_obj = new TextField.StyleSheet();
StyleSheet クラスをインスタンス化する(AS2.0)
import TextField.StyleSheet;
var ss_obj : StyleSheet = new StyleSheet();
文字化けを防止する
Flash 5 以前では、「 Flash Player 内部の文字コード」が「 OS 内部の文字コード」と同じものになります。例えば、英語版の Windows XP では "CP1252"、日本語版の Windows XP では "Shift-JIS" となります。
Flash 6 以降では、「 Flash Player 内部の文字コード」が「UTF-8」 となります。
Flash 5 以前の場合、CSSファイルの文字コードを Shift-JIS にします。
Flash 6 以降の場合、CSSファイルの文字コードを UTF-8 にします。
Flash 6 以降で、どうしても Shift-JIS のCSSファイルを読み込む場合は、 System.useCodePage プロパティを true に変更します。
コードページを有効にすると、「CSSファイルの文字コード」を「 OS 内部の文字コード」と同じものと解釈します。(日本語版の Windows XP では "Shift-JIS")
「OS 内部の文字コード」と同じ文字コードとして解釈する
System.useCodepage = true;
2.CSS ファイルを読み込む
CSS ファイルの読み込みを開始するには、load() メソッドを使用します。引数にCSS ファイルまでの URL か相対パスを指定します。CSSファイルと swf ファイルは同じドメイン内に存在する必要があります。
http://hakuhin.jp/test.css を読み込む(AS1.0)
var ss_obj = new TextField.StyleSheet();
ss_obj.load("http://hakuhin.jp/test.css");
../text/test.css を読み込む(AS2.0)
import TextField.StyleSheet;
var ss_obj : StyleSheet = new StyleSheet();
ss_obj.load("../text/test.css");
3.読み込み状況を把握する
読み込みが完全に終了してデータにアクセスできるか知りたい場合は、onLoad イベントを使用します。
読み込みが成功したか調べる(AS1.0)
var ss_obj = new TextField.StyleSheet();
ss_obj.load("test.css");
ss_obj.onLoad = function (check){
if(check){
trace("読み込みが完了して変数にアクセスが可能");
}else{
trace("読み込み失敗");
}
};
読み込みが成功したか調べる(AS2.0)
import TextField.StyleSheet;
var ss_obj : StyleSheet = new StyleSheet();
ss_obj.load("test.css");
ss_obj.onLoad = function (check){
if(check){
trace("読み込みが完了して変数にアクセスが可能");
}else{
trace("読み込み失敗");
}
};
4.スタイルシートをテキストフィールドに反映する
読み込んだスタイルシートをテキストフィールドに反映するには、styleSheet プロパティにスタイルシートオブジェクトを渡します。
CSSファイルの記述例
.point{
font-size:14;
font-style:italic;
color:#0000AA;
}
.strong {
font-family: MS 明朝;
font-size: 24px;
font-weight: bold;
}
テキストフィールドにスタイルシートを反映する(AS1.0)
System.useCodepage = true;
var str = "<p class=\"point\">表示テスト1</p><p class=\"strong\">表示テスト2</p>";
// 表示用テキストフィールド
_root.createTextField("text_field", 0, 10, 10, 300, 200);
var tf = _root.text_field;
tf.border = true;
tf.wordWrap = true;
tf.html = true;
// スタイルシートを読み込んでテキストフィールドに適用
var ss_obj = new TextField.StyleSheet();
ss_obj.load("test.css");
ss_obj.onLoad = function (check) {
if (check) {
tf.styleSheet = ss_obj;
tf.htmlText = str;
}
};
テキストフィールドにスタイルシートを反映する(AS2.0)
import TextField.StyleSheet;
System.useCodepage = true;
var str : String = "<p class=\"point\">表示テスト1</p><p class=\"strong\">表示テスト2</p>";
// 表示用テキストフィールド
_root.createTextField("text_field", 0, 10, 10, 300, 200);
var tf : TextField = _root.text_field;
tf.border = true;
tf.wordWrap = true;
tf.html = true;
// スタイルシートを読み込んでテキストフィールドに適用
var ss_obj : StyleSheet = new StyleSheet();
ss_obj.load("test.css");
ss_obj.onLoad = function (check) {
if (check) {
tf.styleSheet = ss_obj;
tf.htmlText = str;
}
};
スタイルシートのデータを取り出す例です。
スタイルシートのデータをすべて取得する(AS1.0)
var ss_obj = new TextField.StyleSheet();
ss_obj.load("test.css");
ss_obj.onLoad = function (check){
if (check) {
var ss_name = ss_obj.getStyleNames();
for (var i = 0; i < ss_name.length; i++) {
var style = ss_name[i];
var obj = ss_obj.getStyle(style);
for (var data in obj) {
var value = obj[data];
trace("style:" + style);
trace("name:" + data);
trace("data:" + value);
trace("---")
}
}
}
};
スタイルシートのデータをすべて取得する(AS2.0)
import TextField.StyleSheet;
var ss_obj : StyleSheet = new StyleSheet();
ss_obj.load("test.css");
ss_obj.onLoad = function (check){
if (check) {
var ss_name : Array = ss_obj.getStyleNames();
for (var i = 0; i < ss_name.length; i++) {
var style : String = ss_name[i];
var obj : Object = ss_obj.getStyle(style);
for (var data in obj) {
var value : String = obj[data];
trace("style:" + style);
trace("name:" + data);
trace("data:" + value);
trace("---")
}
}
}
};
対応しているCSSプロパティ
プロパティ名 | 説明 |
text-align | 整列の設定。 "left" 左に整列 "right" 右に整列 "center" 中央に配置 "justify" 均等割り付け |
font-family | フォント名を優先度が高い順にカンマ区切りリストで指定 |
font-size | 文字のポイントサイズ |
color | 文字の色 (0xFFFFFF) |
font-weight | 太字にするか? "normal" なし "bold" 太字 |
font-style | 斜体にするか? "normal" なし "italic" 斜体 |
text-decoration | アンダーラインを表示するか? "none" なし "underline" アンダーライン |
margin-left | 段落の左マージン(単位:ピクセル) |
margin-right | 段落の右マージン(単位:ピクセル) |
letterSpacing | すべての文字間に均等に配分されるスペースの量(単位:ピクセル)[Flash 8 以降] |
text-indent | 折り返し行以外のインデント |
kerning | カーニングが有効か?(埋め込みフォント時のみ動作)[Flash 8 以降] |
SWF や画像ファイルを読み込みたい
サンプルをダウンロード
■SWF や画像を読み込む
外部から画像データや 別の swf ファイルを読み込んで、再生中の Flash Player 内に表示する事ができます。
■読み込み先である Flash 上の場所について
読み込む先は、ムービークリップ上のどこのターゲットでも可能です。
読み込み先のムービークリップに存在する中身は、読み込んできたリソースに置き換わり消滅します。読込先のローカル座標の原点にリソースの左上がちょうど一致するように配置されます。
また、ムービークリップ以外にも _level という16段階用意された階層にも読み込む事が可能です。
読み込み先のムービークリップに存在する中身は、読み込んできたリソースに置き換わり消滅します。読込先のローカル座標の原点にリソースの左上がちょうど一致するように配置されます。
■_level 階層について
_level 階層は、外部から読み込んだデータを格納する為に用意されている領域です。16 段階 (_level0 ~ _level15) まで存在します。
level0 が _root にあたります。数値が高いほど手前になります。
_level0 階層に絶対パスでアクセスする場合は、_level0. と記述します。
_level2 の _x,_y プロパティにアクセスする
_level2._x = 100;
_level2._y = 200;
■ swf ファイルを読み込む場合の注意点
外部 swf ファイル内で _root が使用されているとき、本体側の _root を参照するようになります。
例えば、外部 swf ファイル内で『 _root.aaa.bbb 』という絶対参照パスを使用しているとします。
また、本体 swf ファイル内では 『 _root.ccc.ddd 』という絶対参照パスをを使用しているとします。
本体の『 _root.ccc.ddd 』に外部 swf ファイルを読み込んだ場合、外部ファイルの『 _root.aaa.bbb 』の絶対参照パスは『 _root.ccc.ddd.aaa.bbb 』となり階層のズレが生じます。
Flash 6 以前の場合、ムービークリップに読み込むと階層のズレが発生します。
これを防止するために _level 階層に swf ファイルを読み込みます。 _level 階層に読み込んだ場合、各level のルートを参照するようになるので階層のズレが起こりません。
どうしてもムービークリップに読み込みたい場合は、外部 swf ファイル内のコンテンツはすべて this を使った相対参照で作るか、あらかじめ階層がずれる事を考慮して作る必要があります。
Flash 7 以降の場合、読み込み先のムービークリップの_lockroot プロパティを true に変更します。そこから下の階層で _root が使用されていた場合、_lockroot を指定したムービークリップを参照するようになるので階層のズレを防止する事ができます。
これを防止するために _level 階層に swf ファイルを読み込みます。 _level 階層に読み込んだ場合、各level のルートを参照するようになるので階層のズレが起こりません。
読み込み先ムービークリップ "_root.ccc.ddd" をルートとする(Flash 7 以降)
_root.ccc.ddd._lockroot = true;
■swf ファイルの再生速度の優先順位について
30fpsのムービーに、60fpsのムービーを読み込む
→ 30fpsで再生
60fpsのムービーに、30fpsのムービーを読み込む
→ 60fpsで再生
普通の30fpsムービーに、ストーリミングの60fpsムービーを読み込む
→ ストリーミングで60fps再生
普通の60fpsムービーに、ストーリミングの30fpsムービーを読み込む
→ ストリーミングで30fps再生
ストーリミングの30fpsムービーに、普通の60fpsムービーを読み込む
→ ストリーミングで30fps再生
ストーリミングの60fpsムービーに、普通の30fpsムービーを読み込む
→ ストリーミングで60fps再生
ストリーミングの30fpsムービーに、ストーリミングの60fpsムービーを読み込む
→ ストリーミングで60fps再生
ストリーミングの60fpsムービーに、ストーリミングの30fpsムービーを読み込む
→ ストリーミングで30fps再生
→ 30fpsで再生
60fpsのムービーに、30fpsのムービーを読み込む
→ 60fpsで再生
普通の30fpsムービーに、ストーリミングの60fpsムービーを読み込む
→ ストリーミングで60fps再生
普通の60fpsムービーに、ストーリミングの30fpsムービーを読み込む
→ ストリーミングで30fps再生
ストーリミングの30fpsムービーに、普通の60fpsムービーを読み込む
→ ストリーミングで30fps再生
ストーリミングの60fpsムービーに、普通の30fpsムービーを読み込む
→ ストリーミングで60fps再生
ストリーミングの30fpsムービーに、ストーリミングの60fpsムービーを読み込む
→ ストリーミングで60fps再生
ストリーミングの60fpsムービーに、ストーリミングの30fpsムービーを読み込む
→ ストリーミングで30fps再生
■画像 ファイルを読み込む場合の注意点
画像の読み込みは Flash 6 以降から対応しています。
Flash Player 6 以降では ノンプログレッシブ形式の JPEG ファイルを読み込んで表示する事ができます。
Flash Player 8 以降では、さらにプログレッシブ形式の JPEG、GIF、アニメーションGIF(1フレーム目のみ表示)、PNGファイルを読み込んで表示する事ができます。
これらのフォーマットに対応しているかどうかは、再生する Flash Player のバージョンによって決まります。(画像の読み込み自体は Flash 6 以降から)
■画像や SWF ファイルを読み込む
画像や SWF ファイルを読み込む方法は、3 通りあります。バージョンが上がるにつれて、読み込み状況を詳細に把握する事ができます。
■Flash 4 以降の場合
Flash 4 では、loadMovie 関数 と loadMovieNum 関数を使用することができます。
■loadMovie 関数を使用する
loadMovie 関数を使用すると、指定したムービークリップに画像や SWF ファイルを読み込む事ができます。
loadMovie ( "ファイルまでの相対パスか URL" , ターゲットパス);
第01引数 | ファイルまでの相対パスか URL |
第02引数 | 読込先であるFlash上のターゲットパス |
第03引数(略可) | "GET" か "POST" |
戻り値 | なし |
http://hakuhin.jp/text.swf を _root に読み込む(URL 指定)
loadMovie ("http://hakuhin.jp/text.swf" , _root);
相対パス指定で ../text/test.swf を _root に読み込む(相対パス指定)
loadMovie ("../text/test.swf" , _root);
■loadMovieNum 関数を使用する
loadMovieNum 関数を使用すると、指定した _level 階層に画像や SWF ファイルを読み込む事ができます。
loadMovieNum ( ターゲットパス , 数値を指定);
第01引数 | ファイルまでの相対パスか URL |
第02引数 | 0 ~ 15 までの数値を指定 |
第03引数(略可) | "GET" か "POST" |
戻り値 | なし |
http://hakuhin.jp/text.swf を _level0 に読み込む(URL 指定)
loadMovieNum ("http://hakuhin.jp/text.swf" , 0);
../text/test.swf を _level1 に読み込む(相対パス指定)
loadMovieNum ("../text/test.swf" , 1);
■Flash 5 以降の場合
Flash 5 では、ムービークリップクラスに loadMovie() メソッドが追加されました。loadMovie 関数と同じ動作をします。
■loadMovie メソッドを使用する
ファイルを読み込みたいムービークリップ先から loadMovie() メソッドを使用すると、呼び出したムービークリップに swf ファイルや画像を読み込む事ができます。
ムービークリップ.loadMovie ("テキストファイルまでの相対パスか URL");
第01引数 | テキストファイルまでの相対パスか URL |
戻り値 | なし |
http://hakuhin.jp/text.swf を _root に読み込む(URL 指定)
_root.loadMovie ("http://hakuhin.jp/text.swf");
相対パス指定で ../text/test.swf を _level1 に読み込む(相対パス指定)
_level1.loadMovie ("../text/test.swf");
■読み込み状況を調べる
Flash 5 以降では、getBytesLoaded() メソッドを使用すると読み込んでいるバイト数を調べる事ができます。getBytesTotal() メソッドを使用すると読み込む総バイト数を調べる事ができます。
一定時間たっても getBytesTotal() の結果が 0 だった場合、読み込みに失敗している可能性があります。
ロードが完了したか調べるには、onClipEvent (data) イベントを使用するといいでしょう。
ロードが完了したか調べるには、onClipEvent (data) イベントを使用するといいでしょう。
読み込み状況を調べる
onClipEvent (load) {
var step = 0;
loadMovieNum ("../text/test.swf" , 1);
}
onClipEvent (enterFrame) {
if(step == 0){
var load = _level1.getBytesLoaded();
var total = _level1.getBytesTotal();
var percent = Math.floor(load / total * 100);
trace("読込" + load);
trace("全体" + total);
trace("パーセント" + percent);
}
}
読み込みムービークリップ先にて onClipEvent (data) イベントを使用するとロードが完了したかわかります。
読み込みが完了したか調べる
onClipEvent (data) {
trace("読み込みが完了した。");
}
■Flash 7 以降の場合
Flash 7 では、swf ファイルと画像ファイルを読み込むための MovieClipLoader クラスが追加されました。このクラスを使用するとロード状況の把握だけでなく
読み込みに失敗しているかも調べる事ができます。
1.MovieClipLoader クラスを使用する
まず、MovieClipLoader クラスをインスタンス化します。
MovieClipLoader オブジェクトを作成する
var loader = new MovieClipLoader ();
2.読み込みを開始する
swf ファイルか画像ファイルの読み込みを開始するには loadClip () メソッドを使用します。第01引数に テキストファイルまでの URL か相対パスを文字列で指定します。第02引数に読み込み先であるターゲットパスを指定します。数値を指定すると _level 階層に読み込む事ができます。
MovieClipLoader.loadClip ( "テキストファイルまでの相対パスか URL" , ターゲットパス);
第01引数 | テキストファイルまでの相対パスか URL |
第02引数 | 読込先であるFlash上のターゲットパスか、0 ~ 15までの数値 |
戻り値 | URLリクエストが正常に送信された場合 true 、失敗した場合 false |
http://hakuhin.jp/test.swf を _root.mc 上に読み込む
var loader = new MovieClipLoader ();
loader.loadClip("http://hakuhin.jp/test.swf" , _root.mc);
../text/test.swf を _level1 に読み込む
var loader = new MovieClipLoader ();
loader.loadClip("../text/test.swf" , 1);
3.読み込み処理を中断する
読み込みを中断したり、読み込んだリソースを破棄したい場合は、unloadClip() メソッドを使用します。
読み込みを終了する
var loader = new MovieClipLoader ();
loader.loadClip("http://hakuhin.jp/test.swf" , 1);
loader.unloadClip();
読み込みを中断したときに「実はファイルが無くて読み込めなかった」等のエラーが発生しえた場合は、 unloadClip() を呼び出した後でもエラーの通知がされる事があります。
という事で『読み込みが開始されたか(onLoadStart)』、『エラーが通知されたか(onLoadError)』のどちらかを確認できるまでは、1つのムービークリップに対して別の読み込み処理を発生させない方がよさそうです。
4.読み込み状況を把握する
どれだけ読み込まれたかバイト数で調べたい場合は、getBytesLoaded() メソッド 、ファイルの総バイト数が知りたい場合は、getBytesTotal() メソッドを使用します。
読み込み状況を調べる
var loader = new MovieClipLoader ();
loader.loadClip("http://hakuhin.jp/test.swf" , 1);
onEnterFrame = function (){
trace("読込" + loader.getBytesLoaded());
trace("全体" + loader.getBytesTotal());
trace("パーセント" + Math.floor(loader.getBytesLoaded() / loader.getBytesTotal() * 100));
};
読み込みが終わった瞬間にアクセス可能です。
また、次に解説するイベントリスナーを使用して、読み込みに成功しているか失敗しているかを調べる事もできます。
■イベントハンドラを使用する
イベントハンドラを使用すると、ファイルの読み込みに成功したか、ファイルの読み込みに失敗したか、ファイルの読み込み状況の把握をする事ができます。
1.オブジェクトを作成
ここでは、load_obj という名前を付けます。
オブジェクト作成
var load_obj = new Object ();
2.オブジェクトに関数を登録
オブジェクトにコールバック関数を登録します。以下のプロパティ名に関数の登録が可能です。
プロパティ名 | 解説 |
onLoadStart | 読み込みを開始できたときに1度呼び出されます。 |
onLoadProgress | 読み込み中に毎フレーム呼び出されます。 |
onLoadComplete | 読み込み完了時に1度呼び出されます。(リソースにはまだアクセスできない) |
onLoadInit | 読み込みが完了して初期化(1フレーム目が表示)されたときに1度呼び出されます。(リソースにアクセス可能) |
onLoadError | 読み込みエラー時に1度呼び出されます。 |
オブジェクトに関数を登録
var load_obj = new Object ();
load_obj.onLoadStart = function (){
trace("読み込みを開始した");
};
load_obj.onLoadProgress = function (targetMc, loadedBytes, totalBytes){
trace("ターゲット:" + targetMc);
trace("読込:" + loadedBytes);
trace("全体:" + totalBytes);
};
load_obj.onLoadComplete = function (){
trace("読み込みが 100% 完了したがアクセスはまだできない");
};
load_obj.onLoadInit = function (){
trace("読み込みが完了してアクセス可能");
};
load_obj.onLoadError = function (){
trace("読み込みエラー");
};
onLoadProgress プロパティに登録した関数には引数から3つのパラメータが渡されます。
第01引数、読込先のターゲットパス。
第02引数、どれだけ読み込まれたかのバイト数。
第02引数、ファイルの全体バイト数。
第01引数、読込先のターゲットパス。
第02引数、どれだけ読み込まれたかのバイト数。
第02引数、ファイルの全体バイト数。
onLoadProgress イベントにコールバック関数を登録する
var load_obj = new Object ();
load_obj.onLoadProgress = function (target_mc, loadedBytes, totalBytes){
trace("ターゲット:" + target_mc);
trace("読込:" + loadedBytes);
trace("全体:" + totalBytes);
};
ローカルにあるファイルを読み込む場合、onLoadProgress イベントは正常に動作しません。これは仕様のようです。
また、転送に時間がかかり過ぎて onLoadProgress イベントが何度も呼び出され続けると、『ムービー内のスクリプトが原因で Flash Player の実行速度が遅くなっています。このまま継続すると、応答しなくなります。スクリプトの実行を中止しますか?』という警告ダイアログが表示される事があります。
以上の事から onLoadProgress イベントは使わない方がよさそうです。
また、転送に時間がかかり過ぎて onLoadProgress イベントが何度も呼び出され続けると、『ムービー内のスクリプトが原因で Flash Player の実行速度が遅くなっています。このまま継続すると、応答しなくなります。スクリプトの実行を中止しますか?』という警告ダイアログが表示される事があります。
3.イベントリスナーを登録する
最後に addListener() を使用してオブジェクトが通知を受け取ることができるようにします。
通知を受け取るオブジェクトを登録
var loader = new MovieClipLoader ();
var load_obj = new Object ();
load_obj.onLoadStart = function (){};
load_obj.onLoadProgress = function (targetMc, loadedBytes, totalBytes){};
load_obj.onLoadComplete = function (){};
load_obj.onLoadInit = function (){};
load_obj.onLoadError = function (){};
loader.addListener( load_obj );
loader.loadClip("http://hakuhin.jp/test.swf" , 1);
4.登録したオブジェクトを解除
通知を止めたいときには、removeListener () を使用してオブジェクトがマウス通知を受け取るのを解除します。
通知を受け取るオブジェクトを解除
var loader = new MovieClipLoader ();
var load_obj = new Object ();
load_obj.onLoadStart = function (){};
load_obj.onLoadProgress = function (targetMc, loadedBytes, totalBytes){};
load_obj.onLoadComplete = function (){};
load_obj.onLoadInit = function (){};
load_obj.onLoadError = function (){};
loader.addListener( load_obj );
loader.removeListener( load_obj );
loader.loadClip("http://hakuhin.jp/test.swf" , 1);
MP3 ファイルを読み込みたい(Flash 6 以降)
■MP3 ファイルを読み込む
MP3 ファイルの読み込みについてはこちらで解説しています。
MP3 ファイルを読み込む
var sound_obj = new Sound();
sound_obj.loadSound("http://hakuhin.jp/bgm_02.mp3",false);
sound_obj.onLoad = function (success){
if(success){
this.start(0,3);
}
};
FLV ファイルを読み込みたい(Flash 7 以降)
サンプルをダウンロード
■FLV ファイルを読み込む
Flashビデオファイル(*.flv)を読み込んでストリーミング再生をすることができます。
フラッシュビデオファイルは Flash のフレームレートとは関係なく、フラッシュビデオのFPSで再生する事が出来ます。
30 フレーム/秒までのビデオの再生をサポートします。
フラッシュビデオファイルは Flash のフレームレートとは関係なく、フラッシュビデオのFPSで再生する事が出来ます。
30 フレーム/秒までのビデオの再生をサポートします。
1.Video オブジェクトを作成する
ライブラリにある右上のボタンをクリックしてメニューを呼び出します。
メニューから『 新規ビデオ 』を選択します。
ライブラリに作成された埋め込みビデオを、ドラッグアンドドロップでFlash上に配置します。そしてプロパティでインスタンス名をつけます。
ここでは my_video と名前を付けます。
ここでは my_video と名前を付けます。
2.NetConnection オブジェクトを作成する
NetConnection クラスをインスタンス化して NetConnection オブジェクトを作成します。
コネクションを作成
// コネクションを作成
var netConn = new NetConnection();
さらに connect() メソッドを使用して、ローカル用の接続を設定します。引数に null を指定します。戻り値に true が返ってきた場合、エラーはありません。
ローカルファイル用のコネクションを作成
// ローカルファイル用コネクションを作成
var netConn = new NetConnection();
netConn.connect( null );
3.NetStream オブジェクトを作成する
先ほど作成した NetConnection オブジェクトを使って NetStream クラスをインスタンス化します。
以降、NetStream オブジェクトを使用することで、ファイルの読み込みや再生に関する制御を行う事ができます。
以降、NetStream オブジェクトを使用することで、ファイルの読み込みや再生に関する制御を行う事ができます。
NetStream オブジェクトを作成する
// ローカルファイル用コネクションを作成
var netConn = NetConnection();
netConn.connect( null );
// ネットストリームオブジェクトを作成
var netStream = new NetStream (netConn);
4.Video オブジェクトに関連付ける
はじめに配置した Video オブジェクトから attachVideo() メソッドを呼び出して NetStream オブジェクトを関連付けます。引数に NetStream オブジェクトを渡します。
以降、Video オブジェクトを使用することでビデオ画面表示に関する制御を行う事ができます。
以降、Video オブジェクトを使用することでビデオ画面表示に関する制御を行う事ができます。
Video オブジェクトに関連付ける
// ローカルファイル用コネクションを作成
var netConn = new NetConnection();
netConn.connect( null );
// ネットストリームオブジェクトを作成
var netStream = new NetStream (netConn);
my_video.attachVideo(netStream);
Video オブジェクトに関連付ける
// ローカルファイル用コネクションを作成
var netConn = new NetConnection();
netConn.connect( null );
// ネットストリームオブジェクトを作成
var netStream = new NetStream (netConn);
my_video.attachVideo(netStream);
5.flv ファイルを読み込んで再生する
flv ファイルのストリーミング読み込みを開始するには、NetStream.play() メソッドを使用します。引数に、flv ファイルまでの URL か参照パスを文字列で指定します。
play() メソッドを呼び出すと自動的に再生を開始します。
"http://hakuhin.jp/test.flv" を読み込んで再生する
// ローカルファイル用コネクションを作成
var netConn = new NetConnection();
netConn.connect( null );
// ネットストリームオブジェクトを作成
var netStream = new NetStream (netConn);
my_video.attachVideo(netStream);
netStream.play ("http://hakuhin.jp/test.flv");
"../text/test.flv" を読み込んで再生する
// ローカルファイル用コネクションを作成
var netConn = new NetConnection();
netConn.connect( null );
// ネットストリームオブジェクトを作成
var netStream = new NetStream (netConn);
my_video.attachVideo(netStream);
netStream.play ("../text/test.flv");
■一時停止する
pause() メソッドを呼び出すと一時停止する事ができます。何回も呼び出す事で、再生と一時停止を交互に切り替える事ができます。
また引数に true と設定すると一時停止、 flase と設定すると再生の指定が可能です。
また引数に true と設定すると一時停止、 flase と設定すると再生の指定が可能です。
flv 動画の再生と一時停止を交互に切り替える
netStream.play ("../text/test.flv");
netStream.pause ();
flv 動画を再生する
netStream.play ("../text/test.flv");
netStream.pause (false);
flv 動画を一時停止する
netStream.play ("../text/test.flv");
netStream.pause (true);
■FLV ファイルを閉じる
close() メソッドを呼び出すと flv ファイルを閉じます。Flash Player 上のキャッシュは削除されますが、ブラウザ上のキャッシュは残る事があります。
flv 動画を閉じる
netStream.play ("../text/test.flv");
netStream.close ();
■再生ヘッドを移動する
seek() メソッドを呼び出すと 再生ヘッドを移動する事ができます。
引数に秒数を指定すると、最も近いキーフレームに再生ヘッドが移動します。秒単位でしか変更できないので、コマ送りや逆再生といった事はできません。
かなりアバウトです。
現在の再生時間を取得するには time プロパティを使用します。単位は秒です。
引数に秒数を指定すると、最も近いキーフレームに再生ヘッドが移動します。秒単位でしか変更できないので、コマ送りや逆再生といった事はできません。
かなりアバウトです。
flv ビデオを 10 秒目から再生する
netStream.play ("../text/test.flv");
netStream.seek (10);
flv ビデオを現在のフレームから 5 秒巻き戻して再生する
netStream.play ("../text/test.flv");
netStream.seek (netStream.time - 5);
■バッファ秒数を指定する
バッファ秒数を指定するには、setBufferTime() メソッドを使用します。
引数に秒数を指定します。デフォルトでは 5 秒です。
バッファ秒数を取得するには bufferTime プロパティを使用します。単位は秒です。
バッファ秒数を 15 秒に設定する
netStream.setBufferTime (15);
6.読み込み状況を調べる
flv ファイルの読み込み状況を調べるには、onStatus イベントを使用します。
flv ファイルの読み込み状況を調べる
// ローカルファイル用コネクションを作成
var netConn = new NetConnection();
netConn.connect( null );
// ネットストリームオブジェクトを作成
var netStream = new NetStream (netConn);
my_video.attachVideo(netStream);
// イベントにコールバック関数を登録
netStream.onStatus = function (info) {
if (info.code == "NetStream.Buffer.Empty") {
trace("バッファが満たされていないため中断中");
} else if (info.code == "NetStream.Buffer.Full") {
trace("バッファが満たされました");
}else if (info.code == "NetStream.Buffer.Flush") {
trace("ストリーミング読み込みが完了しました");
} else if (info.code == "NetStream.Play.Start") {
trace("再生開始");
} else if (info.code == "NetStream.Play.Stop") {
trace("停止");
} else if (info.code == "NetStream.Play.StreamNotFound") {
trace("FLV ファイルが見つかりません");
// --- ここから下は Flash 8 以降 ---
}else if (info.code == "NetStream.Seek.Notify") {
trace("シーク変更に成功");
} else if (info.code == "NetStream.Seek.InvalidTime") {
trace("シーク変更の失敗");
trace("シーク可能な時間 : " + info.details);
}
};
// 読み込みを開始する
netStream.play ("http://hakuhin.jp/test.flv");
どれだけ読み込まれたかバイト数で調べたい場合は、bytesLoaded プロパティ 、ファイルの総バイト数が知りたい場合は、bytesTotal メソッドを使用します。
また、bufferLength プロパティでバッファが満たされていない状態の経過秒数を調べる事ができます。
読み込み状況を調べる
// ローカルファイル用コネクションを作成
var netConn = new NetConnection();
netConn.connect( null );
// ネットストリームオブジェクトを作成
var netStream = new NetStream (netConn);
my_video.attachVideo(netStream);
onEnterFrame = function (){
trace("読込" + netStream.bytesLoaded);
trace("全体" + netStream.bytesTotal);
trace("パーセント" + Math.floor(netStream.bytesLoaded / netStream.bytesTotal * 100));
trace ("バッファが満たされていない状態の経過時間(秒):" + netStream.bufferLength);
};
7.メタデータを取得する
flv ファイルに埋め込まれたメタデータを取得するには、onMetaData イベントを使用します。flv ファイルが再生を開始する直前に呼び出されます。
メタデータが埋め込まれていない場合このメソッドは呼び出されないので、メタデータをコンテンツに使用する場合は注意してください。
flv ファイルのメタデータを調べる
// ローカルファイル用コネクションを作成
var netConn = new NetConnection();
netConn.connect( null );
// ネットストリームオブジェクトを作成
var netStream = new NetStream (netConn);
my_video.attachVideo(netStream);
// イベントにコールバック関数を登録
netStream.onMetaData = function (info) {
trace("総時間 : " + info.duration + "秒");
trace("幅 : " + info.width);
trace("高さ : " + info.height);
trace("ビデオレート : " + info.videodatarate + "kb");
trace("フレームレート : " + info.framerate + "fps");
trace("コーデックID : " + info.videocodecid);
var key;
for (key in info){
trace(key + ": " + info[key]);
}
};
// 読み込みを開始する
netStream.play ("http://hakuhin.jp/test.flv");
■動画のフレームレートを取得する
FLV 動画のフレームレートを取得するには、currentFps プロパティを使用します。
FLV 動画のフレームレートを取得する
trace(netStream.currentFps);
■Video オブジェクトをスムーズ表示する
Flashビデオファイルを拡大縮小して表示するときに補正したい場合は、Video オブジェクトの smoothing プロパティを変更します。
true に設定すると、低画質以外のときに動画がスムージング表示になります。false に設定すると、スムージングされません。
FLV 動画をスムージング表示する
my_video.smoothing = true;
■Video オブジェクトに動画用フィルタを適用する(Flash 6 以降)
Flash ビデオファイルに、動画用のフィルタを適用したい場合は deblocking プロパティを変更します。このフィルタは、低ビットレート動画で使用するとより効果があるようです。
使用しているコーデックによって設定するパラメータが変わります。
FLV 動画に非ブロックフィルタを使用する (Sorenson コーデック使用時)
my_video.deblocking = 2;
1.Sorenson コーデック使用時
数値 | 説明 |
0 | 処理負荷によって自動的に非ブロックフィルタの使用を切り替えます。(通常) |
1 | 非ブロックフィルタを使用しません。 |
2 | 非ブロックフィルタを使用します。 |
2.On2 VP6 コーデック使用時
数値 | 説明 |
0 | 処理負荷によって自動的に非ブロックフィルタの使用を切り替えます。(通常) |
1 | 非ブロックフィルタを使用しません。 |
3 | 非ブロックフィルタを使用、リンギング除去フィルタを使用しません。 |
4 | 非ブロックフィルタを使用、リンギング除去フィルタを使用します。 |
5 | 非ブロックフィルタを使用、リンギング除去フィルタを使用します。(高品質) |
MP4 ファイルを読み込みたい(Flash 7 以降)
サンプルをダウンロード
■MP4 ファイルを読み込む
Flash Player 9.0.115.0 からMP4(H.264) 形式の動画ファイルの読み込みに対応しました。このバージョン 9 以降の Flash Player で再生する必要があります。
読み込み方は、FLV ファイルを読み込む方法と同じです。
"http://hakuhin.jp/test.mp4" を読み込んで再生する
// ローカルファイル用コネクションを作成
var netConn = new NetConnection();
netConn.connect( null );
// ネットストリームオブジェクトを作成
var netStream = new NetStream (netConn);
my_video.attachVideo(netStream);
netStream.play ("http://hakuhin.jp/test.mp4");
ファイルが読み込めないときの注意点
■swf ファイルが HTML とは別ディレクトリに格納されている場合
本体 swf ファイルから相対パス指定で外部ファイルを読み込むとします。そして本体 swf ファイルとは別のディレクトリにある html から本体 swf ファイルを表示したいとします。
この場合、html から相対パスを開始して 外部ファイルにアクセスしようとするので参照位置のずれが発生します。(FLVファイルは問題ありません。)
相対パスを開始する基ディレクトリを設定するには html の <object/> タグ と <embed/> タグに base パラメータを追加します。
相対参照の開始ディレクトリを指定する(swf ファイルを読み込む場合に必要)
<object
classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"
width="400" height="300"
id="import_00"
align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="http://hakuhin.jp/flash/import_00.swf" />
<param name="base" value="http://hakuhin.jp/flash/" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<embed
src="http://hakuhin.jp/flash/import_00.swf"
base="http://hakuhin.jp/flash/"
quality="high" bgcolor="#ffffff"
width="400" height="300"
name="import_00"
align="middle" allowScriptAccess="sameDomain"
type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
■プロジェクタ実行環境でファイルパスに全角が含まれる場合
プロジェクタで実行しているときに外部ファイルまでのパスに全角(2バイトコード)が含まれると読み込みに失敗します。(Win 環境で確認)
■getBytesTotal() が取得できない
swf ファイルを置いているサーバによっては、getBytesTotal() が取得できずに 0 が得られる事があるようです。