2015-06-12 4 views
5

Я пытаюсь реализовать анимацию героя (из неоновых элементов), чтобы анимировать другой пользовательский элемент (element1.html to element2.html), щелкнув красный квадрат.Hero Animation in polymer 1.0

я написал все, что описываемая здесь: https://github.com/PolymerElements/neon-animation#shared-element

Но ничего не происходит по щелчку. Пожалуйста, помогите мне в реализации этого.

Вот мои файлы:

index.html

<!DOCTYPE html> 
<html> 

<head> 
<script src="bower_components/webcomponentsjs/webcomponents-lite.min.js">  </script> 
<link rel="import" href="bower_components/neon-animation/neon-animated-pages.html"> 
<link rel="import" href="bower_components/neon-animation/neon-animations.html"> 
<link rel="import" href="element1.html"> 
<link rel="import" href="element2.html"> 
</head> 

<body> 
<template is="dom-bind"> 
    <neon-animated-pages id="pages" selected="0"> 
     <name-tag> 
     </name-tag> 
     <name-tag1> 
     </name-tag1> 
    </neon-animated-pages> 
</template> 
</body> 

</html> 

element1.html

 <link rel="import" href="bower_components/polymer/polymer.html"> 

    <link rel="import" href="bower_components/neon-animation/neon-shared-element-animatable-behavior.html"> 
    <dom-module id="name-tag"> 
     <template> 

      <div id="hero" style="background:red; width:100px; height:100px; position:absolute; left:100px; top:50px;"></div> 
     </template> 
    </dom-module> 
    <script> 
    Polymer({ 
     is: "name-tag", 
     behaviors: [ 
      Polymer.NeonAnimationRunnerBehavior 
     ], 
     properties: { 
      animationConfig: { 
       value: function() { 
        return { 
         // the outgoing page defines the 'exit' animation 
         'exit': { 
          name: 'hero-animation', 
          id: 'hero', 
          fromPage: this 
         } 
        } 
       } 
      }, 
      sharedElements: { 
       value: function() { 
        return { 
         'hero': this.$.hero 
        } 
       } 
      } 
     } 

    }); 
    </script> 

element2.html

 <link rel="import" href="bower_components/polymer/polymer.html"> 
    <link rel="import" href="bower_components/neon-animation/neon-shared-element-animatable-behavior.html"> 
    <dom-module id="name-tag1"> 
     <template> 
      <div id="card" style="background:red; width:200px; height:200px; position:absolute; left:300px; top:100px;"></div> 
     </template> 
    </dom-module> 
    <script> 
    Polymer({ 
     is: "name-tag1", 
     behaviors: [ 
      Polymer.NeonAnimationRunnerBehavior 
     ], 
     properties: { 
      sharedElements: { 
       type: Object, 
       value: function() { 
        return { 
         'hero': this.$.card, 

        } 
       } 
      }, 
      animationConfig: { 
       value: function() { 
        return { 
         // the incoming page defines the 'entry' animation 
         'entry': { 
          name: 'hero-animation', 
          id: 'hero', 
          toPage: this 
         } 
        } 
       } 
      }, 

     } 
    }); 
    </script> 

Заранее спасибо.

ответ

1
  1. Вы используете неправильное поведение. NeonAnimationRunnerBehavior предназначен для компонентов, которые играют или запускают анимацию внутри себя. Очень хорошим примером будет компонент neon-animated-pages, он реализует NeonAnimationRunnerBehavior, потому что он запускает анимацию внутри.

  2. Каждый элемент, который размещен в neon-animated-pages, должен осуществить NeonAnimatableBehavior, а не NeonAnimationRunnerBehavior.

  3. Для запуска анимации мы должны каким-то образом переключаться между нашими анимационными компонентами. Атрибут «selected» неона-анимированные страницы помогают нам в этом. Когда selected = "0"neon-animated-pages покажет вам name-tag, когда selected = "1"neon-animated-pages покажет вам name-tag1.

  4. Вы хотите изменить представление после клика, но я не вижу слушателей событий кликов. Добавьте события кликов, которые изменят выбранное значение атрибута, и оно будет работать.