通过另一个javascript文件添加到函数
嘿,我在想我怎样才能添加到我的函数draw();draw在我的画布引擎中用于更新其中的所有内容。我想做的是创建一个独立的引擎,可以说它可以不被编辑,但可以更新与它链接的全新内容。比如说-通过另一个javascript文件添加到函数,javascript,function,object,canvas,Javascript,Function,Object,Canvas,嘿,我在想我怎样才能添加到我的函数draw();draw在我的画布引擎中用于更新其中的所有内容。我想做的是创建一个独立的引擎,可以说它可以不被编辑,但可以更新与它链接的全新内容。比如说- function draw(){ gameloop(); cameraWrapper(); context2D.clearRect(0,0,canvas.width, canvas.height); } 现在假设我创建了一个新的应用程序并使用这个引擎。。我希望能够创建一个链接到引擎的独
function draw(){
gameloop();
cameraWrapper();
context2D.clearRect(0,0,canvas.width, canvas.height);
}
现在假设我创建了一个新的应用程序并使用这个引擎。。我希望能够创建一个链接到引擎的独立文件,比如一个播放器对象
player = new object();
function playerupdate(){
stuff;
stuff;
}
现在,我怎么说在不编辑engine.js文件的情况下将playerupdate()函数添加到engine.js的draw()函数中呢?这会像一个原型吗?如果是这样的话,即使不是这样的话,我们也将不胜感激
如果您有任何问题,请提前询问,
谢谢 基本上这是一个原型。如果您不想让原型化复杂化,可以使用“自制”继承:
Function.prototype.method = function(name, func) {
this.prototype[name] = func;
return this;
};
Function.method('inherits', function(parent) {
var d = {}, p = (this.prototype = new parent());
this.method('uber', function uber(name) {
if(!( name in d)) {
d[name] = 0;
}
var f, r, t = d[name], v = parent.prototype;
if(t) {
while(t) {
v = v.constructor.prototype;
t -= 1;
}
f = v[name];
} else {
f = p[name];
if(f == this[name]) {
f = v[name];
}
}
d[name] += 1;
r = f.apply(this, Array.prototype.slice.apply(arguments, [1]));
d[name] -= 1;
return r;
});
return this;
});
现在对于一个“类”(js中没有这样的东西,但这是正确的术语),您可以使用myCls使它继承另一个“类”。inherits(parentCls)基本上,它是一个原型。如果您不想让原型化复杂化,可以使用“自制”继承:
Function.prototype.method = function(name, func) {
this.prototype[name] = func;
return this;
};
Function.method('inherits', function(parent) {
var d = {}, p = (this.prototype = new parent());
this.method('uber', function uber(name) {
if(!( name in d)) {
d[name] = 0;
}
var f, r, t = d[name], v = parent.prototype;
if(t) {
while(t) {
v = v.constructor.prototype;
t -= 1;
}
f = v[name];
} else {
f = p[name];
if(f == this[name]) {
f = v[name];
}
}
d[name] += 1;
r = f.apply(this, Array.prototype.slice.apply(arguments, [1]));
d[name] -= 1;
return r;
});
return this;
});
现在对于一个“类”(js中没有这样的东西,但这是正确的术语),您可以使用myCls使它继承另一个“类”。inherits(parentCls)我认为继承对于这个来说有点太复杂了。。。你可以用钩子实现你想要的一切 试着这样做:
var postDrawHooks = [];
var draw = function(){
// do stuff
postDrawHooks.forEach(function(hook){hook()});
}
var playerUpdate = function(){...};
postDrawHooks.push(playerUpdate);
我认为继承对于这个来说有点太复杂了。。。你可以用钩子实现你想要的一切 试着这样做:
var postDrawHooks = [];
var draw = function(){
// do stuff
postDrawHooks.forEach(function(hook){hook()});
}
var playerUpdate = function(){...};
postDrawHooks.push(playerUpdate);
是否存在无法为这些框架操作触发事件的原因?这样,任何收听“抽签”事件的人都可以用这种方式勾住他们的逻辑?如果不是实际的事件,像@sudhir jonathan建议的钩子一样的东西会起作用,尽管我建议创建一个注册泛型钩子的方法,这样你可以调用
game.register('draw',myFunctionReference);
和游戏中的对象
register : function (hook,func) {
registeredHooks.push({'name' : hook, 'callback': func});
}
抽签:
function draw(){
gameloop();
cameraWrapper();
context2D.clearRect(0,0,canvas.width, canvas.height);
for (i=0; i < registeredHooks.length; i++) {
var hook = registeredHooks[i];
if (hook.name == 'draw') hook.callback();
}
}
函数绘图(){
gameloop();
摄像师();
clearRect(0,0,canvas.width,canvas.height);
对于(i=0;i
是否存在无法为这些框架操作触发事件的原因?这样,任何收听“抽签”事件的人都可以用这种方式勾住他们的逻辑?如果不是实际的事件,像@sudhir jonathan建议的钩子一样的东西会起作用,尽管我建议创建一个注册泛型钩子的方法,这样你可以调用
game.register('draw',myFunctionReference);
和游戏中的对象
register : function (hook,func) {
registeredHooks.push({'name' : hook, 'callback': func});
}
抽签:
function draw(){
gameloop();
cameraWrapper();
context2D.clearRect(0,0,canvas.width, canvas.height);
for (i=0; i < registeredHooks.length; i++) {
var hook = registeredHooks[i];
if (hook.name == 'draw') hook.callback();
}
}
函数绘图(){
gameloop();
摄像师();
clearRect(0,0,canvas.width,canvas.height);
对于(i=0;i
谢谢这正是我需要的!嘿,我在玩这个,但是像摄影师说唱歌手(球员)那样呢?出于某种原因,如果函数的括号中有(player)之类的东西,它就不会让我推这个?有什么想法吗?您可以将钩子签名更新为postDrawHooks.forEach(函数(钩子){hook(播放器)})
并在函数中接受该参数<代码>var playerUpdate=函数(播放器){…}代码>谢谢这正是我需要的!嘿,我在玩这个,但是像摄影师说唱歌手(球员)那样呢?出于某种原因,如果函数的括号中有(player)之类的东西,它就不会让我推这个?有什么想法吗?您可以将钩子签名更新为postDrawHooks.forEach(函数(钩子){hook(播放器)})
并在函数中接受该参数<代码>var playerUpdate=函数(播放器){…}代码>我还不太明白这个。。。一般来说,我对javascript和编程相当陌生,但我想我很快就会需要它,并且会记住这一点!非常感谢。我还不太明白这个。。。一般来说,我对javascript和编程相当陌生,但我想我很快就会需要它,并且会记住这一点!非常感谢。