mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-16 11:42:04 +08:00
73 lines
2.4 KiB
TypeScript
73 lines
2.4 KiB
TypeScript
import * as view from "tns-core-modules/ui/core/view";
|
|
import * as pages from "tns-core-modules/ui/page";
|
|
import { Button } from "tns-core-modules/ui/button";
|
|
import { SegmentedBar, SegmentedBarItem } from "tns-core-modules/ui/segmented-bar";
|
|
import { Label } from "tns-core-modules/ui/label";
|
|
|
|
export function easeAnimate(args) {
|
|
const clicked = args.object as Button;
|
|
const page: pages.Page = clicked.page;
|
|
const target = view.getViewById(page, "target") as Label;
|
|
const select = view.getViewById(page, "select") as SegmentedBar;
|
|
const item: SegmentedBarItem = select.items[select.selectedIndex];
|
|
const easeType: string = clicked.text;
|
|
const extent = 128;
|
|
let duration = easeType === "spring" ? 800 : 500;
|
|
let delay = easeType === "spring" ? 0 : 200;
|
|
let animateKey: string = null;
|
|
let animateValueTo: any = null;
|
|
let animateValueFrom: any = null;
|
|
|
|
switch (item.title) {
|
|
case "height":
|
|
animateKey = "height";
|
|
target.originX = target.originY = 0;
|
|
animateValueTo = 0;
|
|
animateValueFrom = extent;
|
|
break;
|
|
case "width":
|
|
animateKey = "width";
|
|
target.originX = target.originY = 0;
|
|
animateValueTo = 0;
|
|
animateValueFrom = extent;
|
|
break;
|
|
case "opacity":
|
|
animateKey = "opacity";
|
|
animateValueTo = 0;
|
|
animateValueFrom = 1;
|
|
break;
|
|
case "color":
|
|
animateKey = "backgroundColor";
|
|
animateValueTo = "blue";
|
|
animateValueFrom = "purple";
|
|
break;
|
|
case "rotate":
|
|
animateKey = "rotate";
|
|
target.originX = target.originY = 0.5;
|
|
animateValueTo = 180;
|
|
animateValueFrom = 0;
|
|
break;
|
|
case "scale":
|
|
animateKey = "scale";
|
|
target.originX = target.originY = 0.5;
|
|
animateValueTo = { x: 1.5, y: 1.5 };
|
|
animateValueFrom = { x: 1, y: 1 };
|
|
break;
|
|
}
|
|
target
|
|
.animate({
|
|
[animateKey]: animateValueTo,
|
|
duration,
|
|
curve: easeType
|
|
})
|
|
.then(() => {
|
|
return target.animate({
|
|
[animateKey]: animateValueFrom,
|
|
delay,
|
|
duration,
|
|
curve: easeType
|
|
});
|
|
})
|
|
.catch((e) => console.log(e));
|
|
}
|