J'ai testé le nouveau dactylographie avec VS 2012, mais j'ai ce problème dans mon premier projet:
J'ai collé ce JS dans mon fichier ts mais je ne peux pas accéder à l'objet Sprite est son dans la portée anonyme. Comment puis-je y accéder à partir de dactylographié.
(function () {
function LoaderProxy() {
return {
draw: $.noop,
fill: $.noop,
frame: $.noop,
update: $.noop,
width: null,
height: null
};
}
function Sprite(image, sourceX, sourceY, width, height) {
sourceX = sourceX || 0;
sourceY = sourceY || 0;
width = width || image.width;
height = height || image.height;
return {
draw: function(canvas, x, y) {
canvas.drawImage(
image,
sourceX,
sourceY,
width,
height,
x,
y,
width,
height
);
},
fill: function(canvas, x, y, width, height, repeat) {
repeat = repeat || "repeat";
var pattern = canvas.createPattern(image, repeat);
canvas.fillColor(pattern);
canvas.fillRect(x, y, width, height);
},
width: width,
height: height
};
};
Sprite.load = function(url, loadedCallback) {
var img = new Image();
var proxy = LoaderProxy();
img.onload = function() {
var tile = Sprite(this);
$.extend(proxy, tile);
if(loadedCallback) {
loadedCallback(proxy);
}
};
img.src = url;
return proxy;
};
var spriteImagePath = "images/";
window.Sprite = function(name, callback) {
return Sprite.load(spriteImagePath + name + ".png", callback);
};
window.Sprite.EMPTY = LoaderProxy();
window.Sprite.load = Sprite.load;
}());
J'espère que cela explique mon problème!
Merci pour toute aide
Réponses:
0 pour la réponse № 1La première erreur que le compilateur vous donne est ici ...
Sprite.load
Il détecte qu'il n'y a aucune propriété ou fonction sur l'objet Sprite appelé load
.
La deuxième erreur est là ...
var tile = Sprite(this);
Le constructeur Sprite prend cinq paramètres et vous n'en avez passé que 1.
Troisièmement ...
window.Sprite
L'objet Window n'a pas de propriété nommée Sprite.
Tous les autres problèmes sont des variantes de ce problème.
Voici une suggestion pour que les choses fonctionnent avec des changements minimes. La meilleure solution serait de réécrire votre Sprite en tant que classe dans TypeScript
var Sprite;
(function () {
function LoaderProxy() {
return {
draw: $.noop,
fill: $.noop,
frame: $.noop,
update: $.noop,
width: null,
height: null
};
}
Sprite = function (image, sourceX, sourceY, width, height) {
sourceX = sourceX || 0;
sourceY = sourceY || 0;
width = width || image.width;
height = height || image.height;
return {
draw: function(canvas, x, y) {
canvas.drawImage(
image,
sourceX,
sourceY,
width,
height,
x,
y,
width,
height
);
},
fill: function(canvas, x, y, width, height, repeat) {
repeat = repeat || "repeat";
var pattern = canvas.createPattern(image, repeat);
canvas.fillColor(pattern);
canvas.fillRect(x, y, width, height);
},
width: width,
height: height
};
};
Sprite.load = function(url, loadedCallback) {
var img = new Image();
var proxy = LoaderProxy();
img.onload = function() {
var tile = Sprite(this);
$.extend(proxy, tile);
if(loadedCallback) {
loadedCallback(proxy);
}
};
img.src = url;
return proxy;
};
var spriteImagePath = "images/";
Sprite = function(name, callback) {
return Sprite.load(spriteImagePath + name + ".png", callback);
};
Sprite.EMPTY = LoaderProxy();
Sprite.load = Sprite.load;
}());