Javascript EaselJs动画问题
这是我第一次学习EaselJs。我在使用数据结构中列出的五个动画制作精灵动画时遇到问题。有人知道我做错了什么吗 链接:Javascript EaselJs动画问题,javascript,createjs,easeljs,Javascript,Createjs,Easeljs,这是我第一次学习EaselJs。我在使用数据结构中列出的五个动画制作精灵动画时遇到问题。有人知道我做错了什么吗 链接: 函数CreateTile(x,y,stage){ var rect=new createjs.Shape(); 矩形图形填充(“绿色”).drawRect(0,0,50,50); rect.x=x; 矩形y=y; var rect2=new createjs.Shape(); rect2.graphics.beginll(“浅绿色”).drawRect(0,0,46,46);
函数CreateTile(x,y,stage){
var rect=new createjs.Shape();
矩形图形填充(“绿色”).drawRect(0,0,50,50);
rect.x=x;
矩形y=y;
var rect2=new createjs.Shape();
rect2.graphics.beginll(“浅绿色”).drawRect(0,0,46,46);
rect2.x=x+2;
rect2.y=y+2;
stage.addChild(rect);
阶段。addChild(rect2);
}
功能生成器字段(高度、宽度、舞台)
{
var h_lim=高度/50;
var w_lim=宽度/50;
对于(var h=0;h
您遇到的问题是未正确定义精灵表。精灵表支持几种格式:
[0,1,2,“向前行走”]
代替[0,2,“向前行走”]
。与“向后行走”相同
这样就可以了!您的示例可以很好地进行更改。不要在按键下更新您的阶段,只需让Ticker update完成工作。
function CreateTile(x,y, stage){
var rect = new createjs.Shape();
rect.graphics.beginFill("green").drawRect(0,0,50,50);
rect.x = x;
rect.y = y;
var rect2 = new createjs.Shape();
rect2.graphics.beginFill("lightgreen").drawRect(0,0,46,46);
rect2.x = x + 2;
rect2.y = y + 2;
stage.addChild(rect);
stage.addChild(rect2);
}
function GenerateField(height, width, stage)
{
var h_lim = height / 50;
var w_lim = width / 50;
for(var h = 0; h < h_lim; h++){
for(var w = 0; w < w_lim; w++){
CreateTile(w * 50,h * 50,stage);
}
}
stage.update();
}
function init() {
var stage = new createjs.Stage("demoCanvas");
GenerateField(800,600, stage);
var img = new Image();
img.crossOrigin="Anonymous";
img.src = "https://s13.postimg.org/n1dqnac93/spritesheet.png";
var data = {
images : [img],
frames: {width:64, height:64},
animations: {
stand:0,
forwardwalk:[0,1,2, "forwardwalk"],
leftwalk:[7,8, "leftwalk"],
rightwalk:[3,4, "rightwalk"],
backwalk:[9,10,11, "backwalk"]
}
};
var spritesheet = new createjs.SpriteSheet(data);
var person = new createjs.Sprite(spritesheet);
person.x = 400;
person.y = 400;
person.gotoAndPlay("forwardwalk");
stage.addChild(person);
window.addEventListener('keydown', function(e){
var code = e.keyCode;
switch(code){
case 37:
person.x -= 64;
stage.update();
break; //Left key
case 38:
person.y -= 64;
stage.update();
break; //Up key
case 39:
person.x += 64;
stage.update();
break; //Right key
case 40:
person.y += 64;
stage.update();
break; //Down key
default:
break; // ignore
}
}, false);
createjs.Ticker.useRAF = true;
createjs.Ticker.setFPS(5);
createjs.Ticker.on("tick", stage);
}