我将如何动态更新函数外部的变量,然后能够使用它来使用另一个函数。在这种情况下,用户按右键并移动 50px。
<!doctype html>
<html>
<head>
<title>Barry bounce</title>
<script src="js/plugins/charinfo.js"></script>
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script>
<link rel="stylesheet" type="text/css" href="css/main.css">
</head>
<body ng-app="myApp">
<div id="canvas">
<img src="img/characters/BarryBall.png" id="barry" alt="">
</div>
</body>
<!-- jquery here -->
<script>
var barryPosX;
var state = 0;
function getCurrentPos(position) {
barryPosX = position.left;
};
$(document).keydown(function(e) {
switch(e.which) {
case 39:
$("#barry").stop().animate({
left: '+=350'
}, function() {
position = $("#barry").position();
getCurrentPos(position);
if(barryPosX > $("#canvas").width()) {
state = 1;
console.log(state);
}
})
break
case 37:
$("#barry").stop().animate({
left: '-=350'
});
break
}
})
if (state == 1 ) {
console.log(state);
}
</script>
我不明白为什么当图像超出"画布"div宽度时控制台不记录" 1"..有什么想法吗?
barryPosX已经在全局范围内,所以你可以像以前一样直接在getCurrentPos函数中将值分配给barryPosX。无需从动画回调中将值分配给 barryPosX。
如果需要,您还可以将值传递到 getCurrentPos 函数中,如下所示:
var barryPosX;
function getCurrentPos(position) {
barryPosX = position.left;
};
$(document).keydown(function(e) {
switch(e.which) {
case 39:
$("#barry").stop().animate({
left: '+=50'
}, function() {
position = $("#barry").position();
getCurrentPos(position);
})
break
case 37:
$("#barry").stop().animate({
left: '-=50'
});
break
}
})
barryPosX 的值也可以在 changeScreen 函数中访问。