トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     XMLファイルを読み込むスライドショーアニメーション「画像がフラッシュしてしまいます。」
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
JunRize
Åê¹ÆNo.8376
投稿日時: 2004-6-16 13:28
新米
居住地:
投稿: 4
使用環境:
XMLファイルを読み込むスライドショーアニメーション「画像がフラッシュしてしまいます。」

始めましてActionScript初心者です。

アップロードフォームから登録した画像ファイルを次々に読み込み
様々な方向からフェードイン、フェードアウトさせる
スライドアニメーションのループアニメーションを作成しています。

仕様は
アップロードされた画像ファイルのurlはXMLファイルに記述し
フラッシュ側でそれを読み込み処理する形になっています。
フェードイン、フェードアウト処理はプロパティの
座標やアルファ値を加算減産しています。
スクロール計算処理は目的地に近づくほど減速するような計算処理を作成しました。


下記のコードはほぼ完成してるのですが致命的な欠陥があります。
画像ファイルが切り替わる度に「チカチカ」とフラッシュしてしまう現象が起こっています。
読み込み先のインスタンスの削除処理が悪いのか
画像の読み込み処理が悪いのか
または、他に原因があるのか

現在の私レベルでは解決できず、困り果てています。
これらの処理にお詳しい方、いらっしゃいましたら
何卒、ご教授下さい
どうか。宜しくお願い致します。


以下はソースコードです。


フレーム1

load_waku = "waku.swf";
loadMovieNum(load_waku, 100);
v_name = [];
endx = [];
endy = [];
xmove =0; ymove =0;

loop = 0;
num = 0;
remove = 0;

--------------------------------------
フレーム2

myXML = new XML ();
myXML.ignoreWhite = true;
myXML.load ("flash.xml");
//v_name = [];
//endx = [];
//endy = [];
ii=0;
//stop();
myXML.onLoad = function (loaded) {
if (loaded) {
v_rootNode = myXML.firstChild;
v_num = v_rootNode.childNodes.length;
v_currentPhoto = v_rootNode.firstChild;
v_currentNumber = 0;
for (i=0; i < v_num; i++) {
node = v_currentPhoto.nodeName;
//if(node == 'pic' ) { ii++;}
v_loadURL = v_currentPhoto.childNodes[0].firstChild;
v_currentPhoto = v_currentPhoto.nextSibling;
if(loop == i) {
//if (node != 'pic') {gotoAndPlay("set");}
//trace(v_loadURL);
f_makeAndLoad (i, v_loadURL);
}
}
} else {
trace ("error occured");
}
};

function f_makeAndLoad (num, path) {

//myBase.myLoad.duplicateMovieClip ("myLoad"+num, num+1);
myBase.myLoad.duplicateMovieClip ("myLoad"+num, num+1);
v_name[num] = eval("myBase.myLoad"+num);
loadName = "return_xy.php?no="+num;
//trace(loadName);
objLoad = new LoadVars();
objLoad.load(loadName);
//objLoad.load("move.txt");
objLoad.onLoad = function() {
sx=objLoad.startx;
sy=objLoad.starty;
ex=objLoad.endx;
ey=objLoad.endy;
wid=objLoad.wid;
hei=objLoad.hei;

v_name[num]._alpha = 0;
v_name[num]._x = sx;
v_name[num]._y = sy;
endx[num] = ex;
endy[num] = ey;
v_name[num]._width = wid;
v_name[num]._height = hei;


v_name[num].loadMovie(path);
myBase.myLoad._visible = false;
}
}




-------------------------------
フレーム9


if(v_name[loop]._x >= endx[loop] ){
if((v_name[loop]._x-1) <= endx[loop] ){
xmove =1;
//trace(endx[loop] );
//trace(v_name[loop]._x);
}
}
if(v_name[loop]._x <= endx[loop] ){
if((v_name[loop]._x+1) >= endx[loop] ){
xmove =1;
//trace(endx[loop] );
//trace(v_name[loop]._x);

}
}

