Javascript KineticJS如何设置图像动画

Javascript KineticJS如何设置图像动画,javascript,animation,kineticjs,Javascript,Animation,Kineticjs,我正在尝试使用KineticJS在屏幕上移动图像,但是我一直没有得到一个函数错误。图像显示很好,但它一直说imageObj.move不是一个函数,我不知道为什么。我对javascript和KineticJS有点陌生,所以我可能只是犯了一个非常基本的错误,所以欢迎提供一些帮助。谢谢 window.onload = function(){ //init function var stage = new Kinetic.Stage("container", 600, 600); var fluffyI

我正在尝试使用KineticJS在屏幕上移动图像,但是我一直没有得到一个函数错误。图像显示很好,但它一直说imageObj.move不是一个函数,我不知道为什么。我对javascript和KineticJS有点陌生,所以我可能只是犯了一个非常基本的错误,所以欢迎提供一些帮助。谢谢

window.onload = function(){ //init function
var stage = new Kinetic.Stage("container", 600, 600);
var fluffyImgLayer = new Kinetic.Layer();

var imageObj = new Image();
imageObj.onload = function(){
    imageF = new Kinetic.Image({
        x: 0,
        y: 250,
        image: imageObj,
    });

    fluffyImgLayer.add(imageF);

    stage.add(fluffyImgLayer);
    }

    imageObj.src = "Flutter_Fluffy_100.png";

    stage.onFrame(function(frame){
        console.log("fired")
        imageObj.move(10,10);
        fluffyImgLayer.draw();
    });

    var period = 2000;

    stage.start();
}

你可以做这样的事情,然后用它来做:

imageObj.x += 3;
imageObj.y += 3;
您需要在imageF前面添加var:

var imageF = new Kinetic.image({
看看:

获取的错误是因为未定义“移动到任何位置”。您可以创建移动函数并允许对象使用它。或者,您可以创建如下函数:

function moveMyThing(myObj, xchange, ychange)
{
  myObj.x += xchange;
  myObj.y += ychange;
}
然后用以下词语来称呼它:

moveMyThing(imageObj, 3, 3);
如果一切正常的话,KineticJS的刷新速度往往在60帧左右,所以这3个版本实际上相当快。您还将考虑检查是否是更新动作逻辑的时间。最好把它们分开

例:


为了解释这种跳跃性,你可以在运动之间进行调整。

你可以做这样的事情,然后处理它:

imageObj.x += 3;
imageObj.y += 3;
您需要在imageF前面添加var:

var imageF = new Kinetic.image({
看看:

获取的错误是因为未定义“移动到任何位置”。您可以创建移动函数并允许对象使用它。或者,您可以创建如下函数:

function moveMyThing(myObj, xchange, ychange)
{
  myObj.x += xchange;
  myObj.y += ychange;
}
然后用以下词语来称呼它:

moveMyThing(imageObj, 3, 3);
如果一切正常的话,KineticJS的刷新速度往往在60帧左右,所以这3个版本实际上相当快。您还将考虑检查是否是更新动作逻辑的时间。最好把它们分开

例:


为了解释跳跃性,你可以在运动之间切换。

实际上,为了回答你的问题,问题是你试图在图像对象上使用KineticJS方法,而不是在动能.image对象上。改用这个:


图像f.move10,10

实际上,要回答您的问题,问题是您试图在image对象上使用KineticJS方法,而不是在Kinetic.image对象上。改用这个:


图像f.move10,10

如果有帮助的话,如果我尝试调用imageF.move10,10,我会得到一个错误,即imageF未定义。如果有帮助的话,如果我尝试调用imageF.move10,10,我会得到一个错误,即imageF未定义。实际上,如果你想减少重画的次数,你可以使用如下的节流方法:layer.setThrottle10;这将限制绘制速度到每秒10帧实际上,如果您想减少重画次数,可以使用如下限制方法限制层绘制速度:layer.setThrottle10;这将使绘制速度降低到每秒10帧