You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin.Forms卡牌游戏实现翻转动画遇Resource.designer.cs编译报错问题

Xamarin.Forms卡牌翻转动画实现与Resource.designer.cs编译错误修复

问题说明

开发Xamarin.Forms卡牌游戏时,需要实现单卡牌在三个视图间的翻转交互:

  • 初始展示选择页视图,提供Truth(Verdad)和Dare两个点击选项
  • 点击*Truth(Verdad)*时卡牌翻转展示真心话内容视图
  • 点击Dare时卡牌翻转展示大冒险内容视图
    使用自定义渲染器实现翻转动画时,出现存储动画资源的Resource.designer.cs文件无法编译的问题。

修复Resource.designer.cs编译失败

按照以下优先级排查问题:

  • 检查动画资源命名规则:安卓资源文件必须全部使用小写字母、数字、下划线命名,不得包含大写字母、特殊字符、空格,不符合规则的文件重命名后重新生成即可
  • 清理项目无效缓存:右键解决方案执行「清理」,删除项目根目录下的bin、obj文件夹,再删除安卓项目Resources目录下的Resource.designer.cs文件,之后右键安卓项目选择「重新生成」
  • 排查资源冲突:如果不同资源文件夹下存在同名文件,也会导致资源生成失败,重命名重复文件即可
  • 升级依赖版本:旧版本Xamarin.Android对部分动画资源格式支持存在缺陷,将所有Xamarin相关Nuget包升级到最新稳定版即可解决适配问题

无需自定义渲染器的翻转动画实现方案

直接使用Xamarin.Forms原生动画API即可实现3D翻转效果,无需编写平台端自定义渲染器,减少适配问题:

// 卡牌翻转动画核心实现
private async Task SwitchCardView(View currentView, View targetView)
{
    // 翻转当前视图至90度隐藏
    await currentView.RotateYTo(90, 250, Easing.CubicIn);
    currentView.IsVisible = false;
    // 展示目标视图并完成翻转
    targetView.IsVisible = true;
    targetView.RotationY = -90;
    await targetView.RotateYTo(0, 250, Easing.CubicOut);
}

// 点击Truth调用示例
private void OnTruthClicked(object sender, EventArgs e)
{
    _ = SwitchCardView(SelectionCardView, TruthCardView);
}

// 点击Dare调用示例
private void OnDareClicked(object sender, EventArgs e)
{
    _ = SwitchCardView(SelectionCardView, DareCardView);
}

三个视图放在同一容器下,默认仅展示选择页视图即可,后续需要返回选择页时反向调用SwitchCardView方法即可。


内容的提问来源于stack exchange,提问作者edu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 04:39:03