if(v_name[loop]._y >= endy[loop] ){
if((v_name[loop]._y-1) <= endy[loop] ){
ymove =1;
//trace(endy[loop] );
//trace(v_name[loop]._y);

}
}
if(v_name[loop]._y <= endy[loop] ){
if((v_name[loop]._y +1) >= endy[loop] ){
ymove =1;
//trace(endy[loop] );
//trace(v_name[loop]._y);

}
}
//trace(xmove);
//trace(ymove);
if (xmove == 1 && ymove == 1) {
gotoAndPlay("stop");
}

--------------------------------------------
フレーム10

//myBase.onEnterFrame = function () {

v_name[loop]._alpha += (100-v_name[loop]._alpha)/24;
v_name[loop]._x += (endx[loop]-v_name[loop]._x)/18;
v_name[loop]._y += (endy[loop]-v_name[loop]._y)/18

for (i=0; i < v_num; i++) {
if(i == loop) { continue ; }
alph = eval("myBase.myLoad"+i);
alph._alpha += -5 ;
}

//trace(v_name[loop]._x);
gotoAndPlay(9);

//}

---------------------------------------------
フレーム11

loop++;

if(v_num == loop) {
gotoAndPlay("set"); }
else{ gotoAndPlay("loop"); }

trace(v_name[loop]);
//trace(loop);
xmove =0; ymove =0;
//this._x = 0; this._y = 0;



//stop();

-----------------------------------------------
フレーム11

stop();

-----------------------------------------------
rin-ko
Åê¹ÆNo.8383
投稿日時: 2004-6-16 17:25
職人
居住地: 東京
投稿: 397
使用環境:
MacOSX10.5/10.4
WinXP SP3
MX2004Pro/CS3
Re: XMLファイルを読み込むスライドショーアニメーション「画像がフラッシュしてしまいます。」
JunRizeさん、こんにちは。
もしかして、以下のスレッドのような現象でしょうか?
全然違うお話でしたら無視してください。
「透過してゆく時に、画面がチラチラしてしまうのです。」
JunRize
Åê¹ÆNo.8387
投稿日時: 2004-6-16 20:31
新米
居住地:
投稿: 4
使用環境:
Re: XMLファイルを読み込むスライドショーアニメーション「画像がフラッシュしてしまいます。」
rin-koさん、始めまして。

情報ありがとうございました。
早速修正してテストしてみようと思います。
JunRize
Åê¹ÆNo.8448
投稿日時: 2004-6-19 1:22
新米
居住地:
投稿: 4
使用環境:
Re: XMLファイルを読み込むスライドショーアニメーション「画像がフラッシュしてしまいます。」
テストしてみましたが、フレームレートなどが原因ではないようです。(現在のフレームレートは30になってます)
画面がチラつくというより
一枚、一枚の画像がスライドしてきて静止した時に
カメラのシャッターを切った時のようなイメージで
「パシッ」っと光るような感じです。

サーバーにサンプルをアップしましたので
どなたかご存知の方いらっしゃいましたら
ご教授お願い致します。

http://compus.net/flash/sample1/main_auto.html
野中文雄
Åê¹ÆNo.8451
投稿日時: 2004-6-19 8:41
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: XMLファイルを読み込むスライドショーアニメーション「画像がフラッシュしてしまいます。」
まず、最低限ご使用の環境はプロフィールにご記入ください。

つぎに、ご自分で問題を切分けてください。
引用:
JunRizeさんは書きました:
画像ファイルが切り替わる度に「チカチカ」とフラッシュしてしまう現象が起こっています。

「インスタンスの削除処理」は、掲示されたスクリプト中には見当たりません。 原因となりうる処理を除いて試されれば、影響の有無が簡単に確認できます。問題を絞込むことも、併せて必要です。
引用:
読み込み先のインスタンスの削除処理が悪いのか
画像の読み込み処理が悪いのか
または、他に原因があるのか

スクリプトは、ご自分で記述されたものでしょうか? でしたら、その内容について、スクリプトの作成者より「詳しい方」は、通常存在しません。病気の自覚症状について、患者本人以外に正しく説明できる人がいないのと同じことです。

掲示されたスクリプト中のフレームラベルや、XML/テキストファイルについては、何も情報がありません。どんなに優秀な医者であっても、情報を正確に伝えられなければ、治療をすることができません。
引用:
現在の私レベルでは解決できず、困り果てています。
これらの処理にお詳しい方、いらっしゃいましたら
何卒、ご教授下さい

