2012-02-29 2 views
0

내 고객 중 한 명이 많은 SWF를 가지고 있으며 iPad로 전송하려고합니다. 그러나 그는 FLA가 아니라 SWF 만 가지고 있습니다.기존 SWF를 iOS 용 Air에 삽입 할 수 있습니까?

iOS 용 Air 응용 프로그램 내에서 SWF를 실행하는 방법인지 알고 싶습니다. Loader를 사용하여 가져올 수 있다고 읽었지만 내부의 모든 코드를 무시하고 애니메이션으로 만 실행됩니다.

감사합니다. 도움이 필요합니다.

[업데이트] SWC 사용에 대해 읽었지만 여전히 코드를 실행할 지 확실하지 않습니다. 예 당신이 할 수있는

+0

은 SWF 파일에는 ActionScript는 허용되지 않습니다. 타임 라인 애니메이션 만 포함하고 코드가없는 swf 파일을로드하고 실행할 수는 있지만 다소 유용합니다. –

+0

실제로 swc 파일을 사용할 수 있지만 로더를 사용하여로드하지는 않습니다. 기본 응용 프로그램에 라이브러리로 포함 시키십시오. 불행히도 fla가 없으면 코드를 사용하여 swc를 생성 할 수 없습니다. – scriptocalypse

+1

swf 파일을 swc 파일로 패키징하는 것이 옵션 일 수 있습니다. swc 파일은 런타임에로드되지 않고 컴파일 타임에 포함됩니다. 일반적으로 swc 파일은 기존 swf 파일에서 빌드되지 않지만 swc 파일은 확장자가 .swc이고 지정된 내용이 포함 된 실제 zip 파일이므로 http://en.wikipedia.org/wiki/Adobe_SWC_file –

답변

2

업데이트를로드 할 수없는 SWF 10 월 2012 년 컴파일하는 것이 가능하다는 것을이 추가 싶어

이 완료 핸들러 내부에 SWF와 상호 작용 :

을 Adobe AIR 3.5에서 adl은 "다중 SWF 지원"기능을 도입했습니다.이 기능을 사용하면 로더를 사용하여 .ipa (서버가 아닌 로컬 파일)로 전달 된 SWF를로드하여 코드를로드 할 수 있습니다. adl 컴파일러 AOT는 .ipa에 포함 된 SWF를 컴파일하여 iOS에서로드하고 사용할 수있게합니다. 이 기능은 -swf-버전을 필요로

참고 :

AIR 3.5은 어도비 랩 사이트에이 글을 쓰는 시점에서 현재 베타 버전을 사용할 수 있습니다 = 18 이상의 루트 SWF (반드시로드되는 에셋은 아님) 및 응용 프로그램 xml 파일에서 3.5로 끝나는 AIR 네임 스페이스

이전 답변 : 코드와

이유 외부 SWF를 작동하지 않는 공기의 ADT 컴파일러에 의해 목표 - C 코드 소모품에 루트 SWF (만 루트 SWF)를 교차 - 컴파일이다 iOS 장치. [임베디드] SWF와 .ipa (AIR 3.5 이전)에 포함 된 SWF는 모두 크로스 컴파일되지 않습니다.

내가 포함 된 자산이 문제에 대한 해결 방법을 만들어 : gameLevel.swf이 코드가있는 경우

이 시나리오에서는
[Embed(source="gameLevel.swf")] 
    private var gameLevel:Class; 

... 

addChild(new gameLevel()); 

, 그것은 일반적으로 아이폰 OS에서 작동하지 않을 것, 새로운 gameLevel 때문에() 것 로더를 만들고 SWF 바이트 코드를 해석합니다.그러나 SWFMerge라는 도구를 사용하여 위의 SWF를 처음 실행하면 포함 된 SWF를 가져 와서 루트 SWF에 병합합니다. 결과적으로 ADT는 임베디드 코드를 objective-C로 컴파일하고, iOS에서 작동하며, 새로운 gameLevel()은 이제 로더가 아닌 자산 인스턴스를 생성합니다.

SWFMerge 도구

은 여기에 있습니다 :이 해결 방법은 당신을 위해 작동

http://www.onetacoshort.com/temp/SWFMerge_alpha.swf

LMK 경우 또는 문제가있는 경우. 건배! 애플이 아이폰 OS에로드 된 코드를 실행하기위한 타사 런타임을 허용하지 않기 때문에 정확한

-Jeff

+0

시도가 잘될 것 같습니다. 매우 감사합니다. –

1

,

애플은 당신이 사용하는 것이

이 작업을 수행하려면 응용 프로그램이 당신의 .ipa의 내부를 인터넷에서 SWF의 사용 로더를 다운로드하지만 당신은 포함 할 수 있습니다 및 포함 할 수 없습니다

embed 태그

[Embed("myswf.swf", mimeType="application/octet-stream")] private var mySwf:Class; 

당신은 사용할 수 있습니다

swf = new mySwf(); 
swf.addEventListener(Event.COMPLETE, completeHandler); 

그리고 나는

+0

그러나 한 가지 문제가 있습니다. 라이브러리 심볼을이 방법으로 만 사용할 수 있습니다. http://stackoverflow.com/questions/8915924/access-maintimeline-symbol-using-class-level-embed/8920101#8920101 – weltraumpirat

관련 문제