0

私のフラッシュ 4.6 Air プロジェクトでは、assets フォルダーに他のソフトウェアから生成された数千の html ファイルがあります。画像を含むいくつかの html ファイル。

ここで、html ファイルを保護するために、それらすべてを暗号化します。しかし、それらを文字列に復号化し、経由でロードすると:

html.htmlLoader.loadString(decryptedString.toString());

また

html.htmlText = decryptedString.toString();

画像が表示されず、縁取りされた空白のボックスに ALT テキストが表示されます。これらの html ファイルには javascript() があり、機能しています。("samople.htm") html ファイルの内容は次のようになります。

<P>Some Text</P>
<IMG SRC="../assets/sample/images/image.GIF" ALT="IMAGE.GIF" WIDTH="203"HEIGHT="105">
<P>Some Text</P>

動作を確認するには、次の方法でhtmlをロードしたとき:

html.location = "/assets/sample/sample.htm";

次に、画像を表示しています。しかし、次の方法で文字列を使用する場合:

html.htmlText = '<p>some text</P><img src="../assets/sample/images/image.GIF" width="203" height="105"><p>some text</p>';

その後、画像が表示されません。src="../assets/ . . ." から変更しようとしました src="./assets/ . . ." に または src="/assets/ . . ." または src="assets/ . . ."

私のモットーは、資産フォルダー内の html ファイルを保護することです。現在、それらすべてを暗号化/復号化できますが、画像は表示されません。

私はフレックスとエアが初めてです。助けてくれてありがとう。

編集

これが私の完全なサンプル コードです: Flex/ActionScript

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
                       xmlns:s="library://ns.adobe.com/flex/spark" 
                       xmlns:mx="library://ns.adobe.com/flex/mx"
                       creationComplete="initiate()">
    <fx:Script>
        <![CDATA[

            public static var stream:FileStream;
            public static var stream2:FileStream;
            public static var file:File;

            public var readFile:ByteArray;

            public function initiate():void
            {
                file = File.applicationDirectory.resolvePath("assets/sample/sample.htm");

                readFile = new ByteArray;
                stream = new FileStream();
                stream.open(file, FileMode.READ);
                stream.readBytes(readFile);
                stream.close();

                html.htmlText = readFile.toString();//Not showing image.
            }
        ]]>
    </fx:Script>
    <mx:HTML id="html" left="10" top="10" width="220" height="250"/>
    <mx:HTML id="html2" left="240" top="10" width="220" height="250"
             location="assets/sample/sample.htm"/><!--Showing Image-->
</s:WindowedApplication>

そしてHTML:

<HTML>
<HEAD>
<TITLE>title</TITLE>
<SCRIPT LANGUAGE="JavaScript">
function someFunction(someValue)
    {
        //some code;
    }
</SCRIPT>
</HEAD>
<BODY>
<P>This is image</P>
<P><IMG SRC="/assets/sample/images/myimage.gif" ALT="myimage.gif" WIDTH="203" HEIGHT="105"></P>
</BODY>
</HTML>

myimage.gif は、assets/sample/images/myimage.gif にあります。

4

3 に答える 3

1

Zeus は、主に AIRのセキュリティ上の理由から、htmlText プロパティが完全にはサポートされていないと述べています。そのため、文字列を介して html コンテンツを配置すると、コンテナーはアプリケーション サンドボックスにありません (デフォルト値: false)。ただし、html 文字列の外部コンテンツが信頼できることが確実な場合は、htmlLoader.placeLoadStringContentInApplicationSandbox を true に設定する必要があります。

于 2013-10-18T06:06:46.303 に答える
0

http デバッガーを使用している場合 (firebug/chrome デバッガーでは [net] タブを使用)、Flash がどのフォルダーから画像を読み込もうとしているかを確認できます。

おそらく、読み込まれた html ファイルではなく、.swf ファイルの場所に関連しています。

于 2013-10-16T07:44:16.110 に答える