- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试水平翻转 SpriteSheet 动画中的 Sprite 。我从 this example 开始
我在创建 SpriteSheet
后立即添加了翻转帧 var ss = new createjs.SpriteSheet(spriteSheet);
createjs.SpriteSheetUtils.addFlippedFrames(ss, true, false, false);
grant = new createjs.BitmapAnimation(ss);
...
而且我总是得到这个错误:
Uncaught TypeError: Cannot read property 'length' of null (SpriteSheetUtils.js l.174)
我看到有人在这个 github thread 中遇到了同样的问题并使用预加载机制修复它。
该示例也使用了预加载,因此我尝试在资源加载后调用 addFlippedFrames,但我仍然看到相同的错误。
有人知道我的线索吗?我如何使用 addFlippedFrames ?
编辑:这是我试过的代码:
用我的 spritesheet 初始化舞台:
spriteSheet = new createjs.SpriteSheet({
"animations": {
"none": [0, 0],
"run": [0, 25],
"jump": [26, 63]
},
"images": ["characters/grant/runningGrant.png"],
"frames": {
"height": h,
"width": w,
"regX": 0,
"regY": 0,
"count": 64
}
});
sprite = new createjs.BitmapAnimation(spriteSheet);
sprite.x = startPosition.x;
sprite.y = startPosition.y;
// Add the sprite to the stage.
stage.addChild(this.sprite);
然后像这样使用预加载:
var manifest = [{
src: "characters/grant/runningGrant.png",
id: "grant"
}
];
var loader = new createjs.LoadQueue(false);
loader.onFileLoad = handleFileLoad;
loader.onComplete = onResourcesLoaded;
loader.loadManifest(manifest);
和回调函数:
handleFileLoad = function(event) {
assets.push(event.item);
};
onResourcesLoaded = function() {
for (var i = 0; i < assets.length; i++) {
var item = assets[i];
var id = item.id;
var result = loader.getResult(id);
if (item.type == createjs.LoadQueue.IMAGE) {
var bmp = new createjs.Bitmap(result);
//does this Bitmap creation trigger the real bitmap loading ?
//is this loading asynchrous which would explain my problem.
//in this case, how can I manage the loading callback ?
}
}
//I would expect here to have the image fully loaded but its not
//A timeout of 2 seconds makes the addFlippedFrames works.
setTimeout(function(){
createjs.SpriteSheetUtils.addFlippedFrames(spriteSheet, true, false, false);
sprite.gotoAndPlay("run_h"); //I think "run_h" is used to launch the flipped version of "run"
}, 2000);
};
最佳答案
你的问题是,你创建了一个带有图像 url 的 SpriteSheet,这已经触发了一个加载过程,而 preload-js 队列实际上没有加载任何东西,因为图像的加载已经在进行中,所以“onComplete "-事件总是在图像实际加载之前触发 - 这是有道理的,因为不需要加载图像两次
我更新了您的 jsfiddle 并添加了一些评论:http://jsfiddle.net/K4TmS/1/ (完整代码)
spriteSheet = new createjs.SpriteSheet({
"animations": {
"none": [0, 0],
"run": [0, 25],
"jump": [26, 63]
},
//this line in YOUR version triggered an own loading process, independent from the queue
"images": [result],
"frames": {
"height": 292.5,
"width":165.75,
"regX": 0,
"regY": 0,
"count": 64
}
});
// this was executed instantly, because the image was already in another loading progress, and therefore wasn't even added to the queue
loader.onComplete = onResourcesLoaded;
DOM Security Error18 可以用这里的参数忽略(用于开发)Disable same origin policy in Chrome但是对于生产环境,您应该只从同一台服务器加载 img,这样图像操作就不会出错。
简而言之:您的问题是由于执行顺序错误造成的,请记住:如果您使用预加载:在其他所有事情之前进行预加载,并且在预加载未完成之前什么都不做. (加载图形/动画/指示器除外)。
关于easeljs - 预加载图像后使用 EaselJS 翻转 SpriteSheet 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17086676/
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 7 年前。 Improve
我正在使用 SDL2 用 C 语言开发游戏,我的问题是该游戏是全高清的,并且具有长(180 帧)角色动画,会生成非常大的 Sprite 表。我有一个 7326x7250px 的 Sprite 表,我必
我有一个 spritesheet (9170px x 350px),其中包含 70 帧单个字符。这是我的代码。 @-webkit-keyframes play { 100% { backg
我在纹理打包器的帮助下生成了一个 CSS Spritesheet,它看起来像 .pirateSlotSprite {display:inline-block; overflow:hidden; bac
“简单”问题。 为站点元素使用大型 spritesheet 是否比使用多张图片更好? 我的意思是,额外的 CSS 图像处理(背景定位大图像并裁剪它)是否弥补了较少的 HTTP 图像请求? 最佳答案 n
我到处都能找到有关如何使用从 zwoptex 创建的文件运行动画的代码,但它使用的是已弃用的代码。我找不到有关如何使用 CCSpriteBatchNode 运行动画的代码。 有什么建议吗? 最佳答案
我有一个小问题,我使用的是多行 Spritesheet,其中每一行都是图像序列。 但是我无法让 Sprite 表从不同的高度开始(因此它可以向下移动),它们都从顶 Angular 开始 var sp
尝试在我的游戏中添加爆炸动画,但由于某种原因只播放 Sprite 的第一帧。 Spritesheet 在预加载器中加载。 这是调用动画的函数 function asteroidCollisionHan
我有一个 spritesheet 驱动一组按钮的外观,这些按钮会根据各种鼠标操作而变化。但是,在 sprite 之间切换时我可以看到闪烁,并且在 chrome 或 firebug 中查看网络面板确认每
目前,我有一个菜单场景,我在其中将 spritesheet 添加到帧缓存中。我反复离开菜单场景并返回。因此,每次重新加载菜单场景时,都会将相同的 spritesheet 添加到帧缓存中。这是坏事吗?旧
我创建了一个 spritesheet;在桌面上一切正常。但是,然后我尝试在我的 iPhone 5s 上查看它,它显示正常,但是当单击图像时,会立即出现一个深灰色框。我立即想到也许我有冲突的 CSS,但
我有一个描述 Sprite 表中 Sprite 的 xml 文件:
下面的代码片段应该播放 1-3 帧 3 次,并且(在我看来)在第 3 帧结束,而不是在完成后显示第 4 帧,这在之前的 3 次迭代中没有动画。 由于这在 Chrome、Safari 和 FF 中同样有
我有一个 Sprite 表,宽度为 5760 像素,高度为 5400 像素,包含 10 行和 6 列,每列宽度为 960 像素,高度为 540 像素。 Sprite 表中的所有 Sprite 都是从左
所以我为我正在制作的游戏制作了一个 sprite 表动画,但由于某种原因它远远落后于我的游戏。 Sprite 表是一个 1248x120 .png 文件,每个 Sprite 的大小为 156x120
我正在尝试使用 spritesheet 制作 Logo 动画,效果很好。代码就像 #logo { background: url('../img/logo.png'); height: 142
我的游戏有问题,这不是错误而是问题。我正在使用 spritesheets 来制作我的游戏并使用 for 循环自动调用我的 Platform 类。但是,当我尝试调用平台类时,它只显示整个 sprites
我想为我的图标使用 CSS Spritesheet。每个图标图像的大小为 48x48px。但是,我希望能够显示任意尺寸的图标。 现在,我正在使用,显示一个 24x24 图标,我使用: 有没有更短
我正在使用 Python 和 Pygame 开发游戏。我为其中一个敌人创建了一个 sprite 表,并让它运行了我的代码。问题是图像看起来有黑色背景,即使它是透明图像。它的代码是这样的: en
我正在尝试从 spritesheet 中选择背景图像的一部分,填充其容器中的整个空间。 在这支笔中,背景图像应始终填充字符。也在调整大小时,这是主要问题。 https://codepen.io/tim
我是一名优秀的程序员,十分优秀!