取りあえず、情報の不足部分は「推理」して、問題とは明かに関係がないと思われる処理を削除・簡略化してみました。XML/外部テキストファイルのロードは、ダミーデータで替えています。

以下で問題が再現するようでしたら、さらに絞込みを行ってください。とくに、外部XML/テキストファイルのロードが問題に関係するかどうかは、早急に切分けるべきです。
引用:
以下はソースコードです。

// 第1フレーム
v_name = [];
endx = [];
endy = [];
xmove = 0;
ymove = 0;
loop = 0;
num = 0;

// 第2フレーム
// フレームラベル: loop
jpg_array = ["test.jpg", "test2.jpg", "test3.jpg"];
myXML = new XML();
myXML.load("flash.xml");
myXML.onLoad = function(loaded) {
    if (loaded) {
        v_num=jpg_array.length;
        v_loadURL = jpg_array[loop];
        f_makeAndLoad(loop, v_loadURL);
    } else {
        trace("error occured");
    }
};
function f_makeAndLoad(num, path) {
    myBase.myLoad.duplicateMovieClip("myLoad"+num, num+1);
    v_name[num] = eval("myBase.myLoad"+num);
    loadName = "test.txt";
    objLoad = new LoadVars();
    objLoad.load(loadName);
    objLoad.onLoad = function(b) {
        v_name[num]._alpha = 0;
        endx[num] = 100;
        endy[num] = 100;
        v_name[num].loadMovie(path);
        myBase.myLoad._visible = false;
    };
}

// 第9フレーム
if (v_name[loop]._x>=endx[loop]) {
    if ((v_name[loop]._x-1)<=endx[loop]) {
        xmove = 1;
    }
}
if (v_name[loop]._x<=endx[loop]) {
    if ((v_name[loop]._x+1)>=endx[loop]) {
        xmove = 1;
    }
}
if (v_name[loop]._y>=endy[loop]) {
    if ((v_name[loop]._y-1)<=endy[loop]) {
        ymove = 1;
    }
}
if (v_name[loop]._y<=endy[loop]) {
    if ((v_name[loop]._y+1)>=endy[loop]) {
        ymove = 1;
    }
}
if (xmove == 1 && ymove == 1) {
    gotoAndPlay("stop");
}

// 第10フレーム
v_name[loop]._alpha += (100-v_name[loop]._alpha)/24;
v_name[loop]._x += (endx[loop]-v_name[loop]._x)/18;
v_name[loop]._y += (endy[loop]-v_name[loop]._y)/18;
for (i=0; i<v_num; i++) {
    if (i == loop) {
        continue;
    }
    alph = eval("myBase.myLoad"+i);
    alph._alpha += -5;
}
gotoAndPlay(9);

// 第11フレーム
// フレームラベル: stop
loop++;
trace([v_num, loop]);
if (v_num == loop) {
    gotoAndPlay("set");
} else {
    gotoAndPlay("loop");
}
xmove = 0;
ymove = 0;

// 第12フレーム
// フレームラベル: set
stop();


----------------
 

JunRize
Åê¹ÆNo.8478
投稿日時: 2004-6-21 12:11
新米
居住地:
投稿: 4
使用環境:
Re: XMLファイルを読み込むスライドショーアニメーション「画像がフラッシュしてしまいます。」
野中 文雄様、始めまして

問題解決の「ヒント」を下さってありがとうございました。
また、質問の仕方も至らない所があったにも関わらず
ご回答頂いた事。感謝致します。
以後、質問する時は必要な情報は始めに全て伝えるよう心がけます。

問題の件ですが
野中様のコードを元に
早速テスト用に作り直しました。
それでも、問題の件は解消されなかった為
XMLファイルのロード処理を削除し配列から読み取るように
変更しました。

そうしましたら
問題の画像がチカっとする現象が見事に解消されました。
本当にありがとうございました。

XMLファイルのロードは最初の一回にしてそこで
画像ファイル名を配列に入れていけば問題解決出来そうです。

もう一方のテキストファイルも同じ要領で変更しようと思います。

この度は
解決策のヒントを下さったばかりでなく
デバッグテクニックまでご教授下さり
ありがとうございました。
本当に勉強になりました。


スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops