我如何让同一动画同时在不同地方播放。就目前而言,每当我点击屏幕时,动画就会在该位置开始播放3秒钟,但是如果我再次按下另一位置,动画会跳到该位置,但是我希望它让旧的结束。这样一来,如果您按五次,则屏幕上应该有五个动画,与现在不同,现在只播放一个动画。
这是我的代码。
class HomePage extends StatefulWidget{
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
double posx = -100.0;
double posy = -100.0;
void onLongPressMoveUpdate(BuildContext context, LongPressMoveUpdateDetails details)
{
final RenderBox box = context.findRenderObject();
final Offset localOffset = box.globalToLocal(details.globalPosition);
var tempName = "tryck";
setState(() {
_tryckanimation = tempName;
posx = localOffset.dx;
posy = localOffset.dy;
});
}
void onTapDown(BuildContext context, TapDownDetails details)
{
final RenderBox box = context.findRenderObject();
final Offset localOffset = box.globalToLocal(details.globalPosition);
var tempName = "tryck";
setState(() {
_tryckanimation = tempName;
posx = localOffset.dx;
posy = localOffset.dy;
});
}
void onTapUp(BuildContext context, TapUpDetails details)
{
final RenderBox box = context.findRenderObject();
final Offset localOffset = box.globalToLocal(details.globalPosition);
var tempName = "tryck";
Future.delayed(const Duration(milliseconds: 3000), () {
setState(() {
setState(() {
_tryckanimation = tempName;
posx = -100.0;
posy = -100.0;
});
});
});
}
new GestureDetector(
onTapDown: (TapDownDetails details) => onTapDown(context, details),
onTapUp: (TapUpDetails details) => onTapUp(context, details),
onLongPressMoveUpdate: (LongPressMoveUpdateDetails details) => onLongPressMoveUpdate(context, details),
child: new Stack(fit: StackFit.expand, children: <Widget>[
new Container(color: Colors.transparent,
),
new Positioned(
height: 100.0,
width: 100.0,
child: FlareActor(
"assets/images/tryck2.flr",
animation: _tryckanimation
),
left: posx -50.0,
top: posy- 50.0,
),
您必须为所有动画小部件设置相同的AnimationController
。