Поиск определенного типа из списка в C ++ с использованием шаблонов, не включая базовые классы

Вы можете просто добавить поле для отслеживания, если ваше событие анимации было запущено или нет. [7]

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<body style="background:red;height:2000px;position: relative;">



  <div class="progress-vertical--container">
    <!-- progress-vertical container : BEGIN -->
    <div class="stats-info">
      <div id="percentage"></div>
      <div class="info">This is a test</div>
    </div>
    <div class="progress-vertical">
      <div id="stats"></div>
    </div>
  </div>
  <!-- progress-vertical container : END -->



</body>
.progress-vertical--container {
  position: absolute;
  left: 15px;
  bottom: 200px;
  width: 100px;
  text-align: center;

}

.progress-vertical--container .stats-info {
  max-width: 85px;
  width: 100%;
  margin: 0 auto 10px;
}

.progress-vertical--container .info {
  font-size: 0.875em;
  font-family: "visby_round_cfmedium", sans-serif;
  font-weight: 700;
  color: green;
  text-transform: lowercase;
  text-align: center;
  width: 100%;
  line-height: 14px;
}

.progress-vertical--container .progress-vertical {
  width: 40px;
  height: 300px;
  background-color: grey;
  margin: 0 auto;
  -webkit-transform: rotate(180deg);
  transform: rotate(180deg);
}

#stats {
  width: 100%;
  height: 1%;
  text-align: center;
  line-height: 30px;
  color: red;
  background-color: #d04e7c;
}

#percentage {
  font-size: 2em;
  font-family: "visby_round_cfmedium", sans-serif;
  font-weight: 700;
  color: #ffffff;
  text-transform: lowercase;
  display: block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<body style="background:red;height:2000px;position: relative;">



  <div class="progress-vertical--container">
    <!-- progress-vertical container : BEGIN -->
    <div class="stats-info">
      <div id="percentage"></div>
      <div class="info">This is a test</div>
    </div>
    <div class="progress-vertical">
      <div id="stats"></div>
    </div>
  </div>
  <!-- progress-vertical container : END -->



</body>

$(document).ready(function ($) {

  // Tracks if we're fired the event
  let fired = false;

  function animateStatsBarVertical() {
    $('.progress-vertical--container').each(function () {

      var elementPos = $(this).offset().top;
      var topOfWindow = $(window).scrollTop();

      // Only true if the element is in view AND has not fired yet
      if ( elementPos < topOfWindow + $(window).height() - 30 && fired === false) {
        // We've fired, so set to true
        fired = true;

        function statsBarVertical() {
          var stats = document.getElementById("stats");
          var percentage = document.getElementById("percentage");
          var height = 1;
          var id = setInterval(frame, 10);
          var results_percentage_verticle = 100; // '<?php the_field("results_percentage_verticle", $p); ?>';

            function frame() {
              if (height >= results_percentage_verticle) {
                clearInterval(id);
              } else {
                height++;
                stats.style.height = height + '%';
                percentage.innerHTML = height * 1 + '%';
              }
            }

        }

        statsBarVertical();

      }

    });
  }
  animateStatsBarVertical();
  $(window).scroll(animateStatsBarVertical);
 


});
.progress-vertical--container {
  position: absolute;
  left: 15px;
  bottom: 200px;
  width: 100px;
  text-align: center;

}

.progress-vertical--container .stats-info {
  max-width: 85px;
  width: 100%;
  margin: 0 auto 10px;
}

.progress-vertical--container .info {
  font-size: 0.875em;
  font-family: "visby_round_cfmedium", sans-serif;
  font-weight: 700;
  color: green;
  text-transform: lowercase;
  text-align: center;
  width: 100%;
  line-height: 14px;
}

.progress-vertical--container .progress-vertical {
  width: 40px;
  height: 300px;
  background-color: grey;
  margin: 0 auto;
  -webkit-transform: rotate(180deg);
  transform: rotate(180deg);
}

#stats {
  width: 100%;
  height: 1%;
  text-align: center;
  line-height: 30px;
  color: red;
  background-color: #d04e7c;
}

#percentage {
  font-size: 2em;
  font-family: "visby_round_cfmedium", sans-serif;
  font-weight: 700;
  color: #ffffff;
  text-transform: lowercase;
  display: block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<body style="background:red;height:2000px;position: relative;">



  <div class="progress-vertical--container">
    <!-- progress-vertical container : BEGIN -->
    <div class="stats-info">
      <div id="percentage"></div>
      <div class="info">This is a test</div>
    </div>
    <div class="progress-vertical">
      <div id="stats"></div>
    </div>
  </div>
  <!-- progress-vertical container : END -->



</body>

0
задан max66 19 January 2019 в 12:44
поделиться

1 ответ

Оператор typeid можно использовать для проверки того, имеет ли полиморфный объект определенный точный тип, являющийся наиболее производным.

#include <typeinfo>
// ...

template<typename T> T* GetActivity() {
    for(int i = 0; i < activities.size(); i++) {
        auto* act = activities[i];
        if (act != nullptr && typeid(*act) == typeid(T)) {
            return dynamic_cast<T*>(act);
        }
     }
     return nullptr;
 }

Используйте этот шаблон с осторожностью, потому что он ограничивает возможность создания класса, который действует точно так же, как другой класс, за исключением определенных изменений. Но это может быть уместно в вашем интерфейсе.

0
ответ дан aschepler 19 January 2019 в 12:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: