2012-11-08 4 views
2

Flex/Starling 게임을 개발하고 모든 Sprite 호출을 최적화하기 위해 Atlas Texture를 사용하고 싶습니다. 내 문제는 내가 명확하고 간단한 코드를 사용하여 기본 ressources 및 실행할 수 없습니다, 나는 인수 오류, 텍스처 null이 될 수 없다는 것입니다. , 내 코드 나는 .getTexture 방법은 아무것도 찾을 수 없다는 것을 이해하지만, 내가이 문제를 해결하는 방법을 참조 해달라고 :Starling, Atlas Texture "텍스처는 null이 될 수 없습니다."

[Embed(source = "Atlas_bg/AtlasBackground.xml")] 
public var AtlasXml:Class 

[Embed(source = "Atlas_bg/AtlasBackground.png")] 
public var AtlasPng:Class 


// create atlas 
var texture:Texture = Texture.fromBitmap(new AtlasPng()); 
var xml:XML = XML(new AtlasXml()); 
var atlas:TextureAtlas = new TextureAtlas(texture, xml); 
// display a sub-texture 
var objsTexture:Texture = atlas.getTexture("star_0");// ne trouve rien 
var objsImage:Image = new Image(objsTexture); 
addChildAt(objsImage, 0.6); 
objsImage.x = 200; 
objsImage.y = 200; 

XML 내용 :

<TextureAtlas imagePath="AtlasBackground.png"> 
    <SubTexture name="star_0" x="2" y="2" width="20" height="20"/> 
    <SubTexture name="star_1" x="2" y="24" width="20" height="20"/> 
</TextureAtlas> 

들으을.

답변

0

ArgumentError의 위치가 확실합니까? 두 번째 매개 변수의 addChildAt() 함수에 int 대신 Number을 사용하고있는 것으로 나타났습니다.

이로 교환 시도하고 그 것을 해결되는지 확인 :

addChild(objsImage); 
+0

그래, 그게 이상해 (오타 일 수도 있음)하지만 오류의 원인은 아닙니다. addChildAt는 int 매개 변수가 전달 된 Number가 정수 부분 (이 경우 0)으로 잘 리므로 제대로 작동해야합니다. – danii

4

난 당신이 제대로 때문에가 제대로되지 않을 수 TextureAtlas의 정보를 아틀라스 XML 파일를 내장하지 않는 생각을 독서.

다음과 같은 두 가지 추가하십시오 :

  1. Embed 메타 태그에 mimeType를 속성을 추가

    [삽입 (소스 = "Atlas_bg/AtlasBackground.xml", mimeType를 = "응용 프로그램/octet-stream ")] public var AtlasXml : Class;

  2. 은 XML 파일의 시작 부분에 다음 줄을 추가합니다 :

    < XML 버전 = "1.0"인코딩 = "UTF-8"을? 이 후

>는 이전 제거하는 몇 번 잘못된 포함 된 파일 구축 프로젝트를 청소하고 다시 프로젝트를 빌드 . 이제는 모든 것이 작동해야합니다.

+0

Thx, 팁을 드리겠습니다. 문제가 해결되면 알려주세요. – Georgio

관련 문제