在我的flash 4.6 Air项目中,我在assets文件夹中有几千个html文件,这些文件是从其他软件生成的。一些html文件有图像。
现在为了保护html文件,我加密了所有这些文件。但是当我将它们解密为字符串并加载到via:
时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";
然后显示图像。但是当我使用string by:
html.htmlText = '<p>some text</P><img src="../assets/sample/images/image.GIF" width="203" height="105"><p>some text</p>';
然后它没有显示图像。我试图改变src =“../ assets / ...”。 to src =“./ assets / ...”或src =“/ assets / ...”或src =“assets / ...”
我的座右铭是保护资产文件夹中的html文件。目前我可以加密/解密它们,但图像没有显示。
我是弹性和空气新手。提前感谢您的帮助。
修改
以下是我的完整示例代码: 挠曲/ 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
答案 0 :(得分:1)
Zeus正确地说,htmlText属性并不完全支持AIR中的安全原因。因此,当我们通过字符串放置html内容时,容器不在Application Sandbox中(默认值:false)。但是如果你确定html字符串中的外部内容是可信的那么你必须将htmlLoader.placeLoadStringContentInApplicationSandbox设置为true。
答案 1 :(得分:0)
如果您使用http调试器(在firebug / chrome调试器中,使用'net'选项卡),您可以查看Flash尝试加载图像的文件夹。
可能它与.swf文件位置有关,而与加载的html文件无关。
答案 2 :(得分:-1)
使用&lt; img标签的空中HtmlText无论如何都无法正常工作。为了安全起见,Adobe Air会忽略所有&lt; img标签。
解决方法是&gt; spark文本流组件。有一些实用程序可以将htmltext转换为文本流格式文本,并将其显示在文本流支持的组件中。