4

私は何かを見落としたと思います。これは非常に単純なボトルゲームです。

Javascript / jQuery

$('.bottle').on('click', function(e) {
    this.removeAttribute('style');
    var deg = 3000 + Math.round(Math.random() * 500);
    var css = '-webkit-transform: rotate(' + deg + 'deg);';

    this.setAttribute(
        'style', css
    );
});

CSS:

.bottle {
    width: 200px;
    height: 200px;
    background-image: url(img/bottle.png);
    -webkit-transition: -webkit-transform 6s ease-out;
}

HTML:

<div class="bottle"></div>

これは、ボトルの最初のクリックで完全に機能します。しかし、2回目のクリックから始めて、スピンは非常に遅いですか?

4

3 に答える 3

7

これを試してください:http://jsfiddle.net/sMcAN/

var i = 1;
$('.bottle').on('click', function(e) {
this.removeAttribute('style');
var deg = 3000 + Math.round(Math.random() * 500);
deg = ((-1) ^ i) * deg;

var css = '-webkit-transform: rotate(' + deg + 'deg);';
this.setAttribute('style', css);
i++;
});​

別の更新: http: //jsfiddle.net/sMcAN/2/

于 2012-12-25T10:18:15.973 に答える
3

これは、最初は0から3000を超える値に移行するためです。ただし、値は常に3000以内であるため、差は十分に大きくなく、定義した6秒かかります。

1つの解決策は、値をオフセットし、毎回数千ずつ異なる値にすることです。

var i = 0, offset = [2000, 4000, 6000, 3000, 5000, 1000];

$('.bottle').on('click', function(e) {
  this.removeAttribute('style');

  var deg = offset[i] + Math.round(Math.random() * 500);
  i++;
  if (i > 5) {
    i = 0;
  }

  var css = '-webkit-transform: rotate(' + deg + 'deg);';

  this.setAttribute(
    'style', css
 );
});​
于 2012-12-25T10:18:03.457 に答える
0
math.round(math.random() * 1000);

それを試してみてください

于 2012-12-25T10:05:52.337 に答える