| Name |
tsuyosi |
| Date |
2008年12月19日 (金) 22時43分 |
| Message |
いつも参考にさせて頂いております。
質問させて頂きます。
使用環境:
mac:OSX 10.5
Flash: CS3 AS2.0
外部xmlをから画像を読み込み、フォトギャラリーを制作しているのですが、
xmlが読み込みにエラーが発生した場合の処理方法をアドバイス頂けますでしょうか?
現状はtyr~catchでやってみたのですができずにおります。
現在のAS:
var total;
var myXML = new XML();
var photos = new Array();
var captions1 = new Array();
var captions2 = new Array();
var captions3 = new Array();
myXML.ignoreWhite = true;
function xmlLoad(){
try{
myXML.load("test.xml");
}catch(myError: Error){
xml_text.text="xmlが読み込めませんでした";
trace(myError);
}
}
myXML.onLoad = function (loaded){
if (loaded){
photo_XML = myXML.firstChild;
total = photo_XML.childNodes.length;
current_photo = photo_XML_.firstChild;
for (var i = 0; i < total; ++i){
photos[i] = String(current.childNodes[0].firstChild);
myThumbnail[i] = String(current.childNodes[1].firstChild);
captions1[i] = String(current.childNodes[2].firstChild);
captions2[i] = String(current.childNodes[3].firstChild);
captions3[i] = String(current.childNodes[4].firstChild);
}
}else{}
};
xmlLoad();
以上です。宜しくお願いします。 |
Response
01
|
| 2008年12月21日
(日) 15時24分> joy
|
|
tsuyoshiさん、
xmlの中身は見てませんが、一般的には、以下のようにも記載できると思います。
//ここから
var total;
var myXML = new XML();
var photos = new Array();
var captions1 = new Array();
var captions2 = new Array();
var captions3 = new Array();
myXML.ignoreWhite = true;
/*function xmlLoad(){
try{
myXML.load("test.xml");
}catch(myError: Error){
xml_text.text="xmlが読み込めませんでした";
trace(myError);
}
}*/
xml_txt.text = "";//ダイナミックテキストは、ロード時、ブランク
var error:Number;//読み込み時のエラーコードを代入する変数を定義
myXML.onLoad = function(loaded) {
if (loaded) {//loaded==true;で、
error=this.status;//statusをerrorに代入
if (error == 0) {//0なら
xml_txt.text = "xmlの読み込み成功!";
photo_XML = myXML.firstChild;
total = photo_XML.childNodes.length;
current_photo = photo_XML_.firstChild;
for (var i = 0; i<total; ++i) {
photos[i] = String(current.childNodes[0].firstChild);
myThumbnail[i] = String(current.childNodes[1].firstChild);
captions1[i] = String(current.childNodes[2].firstChild);
captions2[i] = String(current.childNodes[3].firstChild);
captions3[i] = String(current.childNodes[4].firstChild);
}
} else {//0以外なら、そのエラーコードを表示
xml_txt.text = "エラーコード: "+error;
}
trace(error);
} else {//loaded==false;なら
xml_txt.text = "xmlの読み込み失敗!";
}
};
myXML.load("test.xml");
//ここまで
|
|
Response
02
|
| 2008年12月22日
(月) 02時03分> tsuyosi |
|
JOYさんへ
返事が遅れてしまい、申し訳あしません。
ご返答ありがとうございます。
JOYさんのアドバイスに修正してみたのですが、
xmlが読めなかった際、Flash Playerがフリーズ状態になり
「ムービー内のスクリプトが原因でFlash Playerの実行速度が遅くなっています。このまま継続すると、応答しなくなることがあります。」
おそらくxmlを探し続けてしまって、上記アラートが出てきてしまうのですが、
これを回避することは可能ですか?
教えて頂けると助かります。
宜しくお願いします。
|
|
Response
03
|
| 2008年12月22日
(月) 21時50分> joy
|
|
tsuyoshiさん、
適当な、test.xmlを作って、以下のtsuyoshiさんのscript部分を無効にして、プレビューをしても、正常に読み込まれます。
tusyoshiさんのtest.xmlは、XML Editorでチェックして、正常なのでしょうか?
無限ループに陥っているようですが、原因は、私にも、分かりません。
myXML.onLoad = function(loaded) {
if (loaded) {//loaded==true;で、
error=this.status;//statusをerrorに代入
if (error == 0) {//0なら
xml_txt.text = "xmlの読み込み成功!";
/*〜無効とする〜
photo_XML = myXML.firstChild;
total = photo_XML.childNodes.length;
current_photo = photo_XML_.firstChild;
for (var i = 0; i<total; ++i) {
photos[i] = String(current.childNodes[0].firstChild);
myThumbnail[i] = String(current.childNodes[1].firstChild);
captions1[i] = String(current.childNodes[2].firstChild);
captions2[i] = String(current.childNodes[3].firstChild);
captions3[i] = String(current.childNodes[4].firstChild);
}
〜ここまで〜*/
} else {//0以外なら、そのエラーコードを表示
xml_txt.text = "エラーコード: "+error;
}
trace(error);
} else {//loaded==false;なら
xml_txt.text = "xmlの読み込み失敗!";
}
};
myXML.load("test.xml");
|
|