使用ng重复,一次制作一个动画
Animate one at a time with ng-repeat
我正在尝试使用ngRepeat
加载图像并播放其相关色调,然后将图像从圆心移动到圆上的特定位置,并对下一个图像执行相同的操作。我使用ng-enter-stagger
逐个显示和移动图像,但是图像的位置不同,所以当我将其更改为每次重复使用不同的类时,ng-enter-stagger
不起作用。
如何加载一个图像,将其移动到适当的位置,隐藏图像,然后继续下一个图像?
我已经创建了一个plunkr,但动画在其中不起作用https://plnkr.co/edit/DddST6JsemsCKKf3mQ6N?p=preview.我想做的一个例子是这个的"学习声音"部分(http://www.absolutepitchstudy.com/animalgame/)单击"启动控制"或"启动动物游戏"
数据如下:
"ImageTones":[{"CPosition":"deg60","Image":{"ImageFileName":"Alligator.png","ImageId":1},"Tone":{"ToneFileName":"C3.mp4","ToneId":1}},
{"CPosition":"deg0","Image":{"ImageFileName":"Cow.png","ImageId":4},"Tone":{"ToneFileName":"B5.mp4","ToneId":2}},
{"CPosition":"deg270","Image":{"ImageFileName":"Bird.png","ImageId":3},"Tone":{"ToneFileName":"E3.mp4","ToneId":3}}]
Html页面:
<div class="circle-container">
<div ng-repeat="it in model.imageTones" class="it.CPosition">
<img ng-src="../Content/Game/Animals/{{it.Image.ImageFileName}}"/>
<!--Audio tag goes here-->
</div>
</div>
我的CSS(我可能可以修复这个问题,使其没有那么多类,只是不确定如何修复)
.circle-container {
position: relative;
width: 38em;
height: 38em;
padding: 2.8em;
/*2.8em = 2em*1.4 (2em = half the width of a link with img, 1.4 = sqrt(2))*/
border: dashed 1px;
border-radius: 80%;
margin: -5.25em auto 0;
}
.circle-container div {
display: block;
position: absolute;
top: 50%;
left: 50%;
width: 4em;
height: 4em;
margin: -2em;
}
.circle-container div.ng-enter {
transition: 5s linear all;
opacity: 0;
}
.circle-container div.ng-enter-stagger {
/* this will have a 100ms delay between each successive leave animation */
transition-delay: 5.0s;
/* As of 1.4.4, this must always be set: it signals ngAnimate
to not accidentally inherit a delay property from another CSS class */
transition-duration: 0s;
}
.circle-container div.ng-enter.ng-enter-active {
/* standard transition styles */
opacity:1;
}
.deg0.ng-enter-active {
transform: translate(19em);
}
.deg30.ng-enter-active {
transform: rotate(30deg) translate(19em) rotate(-30deg);
}
.deg60.ng-enter-active {
transform: rotate(60deg) translate(19em) rotate(-60deg);
}
.deg90.ng-enter-active {
transform: rotate(90deg) translate(19em) rotate(-90deg);
transition: transform 5s;
}
.deg120.ng-enter-active {
transform: rotate(120deg) translate(19em) rotate(-120deg);
}
.deg150.ng-enter-active {
transform: rotate(150deg) translate(19em) rotate(-150deg);
}
.deg180.ng-enter-active {
transform: rotate(180deg) translate(19em) rotate(-180deg);
}
.deg210.ng-enter-active {
transform: rotate(210deg) translate(19em) rotate(-210deg);
}
.deg240.ng-enter-active {
transform: rotate(240deg) translate(19em) rotate(-240deg);
}
.deg270.ng-enter-active {
transform: rotate(270deg) translate(19em) rotate(-270deg);
}
.deg300.ng-enter-active {
transform: rotate(300deg) translate(19em) rotate(-300deg);
}
.deg330.ng-enter-active {
transform: rotate(330deg) translate(19em) rotate(-330deg);
}
有几个错误需要查看第一,要从有角度的项目中获得类的值,您应该查找的是ng类:
<div ng-repeat="it in model.imageTones" ng-class="it.CPosition" ng-if="!it.hidden" >
<img ng-src="http://www.absolutepitchstudy.com/animalgame/content/images/{{it.Image.ImageFileName}}" />
</div>
然后在样式表中,CSS似乎有问题,所以我删除了一个没有使用的类:
.deg60{
transform: rotate(60deg) translate(19em) rotate(-60deg);
}
尽管为了隐藏东西,你可能想把它拿回来。到目前为止,这项工作的最新进展是:
庞克
现在它被呈现在正确的位置,您可以使用$timeout、ng-click或其他方法来更改模型中的类定义。图形的位置应自动更新。
你打算用什么方法?
相关文章:
- 制作一个不带HTML a标记但在动画播放完毕后指向其他页面的超链接
- 使用svg和javascript将一个类的元素动画化为另一个类
- 如何在一个元素动画之后延迟
- jQuery悬停动画只在其他类似元素中的一个元素上
- 如何用jquery动画改变背景颜色,就像一个过渡
- 如何在上一个动画结束后开始动画
- jQuery动画的持续时间就像一个延迟
- 创建一个类似Jquery动画的Flipboard弹出窗口
- RaphaelJS:如何制作一个又一个元素的动画
- 反应点击开始动画 + 第一个动画完成后开始另一个动画
- 我想要一个类似于网站 https://onlycoin.com/ 的jQuery鼠标滚动动画效果
- 如何使用一个移动的三角形/矩形创建画布动画
- HTML 5 画布动画 - 一个接一个地移动多个对象
- 如何动画一个矩形的宽度和高度
- 如何正确地动画一个GSAP菜单
- 尝试在canvas / JS中动画一个跳跃
- Raphael JS -沿着它的路径动画一个半圆
- JQuery只动画一个单元格
- 动画一个-停止另一个|jQuery
- 当尝试用html5 canvas动画一个精灵图像时,奇怪的行为