范围设置后启动svg动画-svg
Start svg animation after scope is set - svg
我正在制作一款包含路线图的安卓游戏。(5个世界,每个地图7站)
如果级别为3,则用户必须使行走动画化以停止3。
我创建了这个svg动画
<animateMotion id="test" begin="0.5s" dur="3s" repeatCount="0" rotate="0" path="{{animate}}" fill="freeze"/>
在我为它应该使用的作用域生成if-else函数之前,它工作得很好。(每个路线图有7个站点/级别,我的级别是3,它的范围是世界1,所以属性与页面连接良好)
information.once("value", function(snapshot) {
var data = snapshot.val();
if (data.level < 7) {
console.log("world1");
$scope.animate = "M0,0 q225,150 0,200";
}
else if (data.level > 7) {
console.log("world2")
$scope.animate = "M0,0 0,0 0,0";
}
});
我认为问题是svg在if-else语句选择正确的范围之前加载。
有没有任何方法可以使用角度开始动画?而不是自动加载播放。
(信息.once和数据快照用于存储我的用户数据的firebase)
要使上述代码正常工作,您可能只需要通知编译器您的值已异步更改。有关Angular异步操作的更多信息,请参阅本文。
但这里最好的答案是充分利用这些工具的潜力,并利用Angular和Firebase为您提供的管理这些复杂问题的强大功能。好好阅读一下这些文档是一个很好的方法,可以减少痛苦和摩擦。
您可以使用路线和解决方法来避免视图中的时间问题。
具体而言,您将在管线中加载数据,并在下载数据之前不渲染管线。利用AngularFire,您可以使用$loaded()方法来完成此操作。
app.config(function($routeProvider) {
$routeProvider.when("/home", {
controller: "HomeCtrl",
templateUrl: "views/home.html",
resolve: {
// controller will not be loaded until $waitForAuth resolves
// Auth refers to our $firebaseAuth wrapper in the example above
"syncedData": function($firebaseObject) {
var ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com/path/to/data");
return $firebaseObject(ref).$loaded();
}
}
});
});
现在在您的控制器中,您可以简单地调用注入的依赖项:
app.controller('HomeCtrl', function($scope, syncedData) {
// guaranteed to be loaded when this controller is rendered
$scope.syncedData = syncedData;
});
你也可以使用核心Firebase SDK来实现这一点,而不使用AngularFire,它只需要你创建一个返回承诺的服务,并在路由器中使用它,而不是$firebaseObject:
app.factory('loadData', function($q) {
return function(ref) {
return $q(function(resolve, reject) {
ref.once('value', function(snap) {
resolve(snap.val());
}, reject);
};
}
});
app.config(function($routeProvider) {
$routeProvider.when("/home", {
controller: "HomeCtrl",
templateUrl: "views/home.html",
resolve: {
// use our new service in the resolve instead
"syncedData": function(loadData) {
var ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com/path/to/data");
return loadData(ref);
}
}
});
});
最后一个想法,以及另一个宣传彻底阅读文档如何真正鼓励API的强大使用的机会,如果你在Firebase中使用一次("value"…),你可能会用CRUD模型取代实时数据库,从而抵消实时数据库的所有功能。请参阅指南,了解在实时范例中使用Firebase的一些好方法。
- 在 HTML 页面中嵌入动画 SVG,暂停(不启动动画)
- 按顺序显示动画 SVG 元素
- 范围设置后启动svg动画-svg
- 如何通过javascript添加动画svg
- 如何从线的末端绘制动画(SVG)
- Javascript-变形/动画svg路径数据没有SMIL或库
- 动画SVG视图框更改
- 动画SVG Path元素的背景图像
- GSAP:在动画SVG时保留以前的转换
- 在视口中动画SVG元素
- 在IE11中使用CSS动画SVG路径
- 动画SVG背景图案
- 沿着SVG路径动画SVG渐变
- jQuery数据表和动画SVG处理时
- 使用js/jQuery动画SVG路径
- 动画SVG属性,如填充颜色没有第三方库
- 在if-else条件下动画SVG
- 使用jQuery动画SVG的颜色和比例悬停
- 悬停时捕捉SVG动画SVG/离开时重置SVG
- 动画SVG从一个值到另一个值再到原始值