{"id":86676,"date":"2026-07-29T01:16:47","date_gmt":"2026-07-28T17:16:47","guid":{"rendered":"https:\/\/www.wsisp.com\/helps\/86676.html"},"modified":"2026-07-29T01:16:47","modified_gmt":"2026-07-28T17:16:47","slug":"harmonyos%e5%ba%94%e7%94%a8%e5%bc%80%e5%8f%91%e5%ae%9e%e6%88%98%ef%bc%9a%e7%8c%ab%e7%8c%ab%e5%a4%a7%e4%bd%9c%e6%88%98-animation-%e8%a3%85%e9%a5%b0%e7%bb%91%e5%ae%9a%e3%80%81%e9%9a%90%e5%bc%8f%e8%a1%a5","status":"publish","type":"post","link":"https:\/\/www.wsisp.com\/helps\/86676.html","title":{"rendered":"HarmonyOS\u5e94\u7528\u5f00\u53d1\u5b9e\u6218\uff1a\u732b\u732b\u5927\u4f5c\u6218-animation \u88c5\u9970\u7ed1\u5b9a\u3001\u9690\u5f0f\u8865\u95f4\u673a\u5236\u3001\u4e0e animateTo \u7684\u53d6\u820d\u3001curve \u66f2\u7ebf\u9009"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/07\/20260728171643-6a68e3fba2a1f.png\" alt=\"\u6587\u7ae0\u914d\u56fe\uff1aanimation \u88c5\u9970\u7ed1\u5b9a\u3001\u9690\u5f0f\u8865\u95f4\u673a\u5236\u3001\u4e0e animateTo \u7684\u53d6\u820d\u3001curve \u66f2\u7ebf\u9009\" \/><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/07\/20260728171644-6a68e3fc65221.png\" alt=\"\u9875\u9762\u9884\u89c8\" \/><\/p>\n<h3>\u524d\u8a00<\/h3>\n<p>\u4e0a\u4e00\u7bc7\u6211\u4eec\u7528 animateTo \u505a\u4e86\u300c\u4e3b\u52a8\u89e6\u53d1\u7279\u6548\u300d\u2014\u2014\u5f97\u5206\u5f39\u8df3\u3001\u5408\u5e76\u653e\u5927\u3002\u4f46\u300c\u732b\u732b\u5927\u4f5c\u6218\u300d\u732b\u54aa\u4e0b\u843d\u7528\u7684\u662f\u53e6\u4e00\u79cd\u52a8\u753b\u2014\u2014.animation({ duration: 100 })&#xff08;\u7b2c 16\u300133 \u7bc7\u7528\u8fc7&#xff09;&#xff0c;\u6539 position \u81ea\u52a8\u8865\u95f4\u3002\u8fd9\u662f\u9690\u5f0f\u52a8\u753b&#xff1a;\u7ed9\u7ec4\u4ef6\u7ed1\u4e2a\u52a8\u753b\u53c2\u6570&#xff0c;\u4e4b\u540e\u4efb\u4f55\u5c5e\u6027\u53d8\u5316\u90fd\u81ea\u52a8\u8865\u95f4\u3002\u672c\u7bc7\u4e13\u8bb2 animation \u88c5\u9970\u5668\u7684\u673a\u5236\u548c\u5b9e\u6218\u3002<\/p>\n<p>\u672c\u7bc7\u4ee5\u300c\u732b\u732b\u5927\u4f5c\u6218\u300d\u732b\u54aa\u4e0b\u843d position \u8865\u95f4\u4e3a\u951a\u70b9&#xff0c;\u628a animation \u88c5\u9970\u7ed1\u5b9a\u3001\u9690\u5f0f\u8865\u95f4\u673a\u5236\u3001\u4e0e animateTo \u7684\u53d6\u820d\u3001curve \u66f2\u7ebf\u9009\u56db\u5927\u8981\u70b9\u8bb2\u900f\u3002<\/p>\n<p>\u63d0\u793a&#xff1a;\u672c\u7cfb\u5217\u4e0d\u8bb2 ArkTS \u57fa\u7840\u8bed\u6cd5\u4e0e\u73af\u5883\u642d\u5efa&#xff0c;\u5047\u8bbe\u4f60\u5df2\u8ddf\u5b8c\u7b2c 1\u201355 \u7bc7\u3002\u672c\u7bc7\u662f\u9636\u6bb5\u4e09\u7b2c\u516d\u7bc7\u3002<\/p>\n<h3>\u4e00\u3001\u573a\u666f\u62c6\u89e3&#xff1a;\u732b\u54aa\u4e0b\u843d position \u8865\u95f4<\/h3>\n<p>\u56de\u987e\u300c\u732b\u732b\u5927\u4f5c\u6218\u300d\u732b\u54aa\u6e32\u67d3&#xff08;\u7b2c 16\u300133\u300143 \u7bc7&#xff09;&#xff1a;<\/p>\n<p><span class=\"token comment\">\/\/ \u6765\u6e90&#xff1a;entry\/src\/main\/ets\/pages\/Index.ets  GameView() \u68cb\u76d8 Stack<\/span><br \/>\n<span class=\"token function\">ForEach<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>cats<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span>cat<span class=\"token operator\">:<\/span> Cat<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n  <span class=\"token function\">Column<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token comment\">\/* emoji *\/<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">.<\/span><span class=\"token function\">width<\/span><span class=\"token punctuation\">(<\/span><span class=\"token comment\">\/* size *\/<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">height<\/span><span class=\"token punctuation\">(<\/span><span class=\"token comment\">\/* size *\/<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token punctuation\">.<\/span><span class=\"token function\">position<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> x<span class=\"token operator\">:<\/span> <span class=\"token comment\">\/* x * 60 *\/<\/span><span class=\"token punctuation\">,<\/span> y<span class=\"token operator\">:<\/span> <span class=\"token comment\">\/* y * 60 *\/<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span>     <span class=\"token comment\">\/\/ \u2190 \u8bfb cat.x\/cat.y<\/span><br \/>\n    <span class=\"token punctuation\">.<\/span><span class=\"token function\">animation<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> duration<span class=\"token operator\">:<\/span> <span class=\"token number\">100<\/span><span class=\"token punctuation\">,<\/span> curve<span class=\"token operator\">:<\/span> Curve<span class=\"token punctuation\">.<\/span>Linear <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\">\/\/ \u2190 \u9690\u5f0f\u52a8\u753b<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span>cat<span class=\"token operator\">:<\/span> Cat<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> cat<span class=\"token punctuation\">.<\/span>id<span class=\"token punctuation\">)<\/span><\/p>\n<p>\u673a\u5236&#xff1a;<\/p>\n<li>\u4e3b\u5faa\u73af\u6bcf 100ms \u6539 cat.y&#xff08;\u5f15\u64ce updateCats&#xff09;\u3002<\/li>\n<li>ForEach diff \u590d\u7528 CatItem&#xff08;\u5bc6\u94a5 cat.id \u4e0d\u53d8&#xff09;\u3002<\/li>\n<li>position \u91cd\u65b0\u8ba1\u7b97\u65b0 y\u3002<\/li>\n<li>.animation({ duration: 100 }) \u81ea\u52a8\u4ece\u65e7 position \u8865\u95f4\u5230\u65b0 position&#xff0c;100ms \u5e73\u6ed1\u4e0b\u843d\u3002<\/li>\n<li>\u4e0b\u4e00\u5e27\u4e3b\u5faa\u73af\u53c8\u6539 cat.y&#xff0c;\u65b0\u8865\u95f4\u5f00\u59cb\u2014\u2014\u89c6\u89c9\u4e0a\u732b\u54aa\u6bcf 100ms \u5e73\u6ed1\u4e0b\u843d\u4e00\u683c\u3002<\/li>\n<p>\u5173\u952e\u7ecf\u9a8c&#xff1a;animation \u9690\u5f0f\u8865\u95f4 &#061; \u6539\u5c5e\u6027\u81ea\u52a8\u52a8\u2014\u2014\u7ed1\u4e00\u6b21 .animation({&#8230;})&#xff0c;\u4e4b\u540e position\/scale\/opacity \u7b49\u5c5e\u6027\u53d8\u5316\u90fd\u81ea\u52a8\u8865\u95f4&#xff0c;\u4e0d\u7528\u6bcf\u6b21\u4e3b\u52a8\u8c03 animateTo\u3002<\/p>\n<h3>\u4e8c\u3001animation \u88c5\u9970\u7ed1\u5b9a<\/h3>\n<h4>2.1 \u57fa\u672c\u7528\u6cd5<\/h4>\n<p><span class=\"token function\">Column<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token comment\">\/* &#8230; *\/<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n  <span class=\"token punctuation\">.<\/span><span class=\"token function\">position<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> x<span class=\"token operator\">:<\/span> <span class=\"token number\">100<\/span><span class=\"token punctuation\">,<\/span> y<span class=\"token operator\">:<\/span> <span class=\"token number\">200<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n  <span class=\"token punctuation\">.<\/span><span class=\"token function\">animation<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> duration<span class=\"token operator\">:<\/span> <span class=\"token number\">300<\/span><span class=\"token punctuation\">,<\/span> curve<span class=\"token operator\">:<\/span> Curve<span class=\"token punctuation\">.<\/span>EaseInOut <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span>    <span class=\"token comment\">\/\/ \u2190 \u7ed1\u52a8\u753b<\/span><\/p>\n<p>\u62c6\u89e3&#xff1a;<\/p>\n<table>\n<tr>\u7247\u6bb5\u542b\u4e49<\/tr>\n<tbody>\n<tr>\n<td>.animation({&#8230;})<\/td>\n<td>\u88c5\u9970\u5668&#xff0c;\u7ed1\u5b9a\u52a8\u753b\u53c2\u6570<\/td>\n<\/tr>\n<tr>\n<td>duration: 300<\/td>\n<td>\u8865\u95f4\u65f6\u957f 300ms<\/td>\n<\/tr>\n<tr>\n<td>curve: Curve.EaseInOut<\/td>\n<td>\u7f13\u52a8\u66f2\u7ebf<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u673a\u5236&#xff1a;\u7ed1\u540e&#xff0c;\u8be5\u7ec4\u4ef6\u4efb\u4f55\u53ef\u52a8\u753b\u5c5e\u6027&#xff08;position\/scale\/opacity\/rotate\/backgroundColor \u7b49&#xff09;\u53d8\u5316\u90fd\u81ea\u52a8\u7528\u8fd9\u53c2\u6570\u8865\u95f4\u3002<\/p>\n<h4>2.2 \u6539\u5c5e\u6027\u81ea\u52a8\u8865\u95f4<\/h4>\n<p><span class=\"token decorator\"><span class=\"token at operator\">&#064;<\/span><span class=\"token function\">State<\/span><\/span> catX<span class=\"token operator\">:<\/span> <span class=\"token builtin\">number<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token function\">Column<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token comment\">\/* &#8230; *\/<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n  <span class=\"token punctuation\">.<\/span><span class=\"token function\">position<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> x<span class=\"token operator\">:<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>catX <span class=\"token operator\">*<\/span> <span class=\"token number\">60<\/span><span class=\"token punctuation\">,<\/span> y<span class=\"token operator\">:<\/span> <span class=\"token number\">100<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n  <span class=\"token punctuation\">.<\/span><span class=\"token function\">animation<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> duration<span class=\"token operator\">:<\/span> <span class=\"token number\">300<\/span><span class=\"token punctuation\">,<\/span> curve<span class=\"token operator\">:<\/span> Curve<span class=\"token punctuation\">.<\/span>EaseInOut <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u4e4b\u540e\u6539 catX \u81ea\u52a8\u8865\u95f4<\/span><br \/>\n<span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>catX <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">5<\/span><span class=\"token punctuation\">;<\/span>     <span class=\"token comment\">\/\/ \u4ece x&#061;0 \u8865\u95f4\u5230 x&#061;300&#xff0c;300ms EaseInOut<\/span><\/p>\n<p>\u5173\u952e\u7ecf\u9a8c&#xff1a;animation \u7ed1\u4e00\u6b21&#xff0c;\u540e\u7eed\u6539\u5c5e\u6027\u81ea\u52a8\u52a8\u2014\u2014\u4e0d\u7528\u6bcf\u6b21\u6539\u90fd\u5305 animateTo\u3002<\/p>\n<h4>2.3 \u591a\u5c5e\u6027\u540c\u8865<\/h4>\n<p><span class=\"token function\">Column<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token comment\">\/* &#8230; *\/<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n  <span class=\"token punctuation\">.<\/span><span class=\"token function\">position<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> x<span class=\"token operator\">:<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>catX<span class=\"token punctuation\">,<\/span> y<span class=\"token operator\">:<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>catY <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n  <span class=\"token punctuation\">.<\/span><span class=\"token function\">scale<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> x<span class=\"token operator\">:<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>catScale<span class=\"token punctuation\">,<\/span> y<span class=\"token operator\">:<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>catScale <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n  <span class=\"token punctuation\">.<\/span><span class=\"token function\">opacity<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>catOpacity<span class=\"token punctuation\">)<\/span><br \/>\n  <span class=\"token punctuation\">.<\/span><span class=\"token function\">animation<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> duration<span class=\"token operator\">:<\/span> <span class=\"token number\">300<\/span><span class=\"token punctuation\">,<\/span> curve<span class=\"token operator\">:<\/span> Curve<span class=\"token punctuation\">.<\/span>EaseInOut <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u6539 catX\/catY\/catScale\/catOpacity \u4efb\u4e00&#xff0c;\u90fd\u81ea\u52a8\u8865\u95f4<\/span><br \/>\n<span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>catX <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">100<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>catScale <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1.5<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>catOpacity <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0.5<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token comment\">\/\/ \u4e09\u5c5e\u6027\u540c\u65f6\u8865\u95f4&#xff0c;300ms \u5e73\u6ed1\u8fc7\u6e21<\/span><\/p>\n<h3>\u4e09\u3001\u9690\u5f0f\u8865\u95f4\u673a\u5236<\/h3>\n<h4>3.1 ArkUI \u5982\u4f55\u8bc6\u522b\u300c\u5c5e\u6027\u53d8\u5316\u300d<\/h4>\n<p><span class=\"token function\">Column<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n  <span class=\"token punctuation\">.<\/span><span class=\"token function\">position<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> x<span class=\"token operator\">:<\/span> <span class=\"token number\">100<\/span><span class=\"token punctuation\">,<\/span> y<span class=\"token operator\">:<\/span> <span class=\"token number\">200<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n  <span class=\"token punctuation\">.<\/span><span class=\"token function\">animation<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> duration<span class=\"token operator\">:<\/span> <span class=\"token number\">300<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u7b2c 1 \u6b21\u6e32\u67d3&#xff1a;position &#061; (100, 200)&#xff0c;\u8bb0\u5f55\u4e3a\u300c\u65e7\u503c\u300d<\/span><br \/>\n<span class=\"token comment\">\/\/ \u6539 catX \u89e6\u53d1\u91cd\u6e32\u67d3&#xff1a;<\/span><br \/>\n<span class=\"token comment\">\/\/ position &#061; (300, 200)&#xff0c;ArkUI \u68c0\u6d4b\u5230 x \u4ece 100 \u2192 300<\/span><br \/>\n<span class=\"token comment\">\/\/ .animation \u68c0\u6d4b\u5230\u53d8\u5316&#xff0c;\u7528 300ms \u8865\u95f4 x: 100 \u2192 300<\/span><br \/>\n<span class=\"token comment\">\/\/ y \u6ca1\u53d8&#xff0c;\u4e0d\u8865\u95f4<\/span><\/p>\n<p>\u673a\u5236&#xff1a;<\/p>\n<li>\u9996\u6b21\u6e32\u67d3&#xff0c;\u8bb0\u5f55\u6240\u6709\u53ef\u52a8\u753b\u5c5e\u6027\u7684\u300c\u65e7\u503c\u300d\u3002<\/li>\n<li>\u91cd\u6e32\u67d3\u65f6&#xff0c;\u5bf9\u6bd4\u65b0\u65e7\u503c\u2014\u2014\u53d8\u5316\u7684\u5c5e\u6027\u8d70\u8865\u95f4&#xff0c;\u6ca1\u53d8\u7684\u77ac\u5207\u3002<\/li>\n<li>\u8865\u95f4\u8fc7\u7a0b\u4e2d&#xff0c;\u7ec4\u4ef6\u89c6\u89c9\u4e0a\u4ece\u65e7\u503c\u5e73\u6ed1\u8fc7\u6e21\u5230\u65b0\u503c\u3002<\/li>\n<h4>3.2 \u54ea\u4e9b\u5c5e\u6027\u53ef\u8865\u95f4<\/h4>\n<table>\n<tr>\u5c5e\u6027\u53ef\u8865\u95f4\u4e3e\u4f8b<\/tr>\n<tbody>\n<tr>\n<td>position<\/td>\n<td>\u2705<\/td>\n<td>\u732b\u54aa\u4e0b\u843d<\/td>\n<\/tr>\n<tr>\n<td>scale<\/td>\n<td>\u2705<\/td>\n<td>\u653e\u5927\u7f29\u5c0f<\/td>\n<\/tr>\n<tr>\n<td>opacity<\/td>\n<td>\u2705<\/td>\n<td>\u6de1\u5165\u6de1\u51fa<\/td>\n<\/tr>\n<tr>\n<td>rotate<\/td>\n<td>\u2705<\/td>\n<td>\u65cb\u8f6c<\/td>\n<\/tr>\n<tr>\n<td>backgroundColor<\/td>\n<td>\u2705<\/td>\n<td>\u989c\u8272\u8fc7\u6e21<\/td>\n<\/tr>\n<tr>\n<td>width\/height<\/td>\n<td>\u2705<\/td>\n<td>\u5c3a\u5bf8\u53d8\u5316<\/td>\n<\/tr>\n<tr>\n<td>margin\/padding<\/td>\n<td>\u2705<\/td>\n<td>\u95f4\u8ddd\u53d8\u5316<\/td>\n<\/tr>\n<tr>\n<td>fontSize<\/td>\n<td>\u2705<\/td>\n<td>\u5b57\u53f7\u53d8\u5316<\/td>\n<\/tr>\n<tr>\n<td>borderRadius<\/td>\n<td>\u2705<\/td>\n<td>\u5706\u89d2\u53d8\u5316<\/td>\n<\/tr>\n<tr>\n<td>Text \u6587\u672c\u5185\u5bb9<\/td>\n<td>\u274c<\/td>\n<td>\u6587\u672c\u77ac\u5207&#xff08;\u975e\u6570\u503c&#xff09;<\/td>\n<\/tr>\n<tr>\n<td>if \u6761\u4ef6\u6e32\u67d3<\/td>\n<td>\u274c<\/td>\n<td>\u51fa\u73b0\/\u9500\u6bc1\u4e0d\u8865\u95f4&#xff08;\u7528 transition&#xff09;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u5173\u952e\u7ecf\u9a8c&#xff1a;\u6570\u503c\u578b\u5c5e\u6027\u53ef\u8865\u95f4&#xff0c;\u6587\u672c\/\u6761\u4ef6\u6e32\u67d3\u4e0d\u8865\u95f4\u2014\u2014\u6587\u672c\u53d8\u5316\u8981\u6de1\u51fa\u65e7&#043;\u6de1\u5165\u65b0&#xff08;\u7528 opacity \u6216 transition&#xff09;\u3002<\/p>\n<h4>3.3 \u8865\u95f4\u6253\u65ad\u4e0e\u91cd\u542f<\/h4>\n<p><span class=\"token comment\">\/\/ \u5047\u8bbe catX \u4ece 0 \u8865\u95f4\u5230 300&#xff0c;\u8fdb\u884c\u5230 150ms&#xff08;x&#061;150&#xff09;<\/span><br \/>\n<span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>catX <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">500<\/span><span class=\"token punctuation\">;<\/span>     <span class=\"token comment\">\/\/ \u4e2d\u9014\u6539\u65b0\u76ee\u6807<\/span><br \/>\n<span class=\"token comment\">\/\/ ArkUI \u4ece\u5f53\u524d x&#061;150 \u91cd\u65b0\u5f00\u59cb\u8865\u95f4\u5230 500&#xff0c;300ms EaseInOut<\/span><br \/>\n<span class=\"token comment\">\/\/ \u4e0d\u7b49\u5f85\u539f\u8865\u95f4\u5b8c\u6210&#xff0c;\u7acb\u5373\u91cd\u542f<\/span><\/p>\n<p>\u5b9e\u6218\u7ecf\u9a8c&#xff1a;animation \u8865\u95f4\u53ef\u4e2d\u9014\u6253\u65ad\u2014\u2014\u6539\u65b0\u76ee\u6807\u7acb\u5373\u4ece\u5f53\u524d\u503c\u91cd\u542f\u8865\u95f4&#xff0c;\u9002\u5408\u300c\u5b9e\u65f6\u8ddf\u968f\u300d\u573a\u666f&#xff08;\u732b\u54aa\u4e0b\u843d\u6bcf 100ms \u6539\u76ee\u6807&#xff09;\u3002<\/p>\n<h3>\u56db\u3001\u4e0e animateTo \u7684\u53d6\u820d<\/h3>\n<h4>4.1 \u4e24\u79cd\u52a8\u753b API \u5bf9\u6bd4<\/h4>\n<table>\n<tr>\u7ef4\u5ea6\u9690\u5f0f .animation\u663e\u5f0f animateTo<\/tr>\n<tbody>\n<tr>\n<td>\u89e6\u53d1<\/td>\n<td>\u6539\u5c5e\u6027\u81ea\u52a8\u8865\u95f4<\/td>\n<td>\u4e3b\u52a8\u8c03 API<\/td>\n<\/tr>\n<tr>\n<td>\u7ed1\u5b9a<\/td>\n<td>\u7ed1\u5728\u7ec4\u4ef6\u88c5\u9970\u94fe<\/td>\n<td>\u8c03\u7528\u65f6\u5305\u95ed\u5305<\/td>\n<\/tr>\n<tr>\n<td>\u53c2\u6570<\/td>\n<td>\u56fa\u5b9a\u4e00\u6b21<\/td>\n<td>\u6bcf\u6b21\u53ef\u4f20\u4e0d\u540c<\/td>\n<\/tr>\n<tr>\n<td>\u591a\u6bb5\u4e32\u8054<\/td>\n<td>\u274c \u96be<\/td>\n<td>\u2705 onFinish \u4e32\u8054<\/td>\n<\/tr>\n<tr>\n<td>\u9002\u5408<\/td>\n<td>\u300c\u5c5e\u6027\u81ea\u7136\u53d8\u5316\u300d<\/td>\n<td>\u300c\u4e3b\u52a8\u89e6\u53d1\u7279\u6548\u300d<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>4.2 \u573a\u666f\u5bf9\u7167<\/h4>\n<p><span class=\"token comment\">\/\/ \u573a\u666f A&#xff1a;\u732b\u54aa\u4e0b\u843d&#xff08;position \u81ea\u7136\u53d8&#xff09;\u2192 \u9690\u5f0f animation<\/span><br \/>\n<span class=\"token function\">ForEach<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>cats<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span>cat<span class=\"token operator\">:<\/span> Cat<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n  <span class=\"token function\">Column<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token comment\">\/* &#8230; *\/<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">.<\/span><span class=\"token function\">position<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> x<span class=\"token operator\">:<\/span> cat<span class=\"token punctuation\">.<\/span>x <span class=\"token operator\">*<\/span> <span class=\"token number\">60<\/span><span class=\"token punctuation\">,<\/span> y<span class=\"token operator\">:<\/span> cat<span class=\"token punctuation\">.<\/span>y <span class=\"token operator\">*<\/span> <span class=\"token number\">60<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token punctuation\">.<\/span><span class=\"token function\">animation<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> duration<span class=\"token operator\">:<\/span> <span class=\"token number\">100<\/span><span class=\"token punctuation\">,<\/span> curve<span class=\"token operator\">:<\/span> Curve<span class=\"token punctuation\">.<\/span>Linear <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span>   <span class=\"token comment\">\/\/ \u2190 \u9690\u5f0f<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span>cat<span class=\"token operator\">:<\/span> Cat<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> cat<span class=\"token punctuation\">.<\/span>id<span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u573a\u666f B&#xff1a;\u5f97\u5206\u5f39\u8df3&#xff08;\u70b9\u51fb\u4e3b\u52a8\u89e6\u53d1&#xff09;\u2192 \u663e\u5f0f animateTo<\/span><br \/>\n<span class=\"token function\">handleScoreChange<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n  <span class=\"token function\">animateTo<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> duration<span class=\"token operator\">:<\/span> <span class=\"token number\">300<\/span><span class=\"token punctuation\">,<\/span> curve<span class=\"token operator\">:<\/span> Curve<span class=\"token punctuation\">.<\/span>EaseOut <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>scoreScale <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1.5<\/span><span class=\"token punctuation\">;<\/span>      <span class=\"token comment\">\/\/ \u4e3b\u52a8\u89e6\u53d1<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token function\">Text<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>score<span class=\"token punctuation\">.<\/span><span class=\"token function\">toString<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n  <span class=\"token punctuation\">.<\/span><span class=\"token function\">scale<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> x<span class=\"token operator\">:<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>scoreScale<span class=\"token punctuation\">,<\/span> y<span class=\"token operator\">:<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>scoreScale <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u4e0d\u7ed1 .animation&#xff0c;\u9760 animateTo \u4e3b\u52a8\u89e6\u53d1<\/span><\/p>\n<h4>4.3 \u53d6\u820d\u51b3\u7b56<\/h4>\n<p>\u52a8\u753b\u89e6\u53d1\u65f6\u673a&#xff1f;<br \/>\n  \u251c\u2500 \u5c5e\u6027\u81ea\u7136\u53d8\u5316&#xff08;\u6bcf\u5e27\/\u6bcf\u6b21\u5faa\u73af\u6539&#xff09;\u2192 \u9690\u5f0f .animation<br \/>\n  \u2514 \u4e3b\u52a8\u89e6\u53d1\u4e00\u6b21&#xff08;\u70b9\u51fb\/\u5408\u5e76\/\u8fde\u51fb&#xff09;\u2192 \u663e\u5f0f animateTo<\/p>\n<p>\u5173\u952e\u7ecf\u9a8c&#xff1a;\u300c\u5faa\u73af\u6539\u5c5e\u6027\u300d\u7528\u9690\u5f0f animation&#xff0c;\u300c\u70b9\u51fb\u89e6\u53d1\u4e00\u6b21\u300d\u7528\u663e\u5f0f animateTo\u2014\u2014\u732b\u54aa\u4e0b\u843d\u6bcf 100ms \u6539 position \u7528\u9690\u5f0f&#xff0c;\u5f97\u5206\u5f39\u8df3\u70b9\u51fb\u89e6\u53d1\u7528\u663e\u5f0f\u3002<\/p>\n<h4>4.4 \u4e24\u8005\u6df7\u7528<\/h4>\n<p><span class=\"token comment\">\/\/ \u540c\u7ec4\u4ef6\u53ef\u540c\u65f6\u7528&#xff1a;\u9690\u5f0f\u7ba1 position&#xff0c;\u663e\u5f0f\u7ba1 scale<\/span><br \/>\n<span class=\"token function\">ForEach<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>cats<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span>cat<span class=\"token operator\">:<\/span> Cat<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n  <span class=\"token function\">Column<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token comment\">\/* &#8230; *\/<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">.<\/span><span class=\"token function\">position<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> x<span class=\"token operator\">:<\/span> cat<span class=\"token punctuation\">.<\/span>x <span class=\"token operator\">*<\/span> <span class=\"token number\">60<\/span><span class=\"token punctuation\">,<\/span> y<span class=\"token operator\">:<\/span> cat<span class=\"token punctuation\">.<\/span>y <span class=\"token operator\">*<\/span> <span class=\"token number\">60<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token punctuation\">.<\/span><span class=\"token function\">animation<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> duration<span class=\"token operator\">:<\/span> <span class=\"token number\">100<\/span><span class=\"token punctuation\">,<\/span> curve<span class=\"token operator\">:<\/span> Curve<span class=\"token punctuation\">.<\/span>Linear <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span>   <span class=\"token comment\">\/\/ \u9690\u5f0f\u7ba1\u4f4d\u7f6e<\/span><br \/>\n    <span class=\"token punctuation\">.<\/span><span class=\"token function\">scale<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><br \/>\n      x<span class=\"token operator\">:<\/span> cat<span class=\"token punctuation\">.<\/span>id <span class=\"token operator\">&#061;&#061;&#061;<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>newCatId <span class=\"token operator\">?<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>newCatScale <span class=\"token operator\">:<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span><br \/>\n      y<span class=\"token operator\">:<\/span> cat<span class=\"token punctuation\">.<\/span>id <span class=\"token operator\">&#061;&#061;&#061;<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>newCatId <span class=\"token operator\">?<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>newCatScale <span class=\"token operator\">:<\/span> <span class=\"token number\">1<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u4e0d\u7ed1 .animation \u7ed9 scale&#xff0c;\u9760 animateTo \u4e3b\u52a8\u89e6\u53d1\u5408\u5e76\u653e\u5927<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span>cat<span class=\"token operator\">:<\/span> Cat<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> cat<span class=\"token punctuation\">.<\/span>id<span class=\"token punctuation\">)<\/span><\/p>\n<p>\u5b9e\u6218\u7ecf\u9a8c&#xff1a;\u9690\u5f0f\u548c\u663e\u5f0f\u53ef\u6df7\u7528\u2014\u2014\u4e0d\u540c\u5c5e\u6027\u5206\u522b\u7528&#xff0c;\u5404\u7ba1\u5404\u7684\u3002<\/p>\n<h3>\u4e94\u3001curve \u66f2\u7ebf\u9009<\/h3>\n<h4>5.1 \u5e38\u7528 Curve<\/h4>\n<p><span class=\"token keyword\">enum<\/span> Curve <span class=\"token punctuation\">{<\/span><br \/>\n  Linear<span class=\"token punctuation\">,<\/span>          <span class=\"token comment\">\/\/ \u5300\u901f<\/span><br \/>\n  Ease<span class=\"token punctuation\">,<\/span>            <span class=\"token comment\">\/\/ \u5148\u6162\u540e\u5feb\u518d\u6162<\/span><br \/>\n  EaseIn<span class=\"token punctuation\">,<\/span>          <span class=\"token comment\">\/\/ \u5148\u6162\u540e\u5feb<\/span><br \/>\n  EaseOut<span class=\"token punctuation\">,<\/span>         <span class=\"token comment\">\/\/ \u5148\u5feb\u540e\u6162<\/span><br \/>\n  EaseInOut<span class=\"token punctuation\">,<\/span>       <span class=\"token comment\">\/\/ \u4e24\u7aef\u6162\u4e2d\u95f4\u5feb<\/span><br \/>\n  FastOut<span class=\"token punctuation\">,<\/span>         <span class=\"token comment\">\/\/ \u5feb\u51fa<\/span><br \/>\n  SlowOut<span class=\"token punctuation\">,<\/span>         <span class=\"token comment\">\/\/ \u6162\u51fa<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u7b49\u66f4\u591a<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<h4>5.2 \u573a\u666f\u5bf9\u7167<\/h4>\n<table>\n<tr>\u573a\u666f\u63a8\u8350 Curve\u539f\u56e0<\/tr>\n<tbody>\n<tr>\n<td>\u732b\u54aa\u4e0b\u843d&#xff08;\u91cd\u529b\u611f&#xff09;<\/td>\n<td>Linear \u6216 FastOut<\/td>\n<td>\u5300\u901f\u6216\u52a0\u901f\u4e0b\u843d<\/td>\n<\/tr>\n<tr>\n<td>\u4f4d\u7f6e\u79fb\u52a8&#xff08;UI \u5207\u6362&#xff09;<\/td>\n<td>EaseInOut<\/td>\n<td>\u4e24\u7aef\u6162\u4e2d\u95f4\u5feb&#xff0c;\u81ea\u7136<\/td>\n<\/tr>\n<tr>\n<td>\u653e\u5927\u51fa\u73b0<\/td>\n<td>EaseOut<\/td>\n<td>\u5148\u5feb\u540e\u6162\u6709\u51b2\u51fb<\/td>\n<\/tr>\n<tr>\n<td>\u7f29\u5c0f\u6d88\u5931<\/td>\n<td>EaseIn<\/td>\n<td>\u5148\u6162\u540e\u5feb\u6e10\u9690<\/td>\n<\/tr>\n<tr>\n<td>\u5f39\u6027\u53cd\u9988<\/td>\n<td>Spring&#xff08;ICurve&#xff09;<\/td>\n<td>\u5f39\u7c27\u56de\u5f39<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>5.3 \u81ea\u5b9a\u4e49 ICurve<\/h4>\n<p><span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> curves <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.ArkUI&#039;<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u5f39\u6027\u66f2\u7ebf<\/span><br \/>\n<span class=\"token keyword\">const<\/span> springCurve <span class=\"token operator\">&#061;<\/span> curves<span class=\"token punctuation\">.<\/span><span class=\"token function\">springMotion<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0.5<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0.8<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token function\">Column<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n  <span class=\"token punctuation\">.<\/span><span class=\"token function\">position<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> x<span class=\"token operator\">:<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>catX<span class=\"token punctuation\">,<\/span> y<span class=\"token operator\">:<\/span> <span class=\"token number\">100<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n  <span class=\"token punctuation\">.<\/span><span class=\"token function\">animation<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> duration<span class=\"token operator\">:<\/span> <span class=\"token number\">300<\/span><span class=\"token punctuation\">,<\/span> curve<span class=\"token operator\">:<\/span> springCurve <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span>    <span class=\"token comment\">\/\/ \u2190 \u7528 ICurve<\/span><\/p>\n<p>\u5173\u952e\u7ecf\u9a8c&#xff1a;\u590d\u6742\u66f2\u7ebf\u7528 ICurve \u81ea\u5b9a\u4e49\u2014\u2014\u672c\u7cfb\u5217\u7b2c 59 \u7bc7\u4f1a\u4e13\u8bb2 Spring \u5f39\u6027\u7269\u7406\u3002<\/p>\n<h3>\u516d\u3001\u5b8c\u6574\u4ee3\u7801&#xff1a;\u732b\u54aa\u4e0b\u843d &#043; \u591a\u5c5e\u6027\u8865\u95f4<\/h3>\n<p><span class=\"token comment\">\/\/ \u6765\u6e90&#xff1a;entry\/src\/main\/ets\/pages\/Index.ets&#xff08;animation \u9690\u5f0f\u52a8\u753b\u5b8c\u6574\u7248&#xff09;<\/span><br \/>\n<span class=\"token decorator\"><span class=\"token at operator\">&#064;<\/span><span class=\"token function\">Entry<\/span><\/span><br \/>\n<span class=\"token decorator\"><span class=\"token at operator\">&#064;<\/span><span class=\"token function\">Component<\/span><\/span><br \/>\nstruct Index <span class=\"token punctuation\">{<\/span><br \/>\n  <span class=\"token decorator\"><span class=\"token at operator\">&#064;<\/span><span class=\"token function\">State<\/span><\/span> gameState<span class=\"token operator\">:<\/span> GameState <span class=\"token operator\">&#061;<\/span> GameState<span class=\"token punctuation\">.<\/span><span class=\"token constant\">IDLE<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token decorator\"><span class=\"token at operator\">&#064;<\/span><span class=\"token function\">State<\/span><\/span> score<span class=\"token operator\">:<\/span> <span class=\"token builtin\">number<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token decorator\"><span class=\"token at operator\">&#064;<\/span><span class=\"token function\">State<\/span><\/span> cats<span class=\"token operator\">:<\/span> Cat<span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token decorator\"><span class=\"token at operator\">&#064;<\/span><span class=\"token function\">State<\/span><\/span> combo<span class=\"token operator\">:<\/span> ComboInfo <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span> count<span class=\"token operator\">:<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> multiplier<span class=\"token operator\">:<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> lastMergeTime<span class=\"token operator\">:<\/span> <span class=\"token number\">0<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token decorator\"><span class=\"token at operator\">&#064;<\/span><span class=\"token function\">State<\/span><\/span> nextCatLevel<span class=\"token operator\">:<\/span> CatLevel <span class=\"token operator\">&#061;<\/span> CatLevel<span class=\"token punctuation\">.<\/span><span class=\"token constant\">SMALL<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token decorator\"><span class=\"token at operator\">&#064;<\/span><span class=\"token function\">State<\/span><\/span> highScore<span class=\"token operator\">:<\/span> <span class=\"token builtin\">number<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token decorator\"><span class=\"token at operator\">&#064;<\/span><span class=\"token function\">State<\/span><\/span> gameTime<span class=\"token operator\">:<\/span> <span class=\"token builtin\">number<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token comment\">\/* &#8230; \u5176\u4ed6 state *\/<\/span><\/p>\n<p>  <span class=\"token keyword\">private<\/span> gameEngine<span class=\"token operator\">:<\/span> GameEngine <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">GameEngine<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token keyword\">private<\/span> gameLoopTimer<span class=\"token operator\">:<\/span> <span class=\"token builtin\">number<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token keyword\">private<\/span> spawnTimer<span class=\"token operator\">:<\/span> <span class=\"token builtin\">number<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token keyword\">private<\/span> timeTimer<span class=\"token operator\">:<\/span> <span class=\"token builtin\">number<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">readonly<\/span> cols<span class=\"token operator\">:<\/span> <span class=\"token builtin\">number<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">4<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>  <span class=\"token function\">startGame<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">clearTimers<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>gameEngine<span class=\"token punctuation\">.<\/span><span class=\"token function\">reset<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>gameState <span class=\"token operator\">&#061;<\/span> GameState<span class=\"token punctuation\">.<\/span><span class=\"token constant\">PLAYING<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>score <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>cats <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>gameTime <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>combo <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span> count<span class=\"token operator\">:<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> multiplier<span class=\"token operator\">:<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> lastMergeTime<span class=\"token operator\">:<\/span> <span class=\"token number\">0<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>nextCatLevel <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>gameEngine<span class=\"token punctuation\">.<\/span><span class=\"token function\">getNextCatLevel<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>    <span class=\"token comment\">\/\/ \u4e3b\u5faa\u73af&#xff1a;\u6bcf 100ms \u6539 cat.y&#xff0c;animation \u9690\u5f0f\u8865\u95f4\u4e0b\u843d<\/span><br \/>\n    <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>gameLoopTimer <span class=\"token operator\">&#061;<\/span> <span class=\"token function\">setInterval<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>gameState <span class=\"token operator\">!&#061;&#061;<\/span> GameState<span class=\"token punctuation\">.<\/span><span class=\"token constant\">PLAYING<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">return<\/span><span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>cats <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>gameEngine<span class=\"token punctuation\">.<\/span><span class=\"token function\">updateCats<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>   <span class=\"token comment\">\/\/ \u6539 cat.y<\/span><br \/>\n      <span class=\"token comment\">\/\/ animation \u81ea\u52a8\u4ece\u65e7 y \u8865\u95f4\u5230\u65b0 y&#xff0c;100ms \u5e73\u6ed1\u4e0b\u843d<\/span><br \/>\n      <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>score <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>gameEngine<span class=\"token punctuation\">.<\/span><span class=\"token function\">getScore<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>combo <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>gameEngine<span class=\"token punctuation\">.<\/span><span class=\"token function\">getCombo<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>gameEngine<span class=\"token punctuation\">.<\/span><span class=\"token function\">isGameOver<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">endGame<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">100<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>    <span class=\"token comment\">\/* spawnTimer\u3001timeTimer \u7b65\u7565 *\/<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><\/p>\n<p>  <span class=\"token comment\">\/* pauseGame \/ resumeGame \/ endGame \/ handleColumnClick \/ clearTimers \/ formatTime \/ aboutToDisappear \u7b65\u7565 *\/<\/span><\/p>\n<p>  <span class=\"token decorator\"><span class=\"token at operator\">&#064;<\/span><span class=\"token function\">Builder<\/span><\/span><br \/>\n  <span class=\"token function\">GameView<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token function\">Column<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">GameHUD<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n      <span class=\"token function\">Column<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token function\">Row<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token comment\">\/* \u9884\u544a\u533a *\/<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token function\">Stack<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n          <span class=\"token comment\">\/\/ \u68cb\u76d8\u80cc\u666f\u7f51\u683c<\/span><br \/>\n          <span class=\"token function\">Column<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token function\">ForEach<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>rows<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span>row<span class=\"token operator\">:<\/span> <span class=\"token builtin\">number<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n              <span class=\"token function\">Row<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                <span class=\"token function\">ForEach<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>cols<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span>col<span class=\"token operator\">:<\/span> <span class=\"token builtin\">number<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                  <span class=\"token function\">Column<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                    <span class=\"token punctuation\">.<\/span><span class=\"token function\">width<\/span><span class=\"token punctuation\">(<\/span>GameConfig<span class=\"token punctuation\">.<\/span><span class=\"token constant\">CELL_SIZE<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">height<\/span><span class=\"token punctuation\">(<\/span>GameConfig<span class=\"token punctuation\">.<\/span><span class=\"token constant\">CELL_SIZE<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                    <span class=\"token punctuation\">.<\/span><span class=\"token function\">border<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> width<span class=\"token operator\">:<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> color<span class=\"token operator\">:<\/span> <span class=\"token string\">&#039;rgba(255,255,255,0.5)&#039;<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span>col<span class=\"token operator\">:<\/span> <span class=\"token builtin\">number<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token template-string\"><span class=\"token template-punctuation string\">&#096;<\/span><span class=\"token string\">grid_<\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>row<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token string\">_<\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>col<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">&#096;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">}<\/span><br \/>\n            <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span>row<span class=\"token operator\">:<\/span> <span class=\"token builtin\">number<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token template-string\"><span class=\"token template-punctuation string\">&#096;<\/span><span class=\"token string\">grid_row_<\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>row<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">&#096;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">}<\/span><\/p>\n<p>          <span class=\"token comment\">\/\/ \u732b\u54aa\u6e32\u67d3&#xff1a;animation \u9690\u5f0f\u52a8\u753b&#xff08;\u672c\u7bc7\u91cd\u70b9&#xff09;<\/span><br \/>\n          <span class=\"token function\">ForEach<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>cats<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span>cat<span class=\"token operator\">:<\/span> Cat<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token function\">Column<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n              <span class=\"token function\">Text<\/span><span class=\"token punctuation\">(<\/span>CatConfig<span class=\"token punctuation\">[<\/span>cat<span class=\"token punctuation\">.<\/span>level<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>emoji<span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontSize<\/span><span class=\"token punctuation\">(<\/span>CatConfig<span class=\"token punctuation\">[<\/span>cat<span class=\"token punctuation\">.<\/span>level<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>size <span class=\"token operator\">*<\/span> <span class=\"token number\">0.5<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token punctuation\">}<\/span><br \/>\n            <span class=\"token punctuation\">.<\/span><span class=\"token function\">width<\/span><span class=\"token punctuation\">(<\/span>CatConfig<span class=\"token punctuation\">[<\/span>cat<span class=\"token punctuation\">.<\/span>level<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>size<span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token punctuation\">.<\/span><span class=\"token function\">height<\/span><span class=\"token punctuation\">(<\/span>CatConfig<span class=\"token punctuation\">[<\/span>cat<span class=\"token punctuation\">.<\/span>level<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>size<span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token punctuation\">.<\/span><span class=\"token function\">borderRadius<\/span><span class=\"token punctuation\">(<\/span>CatConfig<span class=\"token punctuation\">[<\/span>cat<span class=\"token punctuation\">.<\/span>level<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>size <span class=\"token operator\">\/<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token punctuation\">.<\/span><span class=\"token function\">backgroundColor<\/span><span class=\"token punctuation\">(<\/span>CatConfig<span class=\"token punctuation\">[<\/span>cat<span class=\"token punctuation\">.<\/span>level<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>color<span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token punctuation\">.<\/span><span class=\"token function\">justifyContent<\/span><span class=\"token punctuation\">(<\/span>FlexAlign<span class=\"token punctuation\">.<\/span>Center<span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token punctuation\">.<\/span><span class=\"token function\">shadow<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> radius<span class=\"token operator\">:<\/span> <span class=\"token number\">4<\/span><span class=\"token punctuation\">,<\/span> color<span class=\"token operator\">:<\/span> <span class=\"token string\">&#039;rgba(0,0,0,0.2)&#039;<\/span><span class=\"token punctuation\">,<\/span> offsetY<span class=\"token operator\">:<\/span> <span class=\"token number\">2<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token comment\">\/\/ position \u8bfb cat.x\/cat.y&#xff0c;\u4e3b\u5faa\u73af\u6539 cat.y \u89e6\u53d1\u8865\u95f4<\/span><br \/>\n            <span class=\"token punctuation\">.<\/span><span class=\"token function\">position<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><br \/>\n              x<span class=\"token operator\">:<\/span> cat<span class=\"token punctuation\">.<\/span>x <span class=\"token operator\">*<\/span> <span class=\"token number\">60<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token number\">60<\/span> <span class=\"token operator\">&#8211;<\/span> CatConfig<span class=\"token punctuation\">[<\/span>cat<span class=\"token punctuation\">.<\/span>level<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>size<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span><br \/>\n              y<span class=\"token operator\">:<\/span> cat<span class=\"token punctuation\">.<\/span>y <span class=\"token operator\">*<\/span> <span class=\"token number\">60<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token number\">60<\/span> <span class=\"token operator\">&#8211;<\/span> CatConfig<span class=\"token punctuation\">[<\/span>cat<span class=\"token punctuation\">.<\/span>level<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>size<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token number\">2<\/span><br \/>\n            <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token comment\">\/\/ \u2190 \u9690\u5f0f\u52a8\u753b&#xff1a;100ms Linear \u8865\u95f4\u4f4d\u7f6e\u53d8\u5316<\/span><br \/>\n            <span class=\"token punctuation\">.<\/span><span class=\"token function\">animation<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> duration<span class=\"token operator\">:<\/span> <span class=\"token number\">100<\/span><span class=\"token punctuation\">,<\/span> curve<span class=\"token operator\">:<\/span> Curve<span class=\"token punctuation\">.<\/span>Linear <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span>cat<span class=\"token operator\">:<\/span> Cat<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> cat<span class=\"token punctuation\">.<\/span>id<span class=\"token punctuation\">)<\/span><\/p>\n<p>          <span class=\"token comment\">\/\/ \u5217\u70b9\u51fb\u5c42<\/span><br \/>\n          <span class=\"token function\">Row<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token function\">ForEach<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>cols<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span>col<span class=\"token operator\">:<\/span> <span class=\"token builtin\">number<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n              <span class=\"token function\">Column<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token punctuation\">.<\/span><span class=\"token function\">width<\/span><span class=\"token punctuation\">(<\/span>GameConfig<span class=\"token punctuation\">.<\/span><span class=\"token constant\">CELL_SIZE<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token punctuation\">.<\/span><span class=\"token function\">height<\/span><span class=\"token punctuation\">(<\/span>GameConfig<span class=\"token punctuation\">.<\/span><span class=\"token constant\">BOARD_HEIGHT<\/span> <span class=\"token operator\">*<\/span> GameConfig<span class=\"token punctuation\">.<\/span><span class=\"token constant\">CELL_SIZE<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token punctuation\">.<\/span><span class=\"token function\">backgroundColor<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;rgba(0,0,0,0)&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token punctuation\">.<\/span><span class=\"token function\">onClick<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">handleColumnClick<\/span><span class=\"token punctuation\">(<\/span>col<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span>col<span class=\"token operator\">:<\/span> <span class=\"token builtin\">number<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token template-string\"><span class=\"token template-punctuation string\">&#096;<\/span><span class=\"token string\">click_<\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>col<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">&#096;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token punctuation\">.<\/span><span class=\"token function\">width<\/span><span class=\"token punctuation\">(<\/span>GameConfig<span class=\"token punctuation\">.<\/span><span class=\"token constant\">BOARD_WIDTH<\/span> <span class=\"token operator\">*<\/span> GameConfig<span class=\"token punctuation\">.<\/span><span class=\"token constant\">CELL_SIZE<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token punctuation\">.<\/span><span class=\"token function\">height<\/span><span class=\"token punctuation\">(<\/span>GameConfig<span class=\"token punctuation\">.<\/span><span class=\"token constant\">BOARD_HEIGHT<\/span> <span class=\"token operator\">*<\/span> GameConfig<span class=\"token punctuation\">.<\/span><span class=\"token constant\">CELL_SIZE<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token punctuation\">.<\/span><span class=\"token function\">borderRadius<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">12<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">clip<\/span><span class=\"token punctuation\">(<\/span><span class=\"token boolean\">true<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">backgroundColor<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;#D6EEF5&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">alignItems<\/span><span class=\"token punctuation\">(<\/span>HorizontalAlign<span class=\"token punctuation\">.<\/span>Center<span class=\"token punctuation\">)<\/span><\/p>\n<p>      <span class=\"token function\">Spacer<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n      <span class=\"token function\">Row<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token comment\">\/* \u5e95\u90e8\u63a7\u5236\u680f *\/<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token punctuation\">.<\/span><span class=\"token function\">width<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;100%&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">padding<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> left<span class=\"token operator\">:<\/span> <span class=\"token number\">24<\/span><span class=\"token punctuation\">,<\/span> right<span class=\"token operator\">:<\/span> <span class=\"token number\">24<\/span><span class=\"token punctuation\">,<\/span> bottom<span class=\"token operator\">:<\/span> <span class=\"token number\">24<\/span><span class=\"token punctuation\">,<\/span> top<span class=\"token operator\">:<\/span> <span class=\"token number\">12<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">.<\/span><span class=\"token function\">width<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;100%&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">height<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;100%&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token punctuation\">.<\/span><span class=\"token function\">linearGradient<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><br \/>\n      direction<span class=\"token operator\">:<\/span> GradientDirection<span class=\"token punctuation\">.<\/span>Bottom<span class=\"token punctuation\">,<\/span><br \/>\n      colors<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;#E8F4F8&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0.0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;#D6EEF5&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0.5<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;#C9E8F2&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1.0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">]<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token punctuation\">.<\/span><span class=\"token function\">alignItems<\/span><span class=\"token punctuation\">(<\/span>HorizontalAlign<span class=\"token punctuation\">.<\/span>Center<span class=\"token punctuation\">)<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><\/p>\n<p>  <span class=\"token comment\">\/* GameHUD \/ MainMenuView \/ PauseOverlay \/ GameOverOverlay \/ StatItem \u7b65\u7565 *\/<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<h3>\u4e03\u3001\u8e29\u5751\u63d0\u793a<\/h3>\n<h4>7.1 animation \u7ed1\u5728\u4e0d\u53ef\u8865\u95f4\u5c5e\u6027<\/h4>\n<p><span class=\"token comment\">\/\/ \u274c \u9519\u8bef&#xff1a;\u7ed1 animation \u4f46\u6539\u7684\u662f\u6587\u672c\u5185\u5bb9&#xff08;\u4e0d\u53ef\u8865\u95f4&#xff09;<\/span><br \/>\n<span class=\"token function\">Text<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>score<span class=\"token punctuation\">.<\/span><span class=\"token function\">toString<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n  <span class=\"token punctuation\">.<\/span><span class=\"token function\">animation<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> duration<span class=\"token operator\">:<\/span> <span class=\"token number\">300<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token comment\">\/\/ \u6539 score \u6587\u672c\u77ac\u5207&#xff0c;animation \u65e0\u6548<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u2705 \u6b63\u786e&#xff1a;\u6587\u672c\u53d8\u5316\u7528 opacity \u6de1\u5165\u6de1\u51fa&#xff0c;\u6216 animateTo \u663e\u5f0f<\/span><br \/>\n<span class=\"token function\">Text<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>score<span class=\"token punctuation\">.<\/span><span class=\"token function\">toString<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n  <span class=\"token punctuation\">.<\/span><span class=\"token function\">opacity<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>scoreOpacity<span class=\"token punctuation\">)<\/span><br \/>\n  <span class=\"token punctuation\">.<\/span><span class=\"token function\">animation<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> duration<span class=\"token operator\">:<\/span> <span class=\"token number\">300<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span>   <span class=\"token comment\">\/\/ \u6539 opacity \u53ef\u8865\u95f4<\/span><\/p>\n<h4>7.2 \u5fd8\u7ed1 animation \u6539\u5c5e\u6027\u77ac\u5207<\/h4>\n<p><span class=\"token comment\">\/\/ \u274c \u9519\u8bef&#xff1a;\u6ca1\u7ed1 animation&#xff0c;\u6539 position \u77ac\u5207<\/span><br \/>\n<span class=\"token function\">Column<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n  <span class=\"token punctuation\">.<\/span><span class=\"token function\">position<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> x<span class=\"token operator\">:<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>catX<span class=\"token punctuation\">,<\/span> y<span class=\"token operator\">:<\/span> <span class=\"token number\">100<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u5fe0\u4e86 .animation({&#8230;})<\/span><br \/>\n<span class=\"token comment\">\/\/ \u6539 catX&#xff0c;\u4f4d\u7f6e\u77ac\u95f4\u8df3\u5230\u65b0\u503c&#xff0c;\u65e0\u8865\u95f4<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u2705 \u6b63\u786e&#xff1a;\u7ed1 animation<\/span><br \/>\n<span class=\"token function\">Column<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n  <span class=\"token punctuation\">.<\/span><span class=\"token function\">position<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> x<span class=\"token operator\">:<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>catX<span class=\"token punctuation\">,<\/span> y<span class=\"token operator\">:<\/span> <span class=\"token number\">100<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n  <span class=\"token punctuation\">.<\/span><span class=\"token function\">animation<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> duration<span class=\"token operator\">:<\/span> <span class=\"token number\">100<\/span><span class=\"token punctuation\">,<\/span> curve<span class=\"token operator\">:<\/span> Curve<span class=\"token punctuation\">.<\/span>Linear <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span>   <span class=\"token comment\">\/\/ \u7ed1<\/span><br \/>\n<span class=\"token comment\">\/\/ \u6539 catX&#xff0c;100ms \u5e73\u6ed1\u8fc7\u6e21<\/span><\/p>\n<h4>7.3 duration \u592a\u957f\u5bfc\u81f4\u62d6\u5f71<\/h4>\n<p><span class=\"token comment\">\/\/ \u26a0\ufe0f \u732b\u54aa\u4e0b\u843d\u7528 1000ms \u4f1a\u62d6\u5f71&#xff1a;\u4e3b\u5faa\u73af\u6bcf 100ms \u6539 y&#xff0c;\u8865\u95f4\u8fd8\u6ca1\u5b8c\u53c8\u6539\u65b0 y<\/span><br \/>\n<span class=\"token punctuation\">.<\/span><span class=\"token function\">animation<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> duration<span class=\"token operator\">:<\/span> <span class=\"token number\">1000<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span>     <span class=\"token comment\">\/\/ \u592a\u957f&#xff0c;\u8865\u95f4\u8ddf\u4e0d\u4e0a\u4e3b\u5faa\u73af\u6539\u901f<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u2705 \u6b63\u786e&#xff1a;\u8865\u95f4\u65f6\u957f \u2264 \u4e3b\u5faa\u5faa\u5468\u671f<\/span><br \/>\n<span class=\"token punctuation\">.<\/span><span class=\"token function\">animation<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> duration<span class=\"token operator\">:<\/span> <span class=\"token number\">100<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span>      <span class=\"token comment\">\/\/ 100ms \u8865\u95f4 &#061; 100ms \u4e3b\u5faa\u73af\u5468\u671f&#xff0c;\u521a\u597d<\/span><\/p>\n<p>\u5173\u952e\u7ecf\u9a8c&#xff1a;\u5faa\u73af\u6539\u5c5e\u6027\u7684 animation duration \u2264 \u5faa\u73af\u5468\u671f\u2014\u2014\u5426\u5219\u8865\u95f4\u8ddf\u4e0d\u4e0a\u6539\u901f&#xff0c;\u62d6\u5f71\u6216\u5361\u987f\u3002<\/p>\n<h4>7.4 ForEach \u5bc6\u94a5\u7528\u4f1a\u53d8\u5b57\u6bb5<\/h4>\n<p><span class=\"token comment\">\/\/ \u274c \u9519\u8bef&#xff1a;\u5bc6\u94a5\u7528 y&#xff0c;\u4e0b\u843d\u65f6\u5bc6\u94a5\u53d8&#xff0c;ForEach \u9500\u6bc1\u65b0\u5efa&#xff0c;animation \u5931\u6548<\/span><br \/>\n<span class=\"token function\">ForEach<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>cats<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span>cat<span class=\"token operator\">:<\/span> Cat<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token comment\">\/* &#8230; *\/<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span>cat<span class=\"token operator\">:<\/span> Cat<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token template-string\"><span class=\"token template-punctuation string\">&#096;<\/span><span class=\"token string\">y_<\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>cat<span class=\"token punctuation\">.<\/span>y<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">&#096;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u2705 \u6b63\u786e&#xff1a;\u5bc6\u94a5\u7528\u4e0d\u53d8\u7684 id&#xff0c;\u590d\u7528 CatItem&#xff0c;animation \u8fde\u7eed\u8865\u95f4<\/span><br \/>\n<span class=\"token function\">ForEach<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>cats<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span>cat<span class=\"token operator\">:<\/span> Cat<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token comment\">\/* &#8230; *\/<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span>cat<span class=\"token operator\">:<\/span> Cat<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> cat<span class=\"token punctuation\">.<\/span>id<span class=\"token punctuation\">)<\/span><\/p>\n<p>\u7b2c 15\u300144 \u7bc7\u8bb2\u8fc7\u8fd9\u4e2a\u5751\u2014\u2014\u5bc6\u94a5\u53d8\u4f1a\u9500\u6bc1\u65b0\u5efa&#xff0c;animation \u91cd\u7f6e&#xff0c;\u8865\u95f4\u65ad\u88c2\u3002<\/p>\n<h3>\u516b\u3001\u8c03\u8bd5\u6280\u5de7<\/h3>\n<li>console.info \u6253 cat.y&#xff1a;\u4e3b\u5faa\u73af\u91cc log&#xff0c;\u8ffd\u6bcf 100ms \u6539\u503c&#xff1b;animation \u8865\u95f4\u5e94\u8ddf\u968f\u3002<\/li>\n<li>\u77ac\u5207\u4e0d\u8865\u95f4\u6392\u67e5&#xff1a;\u68c0\u67e5\u662f\u5426\u7ed1\u4e86 .animation&#xff1b;\u68c0\u67e5\u5c5e\u6027\u662f\u5426\u53ef\u8865\u95f4&#xff08;\u6570\u503c\u578b&#xff09;&#xff1b;\u68c0\u67e5 ForEach \u5bc6\u94a5\u662f\u5426\u53d8\u3002<\/li>\n<li>\u62d6\u5f71\u6392\u67e5&#xff1a;\u68c0\u67e5 duration \u662f\u5426 &gt; \u5faa\u73af\u5468\u671f&#xff1b;\u68c0\u67e5 curve \u662f\u5426\u8fc7\u6162\u3002<\/li>\n<li>DevEco Animation Inspector&#xff1a;\u67e5\u770b\u8865\u95f4\u8fc7\u7a0b\u548c\u53c2\u6570\u3002<\/li>\n<h3>\u4e5d\u3001\u6027\u80fd\u4e0e\u6700\u4f73\u5b9e\u8df5<\/h3>\n<li>\u300c\u5faa\u73af\u6539\u5c5e\u6027\u300d\u7528\u9690\u5f0f animation&#xff0c;\u300c\u70b9\u51fb\u89e6\u53d1\u4e00\u6b21\u300d\u7528\u663e\u5f0f animateTo\u2014\u2014\u732b\u54aa\u4e0b\u843d\u9690\u5f0f&#xff0c;\u5f97\u5206\u5f39\u8df3\u663e\u5f0f\u3002<\/li>\n<li>animation duration \u2264 \u5faa\u73af\u5468\u671f\u2014\u2014\u5426\u5219\u8865\u95f4\u8ddf\u4e0d\u4e0a\u6539\u901f&#xff0c;\u62d6\u5f71\u3002<\/li>\n<li>\u6570\u503c\u578b\u5c5e\u6027\u53ef\u8865\u95f4&#xff0c;\u6587\u672c\/\u6761\u4ef6\u6e32\u67d3\u4e0d\u8865\u95f4\u2014\u2014\u6587\u672c\u53d8\u5316\u7528 opacity \u6216 transition\u3002<\/li>\n<li>ForEach \u5bc6\u94a5\u7528\u4e0d\u53d8\u5b57\u6bb5\u2014\u2014\u5bc6\u94a5\u53d8\u9500\u6bc1\u65b0\u5efa&#xff0c;animation \u91cd\u7f6e\u65ad\u88c2\u3002<\/li>\n<li>curve \u9009 Linear \u505a\u5300\u901f&#xff0c;EaseInOut \u505a\u81ea\u7136\u79fb\u52a8&#xff0c;EaseOut \u505a\u51fa\u73b0\u2014\u2014\u6309\u573a\u666f\u9009\u3002<\/li>\n<li>\u9690\u5f0f\u548c\u663e\u5f0f\u53ef\u6df7\u7528\u2014\u2014\u4e0d\u540c\u5c5e\u6027\u5206\u522b\u7ba1&#xff0c;\u5404\u8865\u5404\u7684\u3002<\/li>\n<h3>\u5341\u3001\u9636\u6bb5\u4e09\u8fdb\u5ea6&#xff08;51\u201356&#xff09;<\/h3>\n<p>\u672c\u7bc7\u662f\u9636\u6bb5\u4e09\u300c\u4ea4\u4e92\u4e0e\u52a8\u753b\u300d\u7b2c 6 \u7bc7&#xff1a;<\/p>\n<table>\n<tr>\u7bc7\u4e3b\u9898\u6838\u5fc3\u8981\u70b9<\/tr>\n<tbody>\n<tr>\n<td>51<\/td>\n<td>onTouch<\/td>\n<td>\u624b\u52bf\u4e09\u9636\u6bb5<\/td>\n<\/tr>\n<tr>\n<td>52<\/td>\n<td>onHover<\/td>\n<td>\u60ac\u505c\u53cd\u9988<\/td>\n<\/tr>\n<tr>\n<td>53<\/td>\n<td>onKeyEvent<\/td>\n<td>\u952e\u76d8\/\u9065\u63a7\u6309\u952e<\/td>\n<\/tr>\n<tr>\n<td>54<\/td>\n<td>bindContextMenu<\/td>\n<td>\u4e0a\u4e0b\u6587\u83dc\u5355<\/td>\n<\/tr>\n<tr>\n<td>55<\/td>\n<td>animateTo<\/td>\n<td>\u663e\u5f0f\u52a8\u753b\u89e6\u53d1<\/td>\n<\/tr>\n<tr>\n<td>56&#xff08;\u672c\u7bc7&#xff09;<\/td>\n<td>animation<\/td>\n<td>\u9690\u5f0f\u8865\u95f4&#xff0c;\u6539\u5c5e\u6027\u81ea\u52a8\u52a8<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u63a5\u4e0b\u6765\u7b2c 57\u201360 \u7bc7\u4f1a\u8986\u76d6&#xff1a;Hero \u5171\u4eab\u5143\u7d20\u3001transition \u8f6c\u573a\u3001Spring \u5f39\u6027\u7269\u7406\u3001Hero Style Player\u3002<\/p>\n<h3>\u603b\u7ed3<\/h3>\n<p>\u672c\u7bc7\u6211\u4eec\u4ece animation \u9690\u5f0f\u52a8\u753b\u5207\u5165&#xff0c;\u638c\u63e1\u4e86\u88c5\u9970\u7ed1\u5b9a\u4e0e\u81ea\u52a8\u8865\u95f4\u673a\u5236\u3001\u53ef\u8865\u95f4\u5c5e\u6027&#xff08;\u6570\u503c\u578b&#xff09;vs \u4e0d\u53ef\u8865\u95f4&#xff08;\u6587\u672c\/\u6761\u4ef6&#xff09;\u3001\u4e0e animateTo \u7684\u53d6\u820d&#xff08;\u5faa\u73af\u6539\u9690\u5f0f&#xff0c;\u70b9\u51fb\u89e6\u53d1\u663e\u5f0f&#xff09;\u3001curve \u66f2\u7ebf\u9009\u56db\u5927\u8981\u70b9&#xff0c;\u5e76\u7ed9\u51fa\u4e86\u732b\u54aa\u4e0b\u843d animation \u9690\u5f0f\u8865\u95f4\u7684\u5b8c\u6574\u4ee3\u7801\u3002\u6838\u5fc3\u8981\u70b9&#xff1a;animation \u7ed1\u4e00\u6b21\u6539\u5c5e\u6027\u81ea\u52a8\u8865\u95f4&#xff1b;duration \u2264 \u5faa\u73af\u5468\u671f\u907f\u62d6\u5f71&#xff1b;\u6570\u503c\u53ef\u8865\u95f4\u6587\u672c\u4e0d\u53ef&#xff1b;\u5bc6\u94a5\u7528\u4e0d\u53d8\u5b57\u6bb5\u4fdd\u8865\u95f4\u8fde\u7eed\u3002<\/p>\n<p>\u4e0b\u4e00\u7bc7\u6211\u4eec\u5c06\u62c6\u89e3 Hero\u2014\u2014\u5171\u4eab\u5143\u7d20\u8df3\u8f6c\u8fde\u7eed\u52a8\u753b\u3002<\/p>\n<p>\u5982\u679c\u8fd9\u7bc7\u6587\u7ae0\u5bf9\u4f60\u6709\u5e2e\u52a9&#xff0c;\u6b22\u8fce\u70b9\u8d5e&#x1f44d;\u3001\u6536\u85cf\u2b50\u3001\u5173\u6ce8&#x1f514;&#xff0c;\u4f60\u7684\u652f\u6301\u662f\u6211\u6301\u7eed\u521b\u4f5c\u7684\u52a8\u529b&#xff01;<\/p>\n<hr \/>\n<p>\u76f8\u5173\u8d44\u6e90&#xff1a;<\/p>\n<ul>\n<li>\u300c\u732b\u732b\u5927\u4f5c\u6218\u300d\u9879\u76ee\u6e90\u7801&#xff1a;\u672c\u4ed3\u5e93 entry\/src\/main\/ets\/pages\/Index.ets<\/li>\n<li>ArkUI animation \u9690\u5f0f\u52a8\u753b\u5b98\u65b9\u6307\u5357<\/li>\n<li>Curve \u7f13\u52a8\u66f2\u7ebf\u5b98\u65b9\u6587\u6863<\/li>\n<li>HarmonyOS \u52a8\u753b\u6027\u80fd\u6700\u4f73\u5b9e\u8df5<\/li>\n<li>\u5f00\u6e90\u9e3f\u8499\u8de8\u5e73\u53f0\u793e\u533a<\/li>\n<li>HarmonyOS \u5f00\u53d1\u8005\u5b98\u65b9\u6587\u6863\u9996\u9875<\/li>\n<li>\u7cfb\u5217\u7d22\u5f15&#xff1a;\u672c\u4ed3\u5e93 articles\/INDEX.md<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\u524d\u8a00<br \/>\n\u4e0a\u4e00\u7bc7\u6211\u4eec\u7528 animateTo \u505a\u4e86\u300c\u4e3b\u52a8\u89e6\u53d1\u7279\u6548\u300d\u2014\u2014\u5f97\u5206\u5f39\u8df3\u3001\u5408\u5e76\u653e\u5927\u3002\u4f46\u300c\u732b\u732b\u5927\u4f5c\u6218\u300d\u732b\u54aa\u4e0b\u843d\u7528\u7684\u662f\u53e6\u4e00\u79cd\u52a8\u753b\u2014\u2014.animation({ duration: 100 })&#xff08;\u7b2c 16\u300133 \u7bc7\u7528\u8fc7&#xff09;&#xff0c;\u6539 position \u81ea\u52a8\u8865\u95f4\u3002\u8fd9\u662f\u9690\u5f0f\u52a8\u753b&#xff1a;\u7ed9\u7ec4\u4ef6\u7ed1\u4e2a\u52a8\u753b\u53c2\u6570&#xff0c;\u4e4b\u540e\u4efb\u4f55\u5c5e\u6027\u53d8\u5316\u90fd\u81ea\u52a8\u8865\u95f4\u3002\u672c\u7bc7\u4e13\u8bb2 animation \u88c5\u9970\u5668\u7684\u673a\u5236\u548c\u5b9e\u6218\u3002<br \/>\n\u672c\u7bc7\u4ee5\u300c\u732b\u732b\u5927\u4f5c\u6218\u300d\u732b\u54aa\u4e0b\u843d position<\/p>\n","protected":false},"author":2,"featured_media":86674,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[280,1737],"topic":[],"class_list":["post-86676","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-server","tag-harmonyos","tag-1737"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>HarmonyOS\u5e94\u7528\u5f00\u53d1\u5b9e\u6218\uff1a\u732b\u732b\u5927\u4f5c\u6218-animation \u88c5\u9970\u7ed1\u5b9a\u3001\u9690\u5f0f\u8865\u95f4\u673a\u5236\u3001\u4e0e animateTo \u7684\u53d6\u820d\u3001curve \u66f2\u7ebf\u9009 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.wsisp.com\/helps\/86676.html\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"HarmonyOS\u5e94\u7528\u5f00\u53d1\u5b9e\u6218\uff1a\u732b\u732b\u5927\u4f5c\u6218-animation \u88c5\u9970\u7ed1\u5b9a\u3001\u9690\u5f0f\u8865\u95f4\u673a\u5236\u3001\u4e0e animateTo \u7684\u53d6\u820d\u3001curve \u66f2\u7ebf\u9009 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"og:description\" content=\"\u524d\u8a00 \u4e0a\u4e00\u7bc7\u6211\u4eec\u7528 animateTo \u505a\u4e86\u300c\u4e3b\u52a8\u89e6\u53d1\u7279\u6548\u300d\u2014\u2014\u5f97\u5206\u5f39\u8df3\u3001\u5408\u5e76\u653e\u5927\u3002\u4f46\u300c\u732b\u732b\u5927\u4f5c\u6218\u300d\u732b\u54aa\u4e0b\u843d\u7528\u7684\u662f\u53e6\u4e00\u79cd\u52a8\u753b\u2014\u2014.animation({ duration: 100 })&#xff08;\u7b2c 16\u300133 \u7bc7\u7528\u8fc7&#xff09;&#xff0c;\u6539 position \u81ea\u52a8\u8865\u95f4\u3002\u8fd9\u662f\u9690\u5f0f\u52a8\u753b&#xff1a;\u7ed9\u7ec4\u4ef6\u7ed1\u4e2a\u52a8\u753b\u53c2\u6570&#xff0c;\u4e4b\u540e\u4efb\u4f55\u5c5e\u6027\u53d8\u5316\u90fd\u81ea\u52a8\u8865\u95f4\u3002\u672c\u7bc7\u4e13\u8bb2 animation \u88c5\u9970\u5668\u7684\u673a\u5236\u548c\u5b9e\u6218\u3002 \u672c\u7bc7\u4ee5\u300c\u732b\u732b\u5927\u4f5c\u6218\u300d\u732b\u54aa\u4e0b\u843d position\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wsisp.com\/helps\/86676.html\" \/>\n<meta property=\"og:site_name\" content=\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-28T17:16:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/07\/20260728171643-6a68e3fba2a1f.png\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/86676.html\",\"url\":\"https:\/\/www.wsisp.com\/helps\/86676.html\",\"name\":\"HarmonyOS\u5e94\u7528\u5f00\u53d1\u5b9e\u6218\uff1a\u732b\u732b\u5927\u4f5c\u6218-animation \u88c5\u9970\u7ed1\u5b9a\u3001\u9690\u5f0f\u8865\u95f4\u673a\u5236\u3001\u4e0e animateTo \u7684\u53d6\u820d\u3001curve \u66f2\u7ebf\u9009 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"isPartOf\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\"},\"datePublished\":\"2026-07-28T17:16:47+00:00\",\"dateModified\":\"2026-07-28T17:16:47+00:00\",\"author\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/86676.html#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.wsisp.com\/helps\/86676.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/86676.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.wsisp.com\/helps\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"HarmonyOS\u5e94\u7528\u5f00\u53d1\u5b9e\u6218\uff1a\u732b\u732b\u5927\u4f5c\u6218-animation \u88c5\u9970\u7ed1\u5b9a\u3001\u9690\u5f0f\u8865\u95f4\u673a\u5236\u3001\u4e0e animateTo \u7684\u53d6\u820d\u3001curve \u66f2\u7ebf\u9009\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\",\"url\":\"https:\/\/www.wsisp.com\/helps\/\",\"name\":\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"description\":\"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"contentUrl\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"caption\":\"admin\"},\"sameAs\":[\"http:\/\/wp.wsisp.com\"],\"url\":\"https:\/\/www.wsisp.com\/helps\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"HarmonyOS\u5e94\u7528\u5f00\u53d1\u5b9e\u6218\uff1a\u732b\u732b\u5927\u4f5c\u6218-animation \u88c5\u9970\u7ed1\u5b9a\u3001\u9690\u5f0f\u8865\u95f4\u673a\u5236\u3001\u4e0e animateTo \u7684\u53d6\u820d\u3001curve \u66f2\u7ebf\u9009 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.wsisp.com\/helps\/86676.html","og_locale":"zh_CN","og_type":"article","og_title":"HarmonyOS\u5e94\u7528\u5f00\u53d1\u5b9e\u6218\uff1a\u732b\u732b\u5927\u4f5c\u6218-animation \u88c5\u9970\u7ed1\u5b9a\u3001\u9690\u5f0f\u8865\u95f4\u673a\u5236\u3001\u4e0e animateTo \u7684\u53d6\u820d\u3001curve \u66f2\u7ebf\u9009 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","og_description":"\u524d\u8a00 \u4e0a\u4e00\u7bc7\u6211\u4eec\u7528 animateTo \u505a\u4e86\u300c\u4e3b\u52a8\u89e6\u53d1\u7279\u6548\u300d\u2014\u2014\u5f97\u5206\u5f39\u8df3\u3001\u5408\u5e76\u653e\u5927\u3002\u4f46\u300c\u732b\u732b\u5927\u4f5c\u6218\u300d\u732b\u54aa\u4e0b\u843d\u7528\u7684\u662f\u53e6\u4e00\u79cd\u52a8\u753b\u2014\u2014.animation({ duration: 100 })&#xff08;\u7b2c 16\u300133 \u7bc7\u7528\u8fc7&#xff09;&#xff0c;\u6539 position \u81ea\u52a8\u8865\u95f4\u3002\u8fd9\u662f\u9690\u5f0f\u52a8\u753b&#xff1a;\u7ed9\u7ec4\u4ef6\u7ed1\u4e2a\u52a8\u753b\u53c2\u6570&#xff0c;\u4e4b\u540e\u4efb\u4f55\u5c5e\u6027\u53d8\u5316\u90fd\u81ea\u52a8\u8865\u95f4\u3002\u672c\u7bc7\u4e13\u8bb2 animation \u88c5\u9970\u5668\u7684\u673a\u5236\u548c\u5b9e\u6218\u3002 \u672c\u7bc7\u4ee5\u300c\u732b\u732b\u5927\u4f5c\u6218\u300d\u732b\u54aa\u4e0b\u843d position","og_url":"https:\/\/www.wsisp.com\/helps\/86676.html","og_site_name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","article_published_time":"2026-07-28T17:16:47+00:00","og_image":[{"url":"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/07\/20260728171643-6a68e3fba2a1f.png"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"admin","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"6 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.wsisp.com\/helps\/86676.html","url":"https:\/\/www.wsisp.com\/helps\/86676.html","name":"HarmonyOS\u5e94\u7528\u5f00\u53d1\u5b9e\u6218\uff1a\u732b\u732b\u5927\u4f5c\u6218-animation \u88c5\u9970\u7ed1\u5b9a\u3001\u9690\u5f0f\u8865\u95f4\u673a\u5236\u3001\u4e0e animateTo \u7684\u53d6\u820d\u3001curve \u66f2\u7ebf\u9009 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","isPartOf":{"@id":"https:\/\/www.wsisp.com\/helps\/#website"},"datePublished":"2026-07-28T17:16:47+00:00","dateModified":"2026-07-28T17:16:47+00:00","author":{"@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41"},"breadcrumb":{"@id":"https:\/\/www.wsisp.com\/helps\/86676.html#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wsisp.com\/helps\/86676.html"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.wsisp.com\/helps\/86676.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.wsisp.com\/helps"},{"@type":"ListItem","position":2,"name":"HarmonyOS\u5e94\u7528\u5f00\u53d1\u5b9e\u6218\uff1a\u732b\u732b\u5927\u4f5c\u6218-animation \u88c5\u9970\u7ed1\u5b9a\u3001\u9690\u5f0f\u8865\u95f4\u673a\u5236\u3001\u4e0e animateTo \u7684\u53d6\u820d\u3001curve \u66f2\u7ebf\u9009"}]},{"@type":"WebSite","@id":"https:\/\/www.wsisp.com\/helps\/#website","url":"https:\/\/www.wsisp.com\/helps\/","name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","description":"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41","name":"admin","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/","url":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","contentUrl":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","caption":"admin"},"sameAs":["http:\/\/wp.wsisp.com"],"url":"https:\/\/www.wsisp.com\/helps\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/86676","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/comments?post=86676"}],"version-history":[{"count":0,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/86676\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media\/86674"}],"wp:attachment":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media?parent=86676"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/categories?post=86676"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/tags?post=86676"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/topic?post=86676"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}