2013-10-16 10 views
0

내 플래시 4.6 프로젝트에서 일부 다른 소프트웨어에서 생성되는 자산 폴더에 수천 개의 html 파일이 있습니다. 일부 html 파일에 이미지가 있습니다.<img>이 작동 스크립트에서 작동하지 않습니다

이제 html 파일을 보호하기 위해 모든 파일을 암호화합니다. 그러나 나는 통해에 문자열 및로드에 암호를 해독 할 때

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

또는

html.htmlText = decryptedString.toString(); 

는 이미지가 표시되지 않는 및 빈의 경계 상자가 ALT 텍스트로 보여주고있다. 이 html 파일에는 javascript()가 있으며 작동 중입니다. 그런 다음 이미지를 보여주고있다

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

: I에 의해 HTML을로드 할 때

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

이 작업을 확인하려면 : 는 ("samople.htm") HTML 파일의 내용은 같다. 하지만 문자열을 사용할 때 :

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 /.."

내 모토는 assets 폴더에 html 파일을 보호하는 것입니다. 현재는 암호화/해독 할 수 있지만 이미지는 표시되지 않습니다.

나는 굴곡과 공중에서 새롭다. 모든 도움을 미리 감사드립니다.

편집 여기

가 내 전체 샘플 코드입니다 : 플렉스/액션

<?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의 위치는 : 자산/샘플/이미지/myimage.gif

답변

0

Firebug/Chrome 디버거에서 http 디버거를 사용하는 경우 'net'탭을 사용하면 Flash가 이미지로드를 시도하는 폴더를 확인할 수 있습니다.

아마도로드 된 HTML 파일이 아닌 .swf 파일 위치와 관련이 있습니다.

+0

AIR과 함께 Flash Builder 4.6을 사용하고 있으며이 프로그램은 Windows 응용 프로그램입니다. 중요한 것은 ** html.location **을 사용할 때 작동하지만, html 파일의 내용을 문자열로 변환하면 이미지를 표시하지 않는 것입니다. 다른 모든 것은 자바 스크립트에서도 작동합니다. – sonulrk

+0

여전히 이미지 경로가 잘못되었다고 생각하면 http 디버거를 사용하여 디버깅 할 수 있어야합니다. AIR 응용 프로그램에서도 'Charles HTTP 디버거'를 사용해보십시오. –

+0

이미지 경로가 정확합니다. 새 소프트웨어를 구입하고 사용하는 것이 더 번거로울 것입니다. html.html 텍스트가 작동하지 않지만 html.location이 작동 중입니다. – sonulrk

-1

Html 문자 대기 용 < img 태그는 작동하지 않습니다. Adobe air는 보안 목적으로 모든 < img 태그를 무시합니다.

해결 방법> 스파크 텍스트 흐름 구성 요소입니다. html 텍스트를 텍스트 흐름 형식 텍스트로 변환하고 textflow supported componenents에 표시하는 유틸리티가 있습니다.

+0

답장을 보내 주신 Mark와 Zeus에게 감사하지만 내 문제는 아직 분류되지 않았습니다. 이 HTML 파일에는 javascript가 있으며 <=> JS 호출이 있습니다. 이제 해독 된 파일을 모든 이미지가있는 사용자 하드 디스크에 임시 저장 한 다음 작동하는 ".location"속성을 사용해야합니다. – sonulrk

+0

AIR에서 이미지와 javascript가있는 여러 HTML 파일을 사용하는 다른 방법이 있습니까? 미리 감사드립니다. – sonulrk

+0

text.htmlText 속성은 HTML 태그를 완전히 지원하지 않습니다. HTML 파일을 표시해야하는 경우 Zeus

1

제우스가 올바르게 말하면, htmlText 속성은 주로 보안 이유 (AIR의 경우)을 완전히 지원하지 않습니다. 따라서 html 내용을 문자열을 통해 배치 할 때 컨테이너는 Application Sandbox에 없습니다 (기본값 : false). 그러나 html 문자열의 외부 내용이 신뢰할 수 있다고 확신하는 경우 htmlLoader를 설정해야합니다.placeLoadStringContentInApplicationSandbox를 true로 설정합니다.