gpt4 book ai didi

javascript - KineticJS:如何获取 Sprite 或图像的宽度和高度?

转载 作者:行者123 更新时间:2023-12-03 12:13:26 24 4
gpt4 key购买 nike

我从 URL 加载了一个 Sprite ,并想要获取 Sprite 的宽度和高度,结果宽度和高度始终为零。我创建了以下示例。

如何获取 Sprite 的真实宽度和高度?

我使用 sprite 示例并在此处创建了一个 jsfiddle:http://jsfiddle.net/confile/jVG9t/

这是html代码:

<div id="container"></div>
<div id="buttons">
<input type="button" id="punch" value="Width">
</div>
<script src="http://d3lp1msu2r81bx.cloudfront.net/kjs/js/lib/kinetic-v5.1.0.min.js"></script>


Image <br>
<div id="mydiv" ></div>

这是 JS 代码:

var stage = new Kinetic.Stage({
container: 'container',
width: 578,
height: 200
});
var layer = new Kinetic.Layer();

var imageObj = new Image();
imageObj.onload = function() {
var blob = new Kinetic.Sprite({
x: 250,
y: 40,
image: imageObj,
animation: 'idle',
animations: {
idle: [
// x, y, width, height (4 frames)
2,2,70,119,
71,2,74,119,
146,2,81,119,
226,2,76,119
],
punch: [
// x, y, width, height (3 frames)
2,138,74,122,
76,138,84,122,
346,138,120,122
]
},
frameRate: 7,
frameIndex: 0
});

// add the shape to the layer
layer.add(blob);

// add the layer to the stage
stage.add(layer);

// start sprite animation
blob.start();

var frameCount = 0;

blob.on('frameIndexChange', function(evt) {
if (blob.animation() === 'punch' && ++frameCount > 3) {
blob.animation('idle');
frameCount = 0;
}
});

document.getElementById('punch').addEventListener('click', function() {
alert("blob.width: "+blob.width());

}, false);
};
imageObj.src = 'http://www.html5canvastutorials.com/demos/assets/blob-sprite.png';

最佳答案

您可以通过请求 .width.height 属性来获取整个 imageObj 的宽度/高度:

var imageObj = new Image();
imageObj.onload = function() {
var width=imageObj.width;
var height=imageObj.height;
}

如果 imageObj 是 spritesheet,则无法以编程方式获取该 spritesheet 上各个 sprite 的 x、y、宽度和高度。通常 Sprite 表作者会向您提供此信息。您通常可以观察 Sprite 表并了解其布局。

您的 KineticJS 演示要求编码人员知道 spritesheet 上每个 sprite 的 x、y、宽度、高度。

关于javascript - KineticJS:如何获取 Sprite 或图像的宽度和高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24844305/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com