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.png
및 tmw_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)
결론마지막 걸음은 움직이지 않는다!무슨
Reference
이 문제에 관하여(RPG 바람 맵을 실현하는 Egret 공식 추천 방법 (실패 편) getResByUrl 호출 실패), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/motoyasu-yamada/items/1f10a0bedb68727852ca텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)