2009-07-21 3 views
1

AS3 및 AIR로 게임을 개발 중입니다. 디스플레이 요소를로드하는 데 필요한 이미지의 양이 많습니다. 게임이 필요로하는 모든 이미지를 포함시키지 않아도되므로 한번에 모두 메모리에 저장하지 않아도됩니다. 소규모 프로젝트에서는 괜찮습니다.하지만 여기서는 의미가 없습니다.AS3/AIR : 런타임 이미지 데이터 관리

런타임 중에 이미지를로드하는 전략이 궁금합니다. 모든 파일이 매우 작고 로컬 (현재 프로젝트에서) 요청에 따라로드하는 것이 가장 좋은 해결책이 될 수 있지만,이를 관리하기 위해 사람들이 가지고있는 아이디어를 듣고 싶습니다.

보너스 포인트는 주문형 서버 측 이미지로드를위한 솔루션에 대해서도 궁금합니다.

답변

0

I가 정착 결국이 솔루션은 온 디맨드 데이터의 로딩 및 저장을 관리하는 재사용 가능한 싱글 로딩 클래스를 만드는 것이 었습니다. 참조를 저장하는 LOCAL 또는 REMOTE가 될 수있는 "작업"과로드 된 데이터 자체는 완전히로드 된 관리자 클래스에 매핑됩니다.

정말 back2dos의 제안을 좋아하지만, 자산 변경시 매번 SWF의 (다시) 생성을 관리하는 것이 내 용도에 적합하지 않습니다.

0

프로젝트 프로젝트는 amfphp 및 mysql blob-storage를 사용하여 솔루션을 만들 수 있습니다. 이 링크에서 u는 어떻게 mysql 얼룩 - 스토리지를 이해할 수 있습니다.

http://www.anyexample.com/programming/php/php_mysql_example__image_gallery_%28blob_storage%29.xml

및 AMFPHP 너무 좋은 생각이 될 것 http://www.bytearray.org/?p=90

+0

as3 프로젝트 *로드 * 이미지를 효율적으로 만드는 데 어떻게 도움이 될지 명확하지 않습니다. 자유롭게 정리해주십시오. MySQL은 이미지 로딩에 과잉 인 것처럼 보입니다. 외부 데이터 구조가 필요하다면 XML처럼 보일 것 같습니다. – grey

1

, 외부 SWF를 만들려면이 AMFPHP 라이브 JPEG 인코더를 확인하시기 바랍니다 또한 http://www.amfphp.org/

과를 방문하십시오, 그 삽입 이미지를 모두 함께 사용할 가능성이 있다면 그게 가능합니다 ... projectiles.swf, obstacles.swf, enemies.swf, misc.swf ... 무언가가 ... 말이 되네요 ... 아마도 자산을 리브로 나눌 수 있습니다. ls 또는 something ... swf에서 애셋을 추출 할 수있는 간단한 인터페이스를 사용합니다. 예를 들어, 정적 메서드 getAll을 사용하여 항상 클래스 Assets이 있고, 객체를 반환하고 문자열 식별자를 다음으로 매핑합니다. 클래스에 해당하는, 그래서 당신은 같은 것을 얻을 것이다 :

function onComplete(e:Event) {//this is the handler for the loading operation 
    var map:Object = (e.target as LoaderInfo).applicationDomain.getDefinition("Assets").getAll();//should return something like {"bullet1":Bullet1,"bullet2":Bullet2,...} 
    //do whatever you need to do with it 
} 

장점 : ...

    • 이미지가 서로에 대한 압축 된 하나를 얻을, 그래서 전체 파일 크기가 감소 될 것이다 당신은 크게 믿을 요청을 감소 귀하의 서버 ...
    • 일부 이름/경로 규칙에 따라 n-hundred 파일을 작성하지 않거나 (심지어 파일 인덱스가 어딘가에있어 파일의 존재 여부를 알 필요가 있습니다.) ..
    • 별도의 이미지를로드하는 대신 수백 개의 이미지를로드하는 대신 다른 swf를로드하여 앱을 쉽게 다시 만들 수 있습니다 ...
    • 이 접근법의 궁극적 인 장점은 클래스를 사용하여 간단하게 인스턴스화하고, 반복적으로 이미지를로드하는 대신 ... 첫 번째 작업은 동기식입니다. 후자는 수행하지 않습니다. 실제로 수행해야하는 경우 URLLoader을 사용하여 ByteArray에 이미지를로드 한 다음 가져 오는 것이 좋습니다. 무대 Loader::loadBytes ...

    swfmill을 사용하여 서버 측에서 swfs를 생성하여 프로세스를 자동화하고 싶을 수 있습니다 ...

    greetz

    back2dos

  • +0

    그건 꽤 실행 가능한 솔루션처럼 보입니다. 나는 인터페이스 요소에 대해 이렇게하는 생각을 좋아합니다. 그것은 완전히 단단한 아이디어입니다. 내 유일한 문제는 분류입니다. 자산 대부분을 그룹화하는 것이 중요하지 않습니다. 레벨 디자인을 위해 믹스 앤 매치가되도록 설계된 영역에 대해서는 많은 종류의 타일 시트가 있습니다. 이러한 번들로 제공되지 않는 솔루션에 대한 다른 생각은 없습니까? 또한 swfmill을 가리켜 주며 건배합니다. 이는 패키지 자산에 대한 친숙한 접근 방법처럼 보입니다. 이 프로젝트에 이상적은 아니지만 미래의 가능성을 상상할 수 있습니다. – grey