2013-09-25 1 views
0

텍스처를로드하는 데 away3d를 사용하려고합니다. 모든 프로젝트 내부에 텍스처를 내장하는 경우를 제외하고 잘 작동, 그것은 충돌 및 제공하는VerifyError : 오류 # 1014 : 클래스 mx.core :: BitmapAsset을 찾을 수 없습니다.

error: VerifyError: Error #1014: Class mx.core::BitmapAsset could not be found. 

질감을 삽입하는 코드 :

[Embed(source="../embedded/texture.jpg")] 
public var reelTexture:Class; 

나는 어도비 플렉스 빌더 3을 사용하고, Away3d 4.1.

답변

1

문제는 컴파일 할 때/core.swc/flex.swcframework.swc 그러나 ~ 200킬로바이트하여 응용 프로그램의 크기를 증가로 이어질 수있는이 SWC를 연결, 프로젝트 라이브러리 경로에 (플렉스 SDK 버전의 따라) 필요가 없다는 것입니다 flex를 직접 사용하지 않아도 mxmlc를 사용합니다.

나는 당신이 (우리가 우리의 순수한 AS3 프로젝트에서이 작업을 수행) 다음 않는 것이 좋습니다 :

1.Create flex4embedapi 이름 플렉스 라이브러리 프로젝트 (또는 flex3embedapi 당신이 당신의 주요 프로젝트에 사용하는 플렉스 SDK의 버전에 따라 다릅니다)

2.Create 파일 classes.as :이 클래스 라이브러리를 포함하여 목록에 포함되어

package 
{ 
    import mx.core.BitmapAsset; 
    import mx.core.ByteArrayAsset; 
    import mx.core.FontAsset; 
    import mx.core.SoundAsset; 
    import mx.core.SpriteAsset; 

public class classes 
{ 
    public function classes() 
    { 
     ByteArrayAsset; 
     SpriteAsset; 
     BitmapAsset; 
     FontAsset; 
     SoundAsset; 
    } 
} 
} 

3.Be 확인 (Project->Properties->Flex library build path->Classes)

4. 프로젝트의 lib 폴더 (연결된 swc 라이브러리가있는 폴더)에 flex4embedapi.swc을 복사하십시오.

이제는 모두 작동합니다.

UPD : 빠른 수정을 위해 는이 설정 파일을 시도 플렉스 SDK 4.6 (-load-설정 = config.xml 파일)이 연결된 다른 라이브러리없이 AS3 프로젝트에 대한 100 %의 기본 원리 :

<flex-config> 
    <target-player>11.1.0</target-player> 
    <default-frame-rate>40</default-frame-rate> 

    <compiler> 
     <locale> 
      <locale-element>en_US</locale-element> 
     </locale> 

     <external-library-path> 
      <path-element>${flexlib}/libs/player/{targetPlayerMajorVersion}.{targetPlayerMinorVersion}/playerglobal.swc</path-element> 
     </external-library-path> 

     <library-path> 
      <path-element>${flexlib}/libs/core.swc</path-element> 
      <path-element>${flexlib}/libs/player/{targetPlayerMajorVersion}.{targetPlayerMinorVersion}</path-element>  
     </library-path> 

     <optimize>true</optimize> 

     <warn-no-constructor>false</warn-no-constructor> 
    </compiler> 
</flex-config> 

테스트 프로젝트를 유일한 주 클래스를 포함합니다 embedtest.as :

package 
{ 
import flash.display.Sprite; 
import flash.utils.ByteArray; 

public class embedtest extends Sprite 
{ 
    [Embed(source="somefile.txt", mimeType="application/octet-stream")] 
    private static const some_file:Class; 

    public function embedtest() 
    { 
     var b:ByteArray = new some_file(); 
     trace(b.length); 
    } 
} 
} 
+0

빠른 수정을 위해 framework.swc를 추가했습니다. 문제는 동일합니다. 또한 대상 플레이어를 11.1로 추가 할 때 다음과 같은 경고 메시지가 표시됩니다. 이 컴파일 장치에는 구성된 런타임 공유 라이브러리를로드하기 위해 프레임 메타 데이터에 factoryClass가 지정되지 않았습니다. 런타임 공유 라이브러리없이 컴파일하려면 -static-link-runtime-shared-libraries 옵션을 true로 설정하거나 -runtime-shared-libraries 옵션을 제거하십시오. –

+0

빠른 수정은 사용하는 SDK의 버전에 따라 다릅니다. 예를 들어 SDK 4.6의 경우 _frameworks.swc_ 대신 _core.swc_를 추가해야합니다. 3.6의 경우 _flex.swc_ – fsbmain

+0

4.6의 경우 core.swc가 있으며 그것을 제거하고 다시 추가, 문제가 동일합니다 : (.) ​​정말 이상한. –

관련 문제