2017-03-14 8 views
0

acrionscript swf 파일에 다른 문제가 있습니다. CSV 파일에서 일부 텍스트를 읽습니다. FLA 파일을 만들고 애니메이션 편집기에서 테스트하면 작동하고 CSV 파일 안의 모든 텍스트를 TextField로 볼 수 있습니다. .swf를 내보내고 Adobe Flash Player 11.4 r402로 실행하면 CSV 파일에있는 텍스트를 볼 수 없습니다.ActionScript 3.0 .fla 파일 작동, .swf 파일 내보내기 작동하지 않음

import flash.net.URLRequest; 
import flash.net.URLLoader; 
import flash.events.Event; 
import flash.events.IOErrorEvent; 
import flash.filesystem.*; 
import flash.text.TextField; 

var pathToFile:String = File.applicationDirectory.resolvePath('ex.csv').nativePath; 

var requestedFile:URLRequest = new URLRequest(pathToFile); 

var myTextField:TextField = new TextField(); 

myTextField.autoSize = TextFieldAutoSize.LEFT; 

var documentLoader = new URLLoader(); 

documentLoader.addEventListener(Event.COMPLETE, onload); 

documentLoader.load(requestedFile); 

function onload(evt:Event):void 
{ 
    myTextField.text = evt.target.data; 
    addChild(myTextField); 
} 

나는이 broswer에서 SWF 파일을 열려고하면 나는이 오류가 : 어떻게 할 수

SecurityError:[SecurityErrorEvent type ="securityError" bubbles = false cancelable = false evenPhase=2 text="Error#2048"

을 나는이 코드를 작성하는 일 photogram으로 구성이 FLA에 파일을 생성 .swf 파일이 작동하도록 만드시겠습니까? CSV 파일의 데이터를 .swf 파일로 읽는 방법이 있습니까?

여러분, 고마워요!

+0

는 오류 메시지를 받고 있습니까 : SWF는 SWF URL을 구문 분석 할 필요가있는 동일한 폴더에서 데이터 파일을로드, AIR 클래스를 사용하지? 그렇다면 질문을 편집하여 오류의 세부 사항을 포함 시키십시오. AS3 용으로 컴파일하는 경우 (예 : FlashPro/AnimateCC에서 'ActionScript 3'프로젝트를 선택한 경우 Organis가 답변에서 가리키는 것처럼 File 클래스를 사용할 수 없습니다 (AIR을 선택하지 않으면 컴파일러 오류가 발생합니다) 템플릿을 만들 때 .fla 파일을 만들었습니다. – BadFeelingAboutThis

답변

1

이것은 샌드 박스 문제 일 가능성이 큽니다 (보안 오류).

무슨 일이 일어나고 있는지 알고 싶다면 URLLoader과 같은 비동기 클래스를 사용할 때 항상 (예 : COMPLETE 대신) 오류를 항상 들어야합니다. ,

function onIOError(e:IOErrorEvent):void { 
    //file not found, the event (e) will tell you the path it was trying to load and other details 
    trace(e); 
    //alert the user there was a problem 
} 

function onSecurityError(e:SecurityErrorEvent):void { 
    //file was not allowed to load, sandbox issue 
    trace(e); 
    //alert the user there a problem 
} 

내가 의심 당신이 참으로 보안/샌드 박스 오류가 발생하는 경우 :

documentLoader.addEventListener(IOErrorEvent.IO_ERROR, onIOError); 
documentLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError); 

를 그리고 각각의 핸들러 메소드를 추가

는 완전한 리스너 외에 다음 청취자를 추가 올바른 보안 샌드 박스 설정으로 게시하고 있는지 확인하십시오.

게시 설정 file -> publish settings으로 이동하십시오.

Local playback security이라는 드롭 다운이 표시됩니다. 이 설정이 로컬 액세스가 아닌 네트워크에만 액세스하도록 설정되어 있는지 확인하십시오 (CSV가 서버에서 오는 경우).

+0

네트워크 액세스 만 변경되었지만 다시 작동하지 않습니다. 2048 오류로 인해 SWF 파일이 열렸습니다. – SpaghettiFunk

+0

확인 했으므로 보안 오류가 발생했음을 확인했습니다. 그 오류를 일으킬 수있는 몇 가지 사항과 네트워크 액세스를 변경해도 차이가없는 경우 크로스 도메인 문제 일 가능성이 높습니다 .CSV가 SWF와 관련하여 어디에 있는지 확인하십시오 (SWF가 로컬에서 실행되고 있는지 확인). 컴퓨터 스토리지 및 귀하의 CSV는 어딘가에 서버에 의해 제공되고 있습니까?) – BadFeelingAboutThis

+0

나는 당신의 모든 도움에 감사드립니다. 주요 솔루션은 간단합니다 : CSV 파일과 SWF 파일을 신뢰할 수있는 파일에 저장해야합니다.Adobe Flash Player 제어판 애플릿을 사용하여 SWF 파일을 열어야합니다. 그런 다음 고급에서 탐색하고 SWF가있는 디렉토리와 CSV 파일을 모두 추가해야합니다. Windows 10에서 작동합니다. Windows에서 문제가 발생할 수 있으므로 CSV 경로에서 슬래시/백 슬래시를 계속 주시해야합니다. 다시 감사합니다! – SpaghettiFunk

2

패키지 flash.filesystem. *은 AIR 런타임 패키지입니다. Flash IDE는 테스트하는 동안 AIR 런타임을 에뮬레이션하지만 작동하지만 Flash 플러그인 및 Flash Projector 런타임은 이러한 클래스를 지원하지 않습니다.

옵션 1 : AIR 응용 프로그램을 게시하십시오.

옵션 2 :

// Objtain SWF URL. 
var applicationPath:String = loaderInfo.url; 

// Figure/slash or \ backslash is used as folder separator. 
var systemSlash:String = (applicationPath.indexOf("\\") > -1)? "\\": "/"; 

// Remove SWF name from URL. 
var aSplit:Array = applicationPath.split(systemSlash); 
aSplit.pop(); 
aSplit.push(""); 
applicationPath = aSplit.join(systemSlash); 

// Now applicationPath contains full path to the folder where SWF is. 
// Use it wisely!