new collie.Map(nTileWidth, nTileHeight, htOption)
2D Tiled Map - 2D Tiled Map is optimized canvas rendering. so you should set renderingMode option as "canvas" in a layer. but an object layer doesn't need to set canvas rendering.
Name | Type | Description | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
nTileWidth |
Number |
타일 1개의 너비 |
||||||||||||||||||||||||||||
nTileHeight |
Number |
타일 1개의 높이 |
||||||||||||||||||||||||||||
htOption |
Object |
|
Example
// Make random data
var rowLength = 20;
var colLength = 20;
var objectCount = 10;
var tileSize = 30; // px
var mapData = [];
for (var row = 0; row < rowLength; row++) {
var rowData = [];
for (var col = 0; col < colLength; col++) {
rowData.push({
backgroundColor: Math.random() > 0.5 ? "red" : "yellow" // A Tile data doesn't necessary to contain dimension and position.
});
}
mapData.push(rowData);
}
// Create a Map instance
var map = new collie.Map(tileSize, tileSize, {
useEvent: true,
useLiveUpdate : false
}).addTo(layer).addObjectTo(objectLayer);
// Add a mapdata.
map.setMapData(mapData);
// Add objects for display on the map.
for (var i = 0; i < objectCount; i++) {
var tileX = Math.round(Math.random() (colLength - 1));
var tileY = Math.round(Math.random() (rowLength - 1));
var pos = map.getTileIndexToPos(tileX, tileY);
map.addObject(tileX, tileY, new collie.DisplayObject({
x : pos.x + 5,
y : pos.y + 5,
width : tileSize - 10,
height : tileSize - 10,
backgroundColor : "blue"
}));
}
// Attach a event handler.
map.attach({
mapclick : function (e) {
console.log(e.tileX, e.tileY);
}
});
Extends
Requires
- module:collie.addon.js
Methods
-
addObject(nTileX, nTileY, oDisplayObject)
-
타일에 객체를 추가
Name Type Description nTileX
Number nTileY
Number oDisplayObject
collie.DisplayObject -
addObjectTo(oLayer){collie.Map}
-
레이어에 Object을 바로 추가한다. 인터페이스의 통일성을 위해 추가함
Name Type Description oLayer
collie.Layer Returns:
체이닝을 위한 반환 값
-
addTile(nTileX, nTileY, htOption)
-
맵을 개별적으로 생성한다
Name Type Description nTileX
Number nTileY
Number htOption
Object -
addTo(oLayer){collie.Map}
-
레이어에 바로 추가한다. 인터페이스의 통일성을 위해 추가함
Name Type Description oLayer
collie.Layer Returns:
체이닝을 위한 반환 값
-
inherited attach(vEvent, fHandler){collie.Component}
-
이벤트 핸들러 추가
Name Type Description vEvent
Object | String fHandler
Function Returns:
체이닝 지원
-
changeTile(nTileX, nTileY, htOption)
-
해당 타일의 옵션을 변경한다
Name Type Description nTileX
Number nTileY
Number htOption
Object 기존 옵션이 사라지는 것이 아니고 중첩된다
-
inherited detach(vEvent, fHandler)
-
이벤트 핸들러를 해제한다
Name Type Description vEvent
Object | String fHandler
Function 값이 없을 경우 이 이벤트에 할당된 전체 핸들러를 해제한다
-
inherited detachAll(sName)
-
모든 이벤트 핸들러를 해제
Name Type Description sName
String 이벤트 이름, 값이 없으면 이 컴포넌트에 할당된 모든 이벤트를 해제한다
-
inherited fireEvent(sName, oEvent){Boolean}
-
이벤트 발생
Name Type Description sName
String oEvent
Object Returns:
발생 중 collie.ComponentEvent의 stop 메소드가 실행될 경우 false를 반환한다
-
inherited get(sName){Variables}
-
DisplayObject와 Layer의 서로 다른 인터페이스를 맞추기 위한 임시 메서드
Name Type Description sName
String -
getContainer(){collie.DisplayObject}
-
Returns:
DisplayObject를 반환
-
getObject(nTileX, nTileY, fFilter){collie.DisplayObject|Boolean}
-
필터를 이용해 해당 좌표에 등록된 객체를 가져온다
Name Type Description nTileX
Number nTileY
Number fFilter
Function -
getObjectContainer(){collie.DisplayObject}
-
Returns:
컨테이너 DisplayObject를 반환
-
getObjects(nTileX, nTileY){Array|Boolean}
-
해당 좌표에 등록된 객체를 가져온다
Name Type Description nTileX
Number nTileY
Number -
getPosition(){Object}
-
Container의 위치를 반환한다
Returns:
Name Type Description htResult
Object Name Type Description htResult.x
Number htResult.y
Number -
getPosToTileIndex(nX, nY){Object}
-
포지션으로 타일 인덱스를 구함
Name Type Description nX
Number nY
Number Returns:
Name Type Description htResult
Object Name Type Description htResult.tileX
Number htResult.tileY
Number -
getSurroundedTiles(nTileX, nTileY){Array}
-
해당 타일을 둘러싼 타일 목록을 구한다
Name Type Description nTileX
Number nTileY
Number Returns:
반환되지 않고 타일 정보가 반환 됨
-
getTile(nTileX, nTileY){Object|Boolean}
-
타일을 가져온다
Name Type Description nTileX
Number nTileY
Number Returns:
반환되지 않고 타일 정보가 반환 됨
-
getTileCountOnScreen(){Number}
-
한 화면에 보이는 최대 타일 갯수 반환
-
getTileIndexToPos(nTileX, nTileY){Object}
-
타일 인덱스로 포지션을 구함
Name Type Description nTileX
Number nTileY
Number Returns:
Name Type Description htResult
Object Name Type Description htResult.x
Number htResult.y
Number -
getTileXLength()
-
tileX 길이를 반환
Type Description Number -
getTileYLength()
-
tileY 길이를 반환
Type Description Number -
hasObject(nTileX, nTileY, fFilter){Boolean}
-
해당 좌표에 객체가 있는지 반환
Name Type Description nTileX
Number nTileY
Number fFilter
Function -
isVisibleOffset(nTileX, nTileY){Boolean}
-
보여지는 영역에 속하는지 확인
Name Type Description nTileX
Number nTileY
Number -
lock(){collie.Map}
-
화면을 움직이지 않게 한다
-
moveObject(nTileX, nTileY, 타일에)
-
등록돼 있는 객체를 옮김
Name Type Description nTileX
Number 옮길 타일 x
nTileY
Number 옮길 타일 y
타일에
collie.DisplayObject 등록돼 있는 객체
-
inherited option(vName, vValue, bNotOverwrite)
-
컴포넌트의 옵션을 설정한다.
Name Type Description vName
Object | String 옵션 이름이나 여러 옵션을 설정할 수 있는 객체를 넣을 수 있다.
vValue
Variables optional 옵션 값, 값이 없다면 해당 옵션 값을 반환한다.
bNotOverwrite
Boolean optional 이 값이 true면 기존에 값이 있을 경우 덮이 씌우지 않는다
Example
component.option({ a : 1, b : true });
component.option("a", 1); component.option("a"); // return 1
-
inherited optionSetter(sName, fSetter)
-
옵션 값이 설정될 때 실행될 함수를 지정한다. Setter는 한 속성 당 한 개의 함수만 설정할 수 있다.
Name Type Description sName
String fSetter
Function -
removeObject(oDisplayObject)
-
타일에서 객체를 제거
Name Type Description oDisplayObject
collie.DisplayObject -
removeTile(nTileX, nTileY)
-
타일을 지운다
Name Type Description nTileX
Number nTileY
Number -
inherited set(sName, vValue, bNotOverwrite){Object}
-
DisplayObject와 Layer의 서로 다른 인터페이스를 맞추기 위한 임시 메서드
Name Type Description sName
String vValue
Variables bNotOverwrite
Boolean optional Returns:
method chaining
-
setLayer(oLayer)
-
Map을 추가할 레이어를 설정한다
Name Type Description oLayer
collie.Layer -
setMapData(aMapData)
-
맵을 일괄적으로 생성한다
Name Type Description aMapData
Array 맵 데이터 array[row][col] = htOption
-
setObjectLayer(oLayer)
-
Object을 추가할 레이어를 설정한다
Name Type Description oLayer
collie.Layer -
setPosition(nX, nY)
-
Container의 위치를 설정한다
Name Type Description nX
Number nY
Number -
unlock(){collie.Map}
-
화면을 움직이게 한다
-
inherited unset(sKey)
-
옵션을 제거한다
Name Type Description sKey
String -
unsetLayer()
-
Map을 레이어에서 제거한다
-
unsetMapData()
-
맵 데이터를 초기화 한다
-
unsetObjectLayer()
-
Object을 레이어에서 제거한다
Events
-
mapchange
-
맵의 타일이 변경됐을 때
Name Type Description htEvent
Object Name Type Description x
Number 컨테이너 x 좌표
y
Number 컨테이너 y 좌표
event
HTMLEvent 이벤트 객체
-
mapchange
-
맵의 타일이 변경됐을 때
Name Type Description htEvent
Object Name Type Description x
Number 컨테이너 x 좌표
y
Number 컨테이너 y 좌표
startTileX
Number 현재 화면 안에 있는 타일의 시작 인덱스
startTileY
Number 현재 화면 안에 있는 타일의 시작 인덱스
endTileX
Number 현재 화면 안에 있는 타일의 끝 인덱스
endTileY
Number 현재 화면 안에 있는 타일의 끝 인덱스
event
HTMLEvent 이벤트 객체
-
mapclick
-
맵을 클릭했을 때
Name Type Description htEvent
Object Name Type Description x
Number 컨테이너 x 좌표
y
Number 컨테이너 y 좌표
eventX
Number 이벤트 x 좌표
eventY
Number 이벤트 y 좌표
tileX
Number 타일 x 인덱스
tileY
Number 타일 y 인덱스
event
HTMLEvent 이벤트 객체
-
mapdown
-
맵에 마우스나 터치를 시작했을 때
Name Type Description htEvent
Object Name Type Description x
Number 컨테이너 x 좌표
y
Number 컨테이너 y 좌표
eventX
Number 이벤트 x 좌표
eventY
Number 이벤트 y 좌표
event
HTMLEvent 이벤트 객체
-
mapmove
-
맵이 이동할 떄
Name Type Description htEvent
Object Name Type Description x
Number 컨테이너 x 좌표
y
Number 컨테이너 y 좌표
event
HTMLEvent 이벤트 객체
-
mapup
-
맵에 마우스나 터치가 끝났을 때
Name Type Description htEvent
Object Name Type Description x
Number 컨테이너 x 좌표
y
Number 컨테이너 y 좌표
eventX
Number 이벤트 x 좌표
eventY
Number 이벤트 y 좌표
event
HTMLEvent 이벤트 객체