도드넷
JAVASCRIPT#62 - 자바스크립트 물체 움직이기, 다중 객체 제어 본문
Watching her strolling in night, so white....wondering, why its only after dark..
JAVASCRIPT#62 - 자바스크립트 물체 움직이기, 다중 객체 제어
1. 스프라이트 추가하는 함수
gameFramework.addSprite = function(obj, where)
{
var options = $.extend({
parentId: "field",
x: 0,
y: 0
}, where); // 생성 기본 옵션
$("#"+options.parentId).append(
"<div id='"+obj.divId+"' style='position: absolute; left: "+options.x+"px; top: "+options.y+"px; width:"+obj.frameWidth+"px; height:"+obj.frameHeight+"px; background-image: "+obj.url+";'><div>");
alert("added!");
}
- 씬에 물체를 추가할때 append 메소드를 이용한다.
- style 쪽에서 "+내용+" 형태로 값을 전달하고 있는것이 보인다. background-image 같은경우 전달값이 url("주소")형태의 스트링이여 하며 이때 이중 따옴표형식이 틀리면 절대 안되는데, 항상 작은것'' 안에 큰것""이 들어가야 한다.
예를 들면 이런식으로 var AJ = new Unit("AJ", 640, 640, 'url("AJ.png")');
.extend 메소드가 다시나왔는데 얘는 합치는 메소드로 기본값 + 사용자정의 값을 종합해준다.
2. 스프라이트 위치 설정및 반환용 함수
gameFramework.x = function(divId, position)
{
if(position)
{
$("#"+divId).css("left", position);
}
else
{
return parseInt($("#"+divId).css("left"));
}
}
gameFramework.y = function(divId, position)
{
if(position)
{
$("#"+divId).css("top", position);
}
else
{
return parseInt($("#"+divId).css("top"));
}
}
별로 볼건없고 좌우로 움직이거나 전달받은 divId에 해당하는 객체의 x위치나 y위치를 반환하는 함수이다.
3. 다중유닛 소환및 각자 따로 관리하기
var i = 0;
var unit_group = new Array();
function Unit(divId, frameWidth, frameHeight, url)
{
this.divId = divId + "_" + i; // div아이디는 고유하게 가지게 만듬.
this.frameWidth = frameWidth;
this.frameHeight = frameHeight;
this.url = url;
this.animqueue = new Array();
i = i + 1;
unit_group.push(this); // 만들고 유닛그룹에 넣어서 관리하기. 모두 AJ라는 이름이지만 unit_group[0~] 식으로 따로 불러낼수있음.
}
for(var v=0; v < 20; v++) // 내사랑 애플잭 20명 소환하기
{
var AJ = new Unit("AJ", 640, 640, 'url("AJ.png")');
}
alert(unit_group[0].divId);
alert(unit_group[12].divId);
$("#walk_button").on("click", function(){
for(var k = 0; k<unit_group.length; k++)
{
gameFramework.playanimation(unit_group[k], walk, true);
}
});
$("#stand_button").on("click", function(){
for(var k = 0; k<unit_group.length; k++)
{
gameFramework.playanimation(unit_group[k], stand, false);
}
});
var newposition = {
x:1000
};
for(var k = 0; k<unit_group.length; k++)
{
gameFramework.addSprite(unit_group[k], newposition);
newposition.x = newposition.x - 100;
}
배열을 이용해서 애플잭 다중소환 이후 애플잭 한꺼번에 제어하는 코드.
같은 이름의 객체 20개이지만 각자 다른 DIV ID를 가짐으로 다중으로 동시 제어가 가능하게 만듬.
이런식으로 스타크레프트처럼 유닛그룹생성, 다중선택 제어도 가능할듯.
'창고 > JS KING 포니 [중단]' 카테고리의 다른 글
JAVASCRIPT#64 - 게임 초기화 1부 (0) | 2016.07.09 |
---|---|
JAVASCRIPT#63 - 프리로드 .inArray (0) | 2016.07.08 |
JAVASCRIPT#61 - jQuery setInterval VS clearInterval (0) | 2016.07.06 |
JAVASCRIPT#60 - 스프라이트 시트 GIMP! (0) | 2016.07.04 |
JAVASCRIPT#59 - jQuery .on() detach에 대해여 (0) | 2016.07.03 |