पर प्रदर्शित करना इस this ट्यूटोरियल के बाद मैं अपने जावास्क्रिप्ट/कैनवास गेम में टाइल किए गए मानचित्र संपादक द्वारा जेएसन मैप फाइलों को लोड करने में सक्षम होने के लिए ट्यूटोरियल का उपयोग कर रहा हूं।जेएसओएन टाइल किए गए मानचित्र संपादक फ़ाइल को पढ़ना और कैनवास
Ive बात करने के लिए मिल गया है जहां मैं संस्करण के अपने ही तरह लागू कर दिया है, और कंसोल या नेट आदि
और जहाँ तक मैं देख सकता हूँ में फ़ायरबग में कोई त्रुटि हो रही है, console.logs में रखकर और अलर्ट, लिपि बिल्कुल ठीक चल रहा है!
समस्या यह है कि कैनवास खाली रहता है! जब इसे अब एक टाइलमैप होना चाहिए।
यहाँ ट्यूटोरियल के अपने संस्करण मेरी खेल में कार्यान्वित किया जाता है:
function Level() {
var c;
var data;
var layers = [];
this.get_map = function(name,ctx){
c = ctx;
$.getJSON('maps/'+ name + '.json', function(json){
get_tileset(json);
});
};
function get_tileset(json) {
data = json;
this.tileset = $("<img />", { src: json.tilesets[0].image })[0];
this.tileset.onload = renderLayers(this);
}
function renderLayers(layers){
layers = $.isArray(layers) ? layers : data.layers;
layers.forEach(renderLayer);
}
function renderLayer (layer){
if (layer.type !== "tilelayer" || !layer.opacity) {
alert("Not a tileLayer");
}
var s = c.canvas.cloneNode(),
size = data.tileWidth;
s = s.getContext("2d");
if (layers.length < data.layers.length) {
layer.data.forEach(function(tile_idx, i) {
if (!tile_idx) { return; }
var img_x, img_y, s_x, s_y,
tile = data.tilesets[0];
tile_idx--;
img_x = (tile_idx % (tile.imagewidth/size)) * size;
img_y = ~~(tile_idx/(tile.imagewidth/size)) * size;
s_x = (i % layer.width) * size;
s_y = ~~(i/layer.width) * size;
s.drawImage(this.tileset, img_x, img_y, size, size,
s_x, s_y, size, size);
});
layers.push(s.canvas.toDataURL());
c.drawImage(s.canvas, 0, 0);
}
else {
layers.forEach(function(src) {
var i = $("<img />", { src: src })[0];
c.drawImage(i, 0, 0);
});
}
}
}
और यह जावास्क्रिप्ट फ़ाइल है जो इस मेरी मुख्य से कहा जाता है:
$(document).ready(function(){
var canvas = document.getElementById("TBG");
var ctx = canvas.getContext("2d");
var ui = new Gui();
var level = new Level();
//----------Login/Register Gui --------------
$('#TBG').hide();
$('#load-new').hide();
$('#reg').hide();
$('#login').hide();
//if login_but is clicked do ui.login function
$('#login_but').click(ui.login);
//if reg_but is clicked do ui.register function
$('#reg_but').click(ui.register);
$('#new_but').click(function(){
game_settings("new");
});
$('#load_but').click(function(){
game_settings("load");
});
//if login_sumbit button is clicked do ui.login_ajax function
$("#login_submit").click(ui.login_ajax);
$("#reg_submit").click(ui.register_ajax);
$("#welcome").on("click", "#logout_but", ui.logout);
//________________________
//Initialisation of game
function game_settings(state){
if(state == "load"){
ui.load_game();
//do ajax call to load user last save
level.get_map("level_01",ctx);
}
else{
//set beginning params
//Change screens
ui.new_game();
alert("new game");
}
}
// End Loop ------------------------------------------------------
});
मैं तुम्हें सुंदर लगता नहीं है लोग बता सकते हैं कि मेरे कैनवास में टाइल-मानचित्र क्यों मुद्रित नहीं किया जा रहा है?
किसी भी मदद टॉम
क्या आप वाकई अच्छे जेसन डेटा में आ रहे हैं? अपने $ .getJSON में .done और .fail फ़ंक्शंस जोड़ने का प्रयास करें और फिर यह सुनिश्चित करने के लिए डिबगिंग करें कि आपको वैध डेटा मिल रहा है। – markE
हाँ जेएसओएन डेटा ठीक है मुझे विश्वास है। मैंने फ़ंक्शन में लाए जाने के बाद कंसोल लॉग किया था और जब यह पारित किया गया था और डेटा ठीक था –
क्या किसी के पास इस बारे में कोई विचार है ?? मुझे लगता है कि यह क्यों नहीं खींच रहा है! Argghhhh हाहा –