RPG 바람 맵을 실현하는 Egret 공식 추천 방법 (실패 편) getResByUrl 호출 실패

8577 단어 EgretEngine
원시문
편집기
편집Tiled Map Editor 사용
공식 홈페이지: https://www.mapeditor.org/

Windows Edition, Mac Edition은 물론 Linux도 지원합니다.

샘플 맵 열기
파일을 열면 "Tiled"디렉터리에 있는 "examples"디렉터리를 열고 tmx 파일을 엽니다.
desert.tmx 파일을 엽니다.


맵 데이터 불러오기
tmx 맵 파일을 선택하십시오.tmx 파일은 egret에서 지원할 수 있으며, 다른 파일은 잠시 사용할 수 없습니다.
[Egret 공식 홈페이지]
따라서 내보내지 않아도 tmx 파일을 직접 읽을 수 있습니다
다음에 이쪽의 외부 모듈을 프로젝트에 추가합니다.
적당한 곳에서 다운로드하면 프로젝트의 egretProperties입니다.json을 고쳐 쓰고 모듈을 추가하십시오.
path 프로젝트 루트 디렉터리에서 라이브러리 tiled/libsrc 까지의 상대 경로를 입력하십시오
egretProperties.json
{
:
  "modules": [
:
-    }
+    },
+    {
+      "name": "tiled",
+      "path": "../egret-game-library-master/tiled/libsrc"
+    }
  ]
}
다음 구축egret build -e resource 카탈로그에서 복사dessert.tmx 및 관련 파일hexmini.pngtmw_dessert_spacing.png
편집dessert.tmx의 일부
dessert.tmx
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" tiledversion="1.1.5" orientation="orthogonal" renderorder="right-down" width="40" height="40" tilewidth="32" tileheight="32" infinite="0" nextlayerid="2" nextobjectid="1">

- <tileset firstgid="1" source="desert.tsx"/>
+ <tileset firstgid="1" name="Desert" tilewidth="32" tileheight="32" spacing="1" margin="1" tilecount="48">
+ <image source="tmw_desert_spacing.png" width="265" height="199"/> 
+ </tileset>
 <layer id="1" name="Ground" width="40" height="40">
:
 </layer>
</map>
Main Class 를 다음 항목으로 변경
Main.ts
class Main extends egret.DisplayObjectContainer {
    private request:egret.HttpRequest;
    private url:string;

    public constructor() {
        super();    
        console.log("constructor");
        this.once(egret.Event.ADDED_TO_STAGE,this.onAddToStage,this);
    }

    private onAddToStage () {
        this.url = "resource/desert.tmx"; 
        this.request = new egret.HttpRequest();
        this.request.once( egret.Event.COMPLETE,this.onMapComplete,this);
        this.request.open(this.url,egret.HttpMethod.GET);
        this.request.send();
    }

    private onMapComplete( event:egret.Event ) {
        var data:any = egret.XML.parse(event.currentTarget.response);
        var tmxTileMap: tiled.TMXTilemap = new tiled.TMXTilemap(2000, 2000, data, this.url);
        tmxTileMap.render();
        this.addChild(tmxTileMap);
    }
그런데 갑자기 오류가 생겼어요!
assetsmanager.js:1177 Uncaught TypeError: Cannot read property 'getResByUrl' of undefined
    at Object.getResByUrl (assetsmanager.js:1177)
    at TMXImage.loadImage (tiled.js:1253)
    at new TMXImage (tiled.js:1187)
    at new TMXTileset (tiled.js:2568)
    at TMXTilemap.readMapObjects (tiled.js:1041)
    at TMXTilemap.getLayers (tiled.js:957)
    at TMXTilemap.render (tiled.js:946)
    at Main.onMapComplete (Main.ts:54)
    at WebHttpRequest.EventDispatcher.$notifyListener (egret.js:349)
    at WebHttpRequest.EventDispatcher.dispatchEvent (egret.js:328)
결론
마지막 걸음은 움직이지 않는다!무슨

좋은 웹페이지 즐겨찾기