0

私はFlashとActionScriptの初心者です。ビデオチュートリアルに従ってプリローダーを作成しようとしていますが、ビデオで対処できないという問題があります。ビデオからすべてのコードを正しく入力したと思います。これだよ:

stop();

addEventListener(Event.ENTER_FRAME, loaderF);

function loaderF(e:Event):void{
    var toLoad:Number = loaderInfo.bytesTotal;
    var loaded:Number = loaderInfo.bytesLoaded;
    var total:Number = loaded/toLoad;
    if( loaded == toLoad ){
        removeEventListener(Event.ENTER_FRAME, loaderF);
        gotoAndStop(2);
    } else {
        preloader_mc.preloaderFill_mc.scaleX = total;
        preloader_mc.percent_txt.text = Math.floor( total * 100 ) + "%";
        preloader_mc.ofBytes_txt.text = loaded + "bytes";
        preloader_mc.totalBytes_txt.text = toLoad + "bytes";
    }
}

入力した内容はコンパイラエラーを生成しませんが、出力には次のように表示されます。

TypeError: Error #1010: A term is undefined and has no properties.
at preloader_fla::MainTimeline/loaderF()

そして、このチュートリアルシリーズから学んだこと以外の経験は本当にないので、これを修正するために何をすべきかわかりません。

4

2 に答える 2

0

私はFlashCS5を使用していませんが、CTRL + SHIFT + ENTERを押してSWFを実行することで、エラーが発生している場所の行番号を取得できるはずです。

行番号を取得すると、その行の何かがnullであるか、定義されていないことがわかります。エラーはそれが関数で発生することloaderF()を示しており、そのコードを見ると、そのようなエラーが発生する可能性があるのはelseブロックだけです。

} else {
        preloader_mc.preloaderFill_mc.scaleX = total;
        preloader_mc.percent_txt.text = Math.floor( total * 100 ) + "%";
        preloader_mc.ofBytes_txt.text = loaded + "bytes";
        preloader_mc.totalBytes_txt.text = toLoad + "bytes";
    }

上記のコードブロックでは 、 次のいずれかが定義されていません: preloader_mc.preloaderFill_mc、、、 preloader_mc.percent_txtpreloader_mc.ofBytes_txtpreloader_mc.totalBytes_txt

たぶん、プリローダーのムービークリップにこれらのオブジェクトの1つがありません...

于 2012-05-23T19:13:01.327 に答える
0

まず、の下にあるデバッグをオンにする必要があります(File > Publish Settings > Flash (.swf) > Permit Debugging)。これにより、行番号が提供され、エラーの追跡に役立つ追加のデバッグが可能になります。

次に、提供したコードサンプルでは、​​ローダーを宣言していないため、を呼び出すとloaderInfo、flashが「用語が未定義です」と文句を言うのは理にかなっています。ただし、技術的には、loaderInfoオブジェクトはイベントオブジェクトの子です。したがって、イベントリスナーをローダーオブジェクトに追加したとすると、loaderInfo.bytesTotalはになります。e.loaderInfo.bytesTotal現在、あなたのものがタイムラインに追加されています。

AdobeのActionscript3.0リファレンスをブックマークします。これを使って。Flashで旅を始めるとき、これはAS3を話すための不可欠なハンドブックになります。具体的には、 Loaderクラスを参照する必要があります。

コードに欠けている可能性のあるものは次のとおりです。

var myLoader:Loader = new Loader();
myLoader.load(new URLRequest("path/to/my/file"));

loaderF画面がフレームを更新するたびに(おそらく0.034秒ごとに)関数が呼び出されます。ProgressEvent.PROGRESSの代わりに、おそらくもっと幸せになるでしょうEvent.ENTER_FRAME。もしそうなら、あなたは完全なイベントをキャッチしたいと思うでしょう、そしてそれは次のようになります:

myLoader.addEventListener(Event.COMPLETE, loadComplete);
myLoader.addEventListener(ProgressEvent.PROGRESS, loadProgress);

function loadComplete(e:Event):void {
    // Stuff to do when the file finishes loading.
}

function loadProgress(e:Event):void {
    var current:int = e.bytesLoaded;
    var total:int = e.bytesTotal;
    var percent:Number = current/total;

    // Update the readout of your loading progress.
}

うまくいけば、それはあなたを正しい方向に向けます。:)

于 2012-05-23T20:20:48.063 に答える