2010-01-21 5 views
0

나는 로컬에서 잘 실행되는 SWF (AS3)를 가지고,하지만 난 서버에 SWF를 놓고 브라우저에서 실행할 때 그리기 방법을 사용하려고 할 때, 그것은 충돌 :Flash (AS3)는 draw 메소드를 사용하지 않지만 swf가 서버에서 실행될 때만 사용합니까?

var bmp:BitmapData=new BitmapData(ldr.width,ldr.height,true,0x00FFFFFF); 
bmp.draw(ldr); 

LDR 인을 이 시점에서 다른 서버에서 jpg를 성공적으로로드 한 로더. 무대에 ldr을 추가하고 이미지를 볼 수 있습니다. 무슨 일 이니?

답변

1

다른 서버의 crossdomain.xml이 올바른지 확인하십시오.

+0

crossdomain.xml 문제가있는 경우 이미지를 전혀 다운로드 할 수 있습니까? draw 메서드가 호출 될 즈음에 서버와의 상호 작용이 끝났다고 생각할 것입니다. –

1

당신은 원격 도메인에서로드 된 이미지의 bitmapData 액세스하기 위해 trueLoaderContext합니다 (load() 방법의 제 (선택적) 인자)의 checkPolicyFile을 설정한다. 당신이 Loader 클래스의 load() 방법을 사용하여 이미지를로드 할 때

Accessing BitmapData

var loader:Loader = new Loader(); 
var context:LoaderContext = new LoaderContext(true); 
loader.load(urlRequest, context) 

, 당신은 LoaderContext 객체 인 context 매개 변수를 지정할 수 있습니다. LoaderContext 객체의 checkPolicyFile 속성을 true로 설정하면 Flash Player는 이미지가로드 된 서버의 크로스 도메인 정책 파일을 확인합니다. 크로스 도메인 정책 파일이있어, 그 파일이로드하는 SWF 파일의 도메인을 허가하고있는 경우, 파일은 Bitmap 오브젝트의 데이터에 액세스 할 수 있습니다. 그렇지 않으면 액세스가 거부됩니다.

호출하는 SWF 파일의 도메인 외부에서 이미지 (JPEG, GIF 또는 PNG)를로드 할 때이 플래그를 true로 설정

LoaderContext::checkPolicyFile

, 그리고 당신은 콘텐츠에 대한 액세스를 필요로 할 것으로 예상 그 이미지의 ActionScript에서. 이미지 내용에 액세스하는 예로는 Loader.content 속성을 참조하여 Bitmap 객체를 얻은 다음 BitmapData.draw() 메서드를 호출하여로드 된 이미지 픽셀의 복사본을 가져 오는 작업이 있습니다. 로드시에 checkPolicyFile를 지정하지 않고 이러한 조작을 시도하면 (자), 필요한 폴리시 파일이 아직 다운로드되어 있지 않기 때문에 SecurityError 예외가 발생합니다.

Loader::load()

로드 된 내용이 이미지 인 경우 해당 SWF 파일의 도메인이 크로스 도메인에 포함되지 않는 한, 데이터는 보안 샌드 박스 외부의 SWF 파일에 액세스 할 수 없습니다 이미지의 원점 도메인에있는 정책 파일.

BitmapData::draw()

참고 : 자식의 모든 개체가 호출자와 동일한 도메인에 있거나 또는 있어야합니다 소스 객체와 (A Sprite 또는 MovieClip 객체의 경우) Security.allowDomain() 메서드를 호출하여 호출자가 액세스 할 수있는 SWF 파일에 저장합니다. 이러한 조건이 충족되지 않으면 draw() 메서드는 아무 것도 그리지 않고 SecurityError 예외를 발생시킵니다. 이 제한은 응용 프로그램 보안 샌드 박스의 AIR 내용에는 적용되지 않습니다.