私はゲームからウェブにGPSマップシステムを複製しようとしています。基本的にゲームには12種類の地図があり、それぞれにあなたのキャラクターを歪ませたり行くことができる別のセーフエリアがありますが、途中でいくつか問題があります。JavaScriptのキャンバスの複雑さ
function ntGps($timeout) {
return {
restrict: 'E',
replace: true,
scope: {
ntMap: '@',
ntX: '@',
ntY: '@'
},
template: '<div class="nt-gps"><div class="nt-content"></div></div>',
link: link
};
function link(scope, el) {
var q = el[0].querySelector("div.nt-content"),
m = new Image(),
a = new Image(),
c = document.createElement("canvas");
m.src = "http://i.imgur.com/vD9jua7.png";
a.src = "http://i.imgur.com/AU2peAy.png";
scope.$watch(e, l);
function e() {
return el[0].clientWidth;
}
function l(s) {
var x, y;
scope.style = {
'width': s + "px",
'height': s + "px"
};
c.width = s;
c.height = s;
m.onload = _d;
if (m.complete) {
_d();
}
function _d() {
var _c = c.getContext("2d"),
_x = Math.floor((s * scope.ntX)/256, 10) + 4,
_y = Math.floor((s * scope.ntY)/256, 10) + 4;
_c.drawImage(a, 0, 0, 512, 512, 50, 50, s - 100, s - 100);
_c.globalCompositeOperation = "lighten";
_c.drawImage(m, 0, 0, 512, 512, 0, 0, s, s);
c.addEventListener("click", function(e) {
// console.log(_c.getImageData(0, 0, 1, 1));
var clickedX = e.pageX - this.offsetLeft;
var clickedY = e.pageY - this.offsetTop;
console.log(e);
});
}
}
q.appendChild(c);
}
}
これは、上記のコードの一部です。
上記のリンクは、最初のマップの例として取り上げられています。あなたが見ることができるように、2つの画像があります。最初に地図そのものです。最初のものは、プレイヤーがウェブからキャラクターを歪ませるためにクリックできる場所です。白い領域の外側をクリックすることは制限されていますが、問題はあまりにも白い色のイメージが透明でなければならないので、プレーヤーはsafeareaマップイメージなしで地図自体を見ることができるので、safezoneが何も起こらない場所のどこかをクリックしようとすると、特定のイベントをログに記録するので、x、y座標を引き続き使用することができます。
再び、固有のセーフゾーンでそれぞれ固有の12個の合計マップがあります。
誰も私がこれを整理するのを助けることができますか?本当にありがとう。
誰も私がこれを並べ替えることができますしてください? – allocen