0

ナビゲーションバーを機能させようとして遊んでいるだけで、問題が発生しています。があり、その中には、それぞれのボタンのクリックでmain.swfロードするコードがあります。円と四角形は読み込まれて正しく再生されますが、三角形は読み込まれますが、何らかの理由で再生されません。私の目には、コードは 3 つすべてで同じですが、その 1 つだけが再生されません。circle.swfsquare.swftriangle.swf

バグがどこにあるのかを正確に確認してください。ただし、その下には、特定の swfs を参照するコードがあります。もっと見ると役立つかどうか教えてください。

var _swfPathArr:Array = new Array("Subfolder/Circle.swf", "Subfolder/Subsubfolder/Square.swf", "Triangle.swf");

button_Circle.addEventListener(MouseEvent.CLICK, setContent);
button_Square.addEventListener(MouseEvent.CLICK, setContent);
button_Triangle.addEventListener(MouseEvent.CLICK, setContent);

そして、ロードされたswfsを実際に表示およびクリアする方法:

function setContent(event:MouseEvent):void
{
    var _swfToAdd:MovieClip;

    switch(event.target.name)
    {
        case "button_Circle":
        _swfToAdd = _swfClipsArr[0];
        gotoAndStop(2);
        break;

        case "button_Square":
        _swfToAdd = _swfClipsArr[1];
        gotoAndStop(3);
        break;

        case "button_Triangle":
        _swfToAdd = _swfClipsArr[2];
        gotoAndStop(4);
        break;
    }

    Window_content.removeChildAt(Window_content.numChildren - 1);
    Window_content.addChild(_swfToAdd);
}

あなたが提供できるどんな助けも大歓迎です。

編集:すべてのコード

import flash.display.MovieClip;
import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.IEventDispatcher;
import flash.events.ProgressEvent;
import flash.events.Event;
import flash.events.MouseEvent;

var _swfLoader:Loader;
var _swfRequest:URLRequest;

var _swfPathArr:Array = new Array("Subfolder/Circle.swf", "Subfolder/Subsubfolder/Square.swf", "Triangle.swf");
var _loadedSWFs:int;

var _swfClipsArr:Array = new Array();
var _swfTempClip:MovieClip;

startLoading(_swfPathArr);

function startLoading(pathArr:Array):void
{
    _swfLoader = new Loader();
    _swfRequest = new URLRequest();

    addChildAt(_swfLoader, 0);

    _loadedSWFs = 0;

    loadSWF(pathArr[0]);

}

function loadSWF(path:String):void
{
    setUpListeners(_swfLoader.contentLoaderInfo);

    _swfRequest.url = path;
    _swfLoader.load(_swfRequest);

}

function setUpListeners(dispatcher:IEventDispatcher):void
{
    dispatcher.addEventListener(Event.COMPLETE, onSwfComplete);
    dispatcher.addEventListener(ProgressEvent.PROGRESS, currentSwfProgress);

}

function currentSwfProgress(event:ProgressEvent):void
{
    var _perc:int = (event.bytesLoaded / event.bytesTotal) * 100;
    //swfPreloader.precentTF.text = _perc + "%";
}

function onSwfComplete(event:Event):void
{
    event.target.removeEventListener(Event.COMPLETE, onSwfComplete);
    event.target.removeEventListener(ProgressEvent.PROGRESS, currentSwfProgress);

    _swfTempClip = event.target.content;
    _swfTempClip.customID = _loadedSWFs;

    _swfClipsArr.push(_swfTempClip);

    if(_loadedSWFs < (_swfPathArr.length - 1))
    {
        _loadedSWFs++;
        loadSWF(_swfPathArr[_loadedSWFs]);
    }
    else
    {
        _swfLoader.unloadAndStop();
        _swfLoader = null;
        onCompletePreloading();
    }

}

function onCompletePreloading():void
{
    button_Circle.addEventListener(MouseEvent.CLICK, setContent);
    button_Square.addEventListener(MouseEvent.CLICK, setContent);
    button_Triangle.addEventListener(MouseEvent.CLICK, setContent);
}

function setContent(event:MouseEvent):void
{
    var _swfToAdd:MovieClip;

    switch(event.target.name)
    {
        case "button_Circle":
        _swfToAdd = _swfClipsArr[0];
        gotoAndStop(2);
        break;

        case "button_Square":
        _swfToAdd = _swfClipsArr[1];
        gotoAndStop(3);
        break;

        case "button_Triangle":
        _swfToAdd = _swfClipsArr[2];
        gotoAndStop(4);
        break;
    }

    Window_content.removeChildAt(Window_content.numChildren - 1);
    Window_content.addChild(_swfToAdd);
    //trace(_swfToAdd.customID);
}

stop();

したがって、Cherniv が SWF の順序を切り替えて何が起こるかを確認することを提案したおかげで、問題はパス配列の 3 番目の要素に関連しているようです。外部の目でコードを調べてもらうだけで、私のトラブルの非常に明白な理由を突き止めることができるでしょう (笑)。誰かがそれを見つけることができれば、それは大歓迎です.

4

0 に答える 0