javascript - 交换 Sprite 动画 onclick javascript

标签 javascript css sprite

我是一名图形艺术家,对编码完全陌生。我正在尝试制作一个简单的基于 HTML5 的游戏模型。 我想要做的是将一个 Sprite 动画交换到另一个 Sprite 动画 onclick。每个 Sprite 动画都有不同的大小和帧数。

第一个图像上的动画已经打开,当单击图像时,该动画将被另一个动画替换。进行该切换后,将显示得分动画(另一个 Sprite 动画)。

我已经尝试了很多不同的 Javascript,但到目前为止没有什么好的结果。我只能想出一个脚本,但它根本行不通。 (两张图片相互重叠)我确定我做的事情完全错了,但我真的需要你们的帮助。

puppy normal puppy win

function change(){
			var image = document.getElementById('pupwag01');
			image.src = "images/pup01-win-sprite.png";
		} 
#null01{
	position: absolute;
	top: 700px;
	left: 100px;
}

#pupwag01 {
	background-image: url('../images/puppy01sprite.png');
	width: 173px;
	height: 221px;
	position: relative;
	animation: pupwag01 1s steps(6) infinite;
}

@keyframes pupwag01 {
	0% {background-position: 0px;}
	100% {background-position: -1038px;}
}
#null01a{
	position: absolute;
	top: 680px;
	left: 50px;
}
#pupwin01 {
	background-image: url('../images/pup01-win-sprite.png');
	width: 308px;
	height: 191px;
	position: relative;
	animation: pupwin01 .5s steps(3) infinite;
	background-repeat: no-repeat;
}

@keyframes pupwin01 {
	0% {background-position: 0px;}
	100% {background-position: -924px;}
}

#nullscore01{
	position: absolute;;
	top: 600px;
	left: 110px;
}

#score01{
	background-image: url('../images/score-sprite01.png');
	width: 150px;
	height: 200px;
	position: relative; 
	animation: score01 1s steps(24) 1;
}

@keyframes score01 {
	0% {background-position: 0px;}
	100% {background-position: -3600px;}
}
<body>
	
	<header>

	</header>

	<div class="p-box">
	<img src="images/pup-logo.png" id="logo">
	

	<div id= "null01"><img src="images/puppy01sprite.png" id="pupwag01"></div></div>
	<div id= "null01a"><div id="pupwin01"></div></div>
	<div id= "null02"><div id="pupwag02"></div></div>
	<div id= "null02a"><div id="maddog"></div></div>
	<div id= "null03"><div id="pupwag03"></div></div>
	<div id= "null03a"><div id="pupwin03"></div></div>
	<div id= "null04"><div id="pupwag04"></div></div>
	<div id= "null04a"><div id="pupwin04"></div></div>
	<div id= "null05"><div id="pupwag05"></div></div>
	<div id= "null05a"><div id="pupwin05"></div></div>

	<div id="nullscore01"><div id="score01"></div></div>
	<div id="nullscore03"><div id="score03"></div></div>
	<div id="nullscore04"><div id="score04"></div></div>
	<div id="nullscore05"><div id="score05"></div></div>

	<div id="blink_text">Pick a Puppy!</div>

	<div id="nullgo"><div id="gameover"></div></div>
	</div>

	<script src = "js/main.js" type="text/javascript"></script>

</body>
</html>

enter image description here

最佳答案

假设您想要通过单击按钮或图像本身来更改 sprite 图像。以下是您可以如何做到这一点。

var puppyImage = document.getElementById('puppy-image');
var puppyBackground = document.getElementById('puppy-background');

var winButton = document.getElementById('button-win');
var normalButton = document.getElementById('button-normal');

//adding click event listener to puppy-image

puppyImage.addEventListener('click', function(e){
	// adding/removing class `win`
	this.classList.toggle('win');
	if(this.classList.contains('win')){
		//if win class exists, change src to win image of puppy
		this.src = "/image/rl1BU.jpg"
	}else{
		//if win class does't exists change src to normal image of puppy
		this.src = "/image/O144b.jpg";
	}
});

//adding click event listener to win button
winButton.addEventListener('click', function(){
	puppyImage.src = "/image/rl1BU.jpg";
})

//adding click event listener to normal button
normalButton.addEventListener('click', function(){
	puppyImage.src = "/image/O144b.jpg";
})

//adding click event listener to element with puppy background image.
puppyBackground.addEventListener('click', function(e){
	//toggling class `win`, background will change using css.
	this.classList.toggle('win');
});
#puppy-background{
	height: 300px;
	width: auto;
	background-image: url('/image/O144b.jpg');
background-repeat: no-repeat;
}
#puppy-background.win{
	background-image: url('/image/rl1BU.jpg');	
}
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>Change the puppy!</title>
</head>
<body>
	<h2>Change puppy image on click</h2>
	<div class="puppy-box">
		<img id="puppy-image" src="/image/O144b.jpg" alt="">
	</div>
	<button id="button-win">Set Win</button>
	<button id="button-normal">Set Normal</button>
	<hr>
	<h2>Change puppy background on click</h2>
	<div id="puppy-background">
		
	</div>
</body>
</html>

关于javascript - 交换 Sprite 动画 onclick javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48087470/

相关文章:

javascript - 对 svg 数据使用 <use> 时强制重绘 svg

javascript - 这是 chrome 中关于图像加载的错误吗?

javascript - 不允许继续使用 Javascript

css - 为什么 `cursor: pointer` 在 IE6 中不起作用?

javascript - 模式框关闭后如何在屏幕上显示文本?

python - Pygame:如何慢慢淡出并杀死 Sprite ?

javascript - 如何使用 javascript 了解哪些软件打开并运行了我的应用程序?

javascript - Monaco Editor 在空行上显示字符

asp.net - 我可以使用 <asp :Image's? 使用 asp.net 图像从这些图像制作 Sprite 图像吗

html - 仅使用 css 在 div 上从 sprite 表中拉伸(stretch)图像的一部分