через некоторое время угловая анимация зависает - PullRequest
0 голосов
/ 18 декабря 2018

Я создал проект с Angle 7.1, используя Angle Cli.локально протестировано без учета 7.1.3 и проблема не устранена.

проект доступен в режиме онлайн в https://www.windy.co.il

Я создал компонент с изображениями, которые постепенно исчезают друг от друга при масштабировании.

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

проблема в том, что через некоторое время браузер зависает (проверено на google chrome)

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

это файл машинописи компонента:

import {AfterViewInit, Component, OnInit} from '@angular/core';
import {animate, state, style, transition, trigger} from '@angular/animations';

@Component({
  selector: 'tuxin-ec-animate-images',
  templateUrl: './tuxin-ec-animate-images.component.html',
  styleUrls: ['./tuxin-ec-animate-images.component.scss'],
  animations: [
    trigger('visibilityChanged', [
      state('shown', style({ opacity: 1, transform: 'scale(1)'})),
      state('middle', style({opacity: 1, transform: 'scale(1.2)'})),
      state('hidden', style({ opacity: 0, transform: 'scale(1.3)' })),
      transition('shown => middle', animate('3900ms')),
      transition('middle => hidden', animate('2600ms')),
    ]),
  ]
})
export class TuxinEcAnimateImagesComponent implements OnInit, AfterViewInit {

  imgPosition = {
    1: {top: 0, left: 0},
    2: {top: 0, left: 0},
    3: {top: 0, left: 0},
    4: {top: 0, left: 0},
    5: {top: 0, left: 0},
    6: {top: 0, left: 0},
    7: {top: 0, left: 0},
    8: {top: 0, left: 0},
    9: {top: 0, left: 0},
    10: {top: 0, left: 0},
    11: {top: 0, left: 0},
    12: {top: 0, left: 0},
  };

  frontZIndex = 2;
  backZIndex = 1;

  currentImage = 2;

  imagesCount = 12;

  img1Image = 1;
  img2Image = 2;

  img1ZIndex = this.frontZIndex;
  img2ZIndex = this.backZIndex;

  img1AnimState = 'shown';
  img2AnimState = 'shown';

  nextImage() {
    if (this.currentImage+1>this.imagesCount) {
      this.currentImage = 1;
      return this.currentImage;
    } else {
      return ++this.currentImage;
    }
  }



  img1Loaded() {
  //  console.info('img1Loaded');

  }

  img2Loaded() {
   // console.info('img2Loaded');

  }

  img1AnimationEnded($event) {
    if ($event.toState === 'middle') {
      this.img1AnimState='hidden';
      this.img2AnimState='middle';
    } else if ($event.toState === 'hidden') {
      this.img1ZIndex = this.backZIndex;
      this.img2ZIndex = this.frontZIndex;
      this.img1AnimState='shown';
      this.img1Image = this.nextImage();
    }
  }

  img2AnimationEnded($event) {
    if ($event.toState === 'middle') {
      this.img2AnimState='hidden';
      this.img1AnimState='middle';
    } else if ($event.toState === 'hidden') {
      this.img2ZIndex = this.backZIndex;
      this.img1ZIndex = this.frontZIndex;
      this.img2AnimState='shown';
      this.img2Image = this.nextImage();
    }
  }

  constructor() { }

  ngOnInit() {
  }

  ngAfterViewInit() {
    this.img1AnimState = 'middle';
  }

}

и этоэто код шаблона html:

<div id="main">

  <img
    [@visibilityChanged]="img1AnimState"
    (load)="img1Loaded()"
    (@visibilityChanged.done)="img1AnimationEnded($event)"
    [ngStyle]="{'z-index': img1ZIndex, 'left': imgPosition[img1Image].left, 'top': imgPosition[img1Image].top}"
    src="../../assets/images-animate/{{img1Image}}.jpg"/>

  <img
    [@visibilityChanged]="img2AnimState"
    (load)="img2Loaded()"
    (@visibilityChanged.done)="img2AnimationEnded($event)"
    [ngStyle]="{'z-index': img2ZIndex, 'left': imgPosition[img2Image].left, 'top': imgPosition[img2Image].top}"
    src="../../assets/images-animate/{{img2Image}}.jpg"/>

  <div id="text">
    <div class="title">
      מגני רוח לרכב
    </div>
    <!--<div class="logo">
      www.windy.co.il
    </div>-->
    <div class="promotion">
      מבצעים חמים לחורף
    </div>
    <div class="phone">
      <div class="inline-phone">
      <a href="tel:0545232705">054-5232705</a>
      </div>
    </div>
  </div>

</div>

Я пытался проверить производительность моего сайта, и я не увидел ничего необычного.так что я, должно быть, здесь потерялся.

поэтому любая информация по этому вопросу будет принята с благодарностью.

спасибо

...