0

画像ビューアを含む Flash SWF を埋め込む Flex プロジェクトがあります。埋め込んでいる SWF ファイルは、表示する画像のリストを含む XML ファイルと、画像を含む画像フォルダーによって補足されます。

私が直面している問題は、埋め込まれた SWF ファイルが画像を読み込めないことです。進む/戻るナビゲーション ボタンは表示されますが、読み込まれた画像はありません。Flex プロジェクトの外部で SWF ファイルを表示すると、正常に動作します。これは、Flex が SWF が外部に到達して他のプロジェクト アセットにアクセスすることを許可していないためですか? どうすればこれを回避できますか?

SWF を埋め込むためのコードは次のとおりです。

<mx:Script>
<![CDATA[
    import mx.controls.Image;
    import mx.events.CloseEvent;
    import mx.managers.PopUpManager;

    [Embed(source = '../components/sampleReportViewer/photo_stack_gallery.swf')]
    [Bindable] public var SWFClass:Class;

    private function init():void {          
        //add the swf to the container
        var img:Image = new Image();
        img.source = MovieClip(new SWFClass());
        contentBox.addChild(img);       

        PopUpManager.centerPopUp(this);
    }
]]>

<mx:VBox id="contentBox"
    width="600" height="450"/>
4

2 に答える 2

1

私の推測では、あなたのワークパスは同じではありません。URL ( ../) の相対パスから判断すると、次のようなプロジェクト構造があります。

|
index.html
|
+ swf
| |
|  main.swf
|
+ components
|
+ xml

その場合、HTML ページをブラウザーにロードすると、Flash プレーヤーは index.html の親フォルダーを現在の作業パスとして想定し、すべての../参照が正しいリソースを見つけられません。 swf を直接ダブルクリックすると、すべて正常に動作します。

于 2011-01-13T23:42:02.727 に答える
1

まず、ローダーを介して画像をロードする必要があります。

var loaderSmall:Loader=new Loader(); loaderSmall.load(新しいURLRequest(imgArr[0].path)); loaderSmall.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,loadThumbImage); loaderSmall.contentLoaderInfo.addEventListener(Event.COMPLETE,hideThumbImageLoader);

ここ、

imgArr[0].パス

ロードされるイメージのパスです。このタイプのセットアップで、より多くのことができるようになりました。イメージがロードされているかどうかを確認できます。

これは私が開発した例のギャラリーの 1 つです。完璧ではありませんが、画像の読み込みはローダー経由で行われます 。http://no-refresh.com/demo/PortfolioSlideshow2/

あなたの問題では、最初にパスを確認してください。それが正しいかどうかに関係なく、画像のソースが正しくない可能性があります。

@weltraumpirat が書いたように、それも確認してください。

私はそれがあなたを助けないことを知っていますが、それがあなたを助けることを望んでいます。

アンクル

于 2011-01-14T16:30:12.640 に答える