首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ios14 Xcode12-精灵在触摸SwiftUI对象时不显示,但在触摸SKScene时工作

iOS 14和Xcode 12是苹果公司推出的最新版本的操作系统和开发工具。在使用SwiftUI进行开发时,有时可能会遇到精灵(Sprite)在触摸SwiftUI对象时无法显示的问题,但在触摸SKScene时正常工作。

这个问题可能是由于不同的视图层级导致的。SwiftUI是一种用于构建用户界面的现代化框架,而SKScene是SpriteKit框架中用于创建游戏场景的类。由于两者使用不同的渲染引擎,可能会导致在触摸时出现显示问题。

为了解决这个问题,可以尝试以下几种方法:

  1. 确保正确设置视图层级:确保精灵(Sprite)视图位于SwiftUI视图的上方。可以使用ZStack或overlay等布局修饰符将精灵视图放置在SwiftUI视图之上。
  2. 使用UIViewRepresentable:如果无法通过布局修饰符解决问题,可以考虑使用UIViewRepresentable协议将SpriteKit视图包装为SwiftUI视图的一部分。这样可以确保两者在同一视图层级中,并且能够正确响应触摸事件。
  3. 检查触摸事件传递:确保触摸事件正确传递给SpriteKit视图。可以在SwiftUI视图中实现touchesBegan、touchesMoved等触摸事件方法,并将事件传递给SpriteKit视图进行处理。
  4. 更新到最新版本的Xcode和iOS:有时,这种问题可能是由于Xcode或iOS的bug引起的。确保使用最新版本的Xcode和iOS,以获得最佳的稳定性和兼容性。

总结起来,解决精灵在触摸SwiftUI对象时不显示的问题需要确保正确设置视图层级、使用UIViewRepresentable进行包装、检查触摸事件传递,并保持开发环境更新到最新版本。这样可以确保精灵在触摸时能够正常显示,并且能够与SwiftUI对象正确交互。

腾讯云提供了一系列与移动开发相关的产品和服务,包括移动应用开发平台、移动推送服务、移动测试服务等。您可以访问腾讯云移动开发产品页面(https://cloud.tencent.com/product/mobile)了解更多相关信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Cocos2d-x初学者教程

虽然对createWithRect的调用更改了台式机上的游戏框架,但在iOS设备上这种方式无法正常工作; 而是游戏的分辨率与屏幕尺寸匹配。 这是iPhone 6上的外观: ?...onTouchCancelled:某些情况下被调用以停止事件处理,例如当您触摸屏幕,然后像电话之类的中断应用程序。 在这个游戏中,您实际上只在乎何时发生触摸。...物理实体代表Cocos2d-x物理仿真中的对象,您可以使用任何形状来定义它们。在这种情况下,可以使用与精灵大小相同的矩形作为怪兽的近似值。...3.在这里,您可以设置类别,碰撞和接触测试位掩码: 类别:定义对象的类型–Monster。 碰撞:定义碰撞期间应以何种类型的对象物理影响该对象-在这种情况下为None。...射弹被设置为可以击中怪物,因此当它们碰撞,您需要将它们都移除。 还记得早先的物理学世界吗? 好吧,您可以在其上设置一个联系人代表,以两个物理物体碰撞得到通知。

6.5K21

Cocos Creator | 挤水果小游戏实现 ( 一 )

标尺显示的控制; 2. 水滴从水果上掉落; 3. 水杯的接水滴实现。 ? ? ? 标尺的控制 ? ?...■ 原游戏玩法中,类似,按下屏幕显示标尺,松开标尺显示,水滴从标尺不同位置滴落到杯子中,得分是不同的。如下图,蓝色、黄色、白色,水滴从三处不同区域成功掉落到杯子中,得分依次减少。 ?...■ 控制显示,只需要监听屏幕的触摸事件TOUCH_START、TOUCH_END、TOUCH_CANCEL,开始触摸显示,取消触摸隐藏,结束触摸隐藏,并触发水滴掉落事件,以函数的形式驱动。 ?...■ 随水果转动的水滴,就用普通精灵即可,控制显示的逻辑部分,也是控制这个精灵显示和隐藏。 ?...■ 触发掉落事件,实例化一个水滴的节点,添加到和水果上运动节水滴精灵的相同位置,包括位置、旋转角度、父节点。也就是实例化的带刚体的水滴,运动的初始位置就是水果上的精灵当前位置。 ?

1.4K20
  • 苹果推出突破性新技术,使开发人员更加轻松快捷地创建应用

    Swift代码自动生成,当修改此代码后,对UI的更改会立即显示可视化设计工具中。 现在,开发人员可以看到UI组装,测试和优化代码的外观和行为的自动实时预览。...预览可以直接在连接的苹果设备上运行,包括iPhone,iPad,iPod touch,Apple Watch和Apple TV,允许开发人员查看应用程序如何响应Multi-Touch,或者界面构建过程中与摄像头和车载传感器实时工作...借助动作捕捉,开发人员可以将人们的动作集成到他们的应用程序中,通过人物遮挡,AR内容将自然地显示人们面前或后面,以实现更加身临其境的AR体验。...用Mac和iPad版本的应用程序,用户也将享受每个平台的独特功能,包括使用Mac的键盘、鼠标、触摸板和独特的Touch Bar功能的精度和速度。...除了针对SwiftUI的语言增强功能外,Swift 5.1还增加了模块稳定性,这是Swift中构建二进制兼容框架的关键基础。

    2.1K20

    cocos2d-objc 3.0+ 游戏开发学习手册(三): CCAction 的简单使用与触摸

    图片来自网络 导语 游戏中,角色(cocos2d中的术语为精灵)都是具有丰富的动作效果,合理的使用这些动作比如闪烁,跳跃,翻转,都会带来体验上的差异.cocos2d为我们提供了多种CCAction类,...) cocos2d中如果要响应触摸,需要在显示的场景类(MainScene)中开启用户交互: // 设置开启触摸 self.userInteractionEnabled = YES; 然后实现触摸响应的方法即可...运行上面触摸的例子后,如果你多次连续点击屏幕,会发现精灵图片(本例中的qq图片)移动的最后结果与我们实际希望的并不相同,甚至会移出屏幕,不必担心,这是由于CCActionMoveTo类自身的原因: 它本身可以被同时多次调用...每次触摸事件开始(touchBegan)停止上一个动画 2....,我们发现精灵会有一部分内容超出屏幕,导致显示不完整.例如下图: 精灵超出屏幕 另外,我们希望移动的时间可以根据距离变化而不同,最后的代码如下: - (void)touchBegan:(UITouch

    62730

    CocosCreator基础教程—聊聊scale与size属性(2)

    CocosCreator引擎编辑中,节点的scale和size属性都可以改变节点内容的大小,如下图中可爱的椰子头,原图尺寸为512*512,UI编辑发现太大了,需要·128*128的大小更适合。...size是一个对象,使用width\height控制宽\高像素尺寸。...最为常用情景就是做碰撞检测,简单的矩形碰撞并不会用到碰撞组件,而是使用cc.rectContainsPoint\cc.rectContainsRect这类函数做检测,例如: 触摸一个节点,检查触摸点是否节点区域中...检查将一个节点是否另一个节点之区域内 检查一下你的项目代码,是否有直接使用getContentSize()或width\height获取节点大小做类似上面的碰撞检测,尝试修改节点的scale属性看看是否还能正常工作...图片尺寸变化对精灵节点的影响 游戏开发中,时常会遇到图片资源更改的情况,比如:有一系列的角色图片,切图为512*512的尺寸,但在游戏中只需要128*128或其它尺寸展示。

    6.9K21

    iOS开发实战-基于SpriteKit的FlappyBird小游戏写在前面SpriteKit简介效果分析代码关于游戏上架TipsDemo地址还没结束

    写在前面 最近一直忙自己的维P恩的事情 公司项目也是一团乱 于是...随手找了个游戏项目改了改就上线了,就当充数了....它支持2D游戏中各种功能,如物理引擎,地图编辑,粒子,视频,声音精灵化,光照等。...路径的形状 SKEmitterNode 用于创建和渲染粒子系统 SKView 对象执行动画和渲染 SKScene 游戏内容组织成的场景 SKAction 节点动画 效果 这是一个类似于FlappyBird...Apple也妥协了 备注那里要求中国区上架游戏必须填写备案号 But!!!...上有政策,下有对策嘛~ 填写App分类直接选择娱乐类型上架,就不会要求填写备案号了~ 销售范围,选择中国地区,这样也不会要求填写备案号,等过审了,再将销售范围改回所有地区,基本上是实时生效~ 以上两种方式屡试不爽哈

    1.6K20

    SwiftUI案例:天气

    SwiftUI案例:天气 效果 目标 实现静态的仿iOS天气APP程序 文件与配置 外观配置 外观配置需要从 '代码' 中下载文件并提取对应的图片 需要配置 Assets.xcassets...文件中 需要配置 SpriteFiles/Assets.xcassets 文件中 动态图片导入 工作区的项目文件夹下创建名为 SpriteFiles 的 Group 并在其中依次导入...RainFall.sks RainFallLanding.sks 创建View视图 工作区的项目文件夹下创建名为 View 的 Group 并在其中依次创建 Home.swift CustomStackView.swift...CustomCorner.swift WeatherDataView.swift 视图文件 创建Model模板 工作区的项目文件夹下创建名为 Model 的 Group 并在其中创建 Forecast.swift...{ @State var offset: CGFloat = 0 //offset偏量 var topEdge: CGFloat //topEdge顶部边缘距离 //避免过早显示

    4.8K21

    大前端开发中的“树” (下)

    这意味着 CALayer 除了 “真实” 值(视图描述中设置的值)之外,必须要知道当前显示屏幕上的属性值,而每个图层属性的显示值都被存储呈现图层中。...典型场景包括同步动画和处理用户交互: 如果是实现一个基于定时器的动画,而不仅仅是基于事务的动画,这个时候需要准确知道某一刻图层显示什么位置,以便正确摆放图层; 如果想让做动画的图层响应用户输入,...类比到 Web 就是前文提到的 Virtual DOM, Android Composed 和 iOS 的 SwiftUI 中也有相似的概念。...build 流程 某一个节点需要刷新,会将自己添加到一个单例对象 Owner 的 dirty 列表中,表示自己需要更新。...build 我们树的构建一节已经提到 build 的流程,视图更新的流程基本一致,区别在于 Element (或者 RenderObject) 此时可能已经存在子节点了,因此 Widget 创建新对象之前会有一个

    1.9K30

    探索 App Clips

    例如点击Safari Banner调起App Clips,调起时会带一个URL过来,系统会根据调用URL来确定卡片显示的数据,随后将数据例如标题、背景图等显示App Clips的卡片页。...◆ ◆  ◆ 开发 App Clips从iOS14开始支持,所以可以直接用SwiftUI进行开发,这也是苹果所推荐的开发形式。...配置App Clips可以选择高级设置,高级设置中可以多套标题和封面图。苹果会根据配置的URL作区分,显示不同的封面图。...因为App Clips是从iOS14推出的,而SwiftUI是从iOS13推出的,所以我们可以选择使用SwiftUI进行开发,这也是苹果推荐的开发方案,当然也可以选择UIKit的方式。...App Clips的通知通知中心显示,和普通通知看起来是一样的,但“部分授权”有效期八小,正常弹窗授权有效期一周,我们也可以选择请求用户授权普通通知。

    1.9K20

    Cocos2d-x项目总结中的一些遇到的问题

    与诸君共享,希望可以诸君以后的开发中起到一点帮助,哪怕仅仅是一点点,也就不负初衷了。...5.CCSpriteBatchNode only support CCSprite 错误原因:将非CCSprite对象加入到了CCSpriteBatchNode对象上 6.预期出现标题移动的效果。...实际出现背景移动的效果 错误原因:标题和背景的tag反复 7.精灵不能响应触摸事件 错误原因:未注冊触摸事件代理 CCDirector->sharedDirector()->getTouchDispatcher...()->addTargetedDelegate(this, 0, true); 8.注冊触摸事件后不能正确推断触摸点的位置 错误原因:未将触摸点坐标转化为CCNode的相对坐标 convertTouchToNodeSpaceAR...(touch) 9.触摸移动,未调用ccTouchMoved方法 错误原因:ccTouchBegan方法返回值为false 10.创建动画后无动画效果 错误原因:未调用下面方法 animation

    42610

    cocos2d-x for android:士兵听我的命令移动

    上一篇文章讲述了利用cocos2d-x构建精灵的动画效果,今天打算以此为引子,创建一个移动同时指挥角色到我手指触摸的移动地点,那么就开始吧。...开始 本篇要点 角色(Sprite)缓存 动画(Animation)缓存 触摸(Touch)精灵到我指定的移动地点 动作(Action)移动和切换 涉及到的要学的学习点: 角色移动点击由此进入–...设定好让程序允许Touch之后,回调函数ccTouchesEnded 里面通过捕获触摸位置指定精灵移动,代码见下方 CCTouch* touch=(CCTouch*)(touches->anyObject...,但你会发现,你想让精灵移动的时候不是一整张图片移动,而是边移动边两只脚走路的移动,就像是我们人类一样,是走着过去的,而不是幽灵飘过去的,那么,我们要做些什么呢?...动作移动 其实,很简单 ,只要记住要精灵移动的时候即:MoveTo,同时再让精灵执行一个动作即walk的动作,代码如下: sprite->stopAllActions(); //因为Touch

    52020

    Cocos Creator | 飞刀大乱斗开发教程系列(二)!

    ■ 使用到的几个精灵,都需要根据不同等级,进行纹理的更换,于是就封装了一个通用的方法,传入精灵节点和纹理所在路径,使用 cc.loader 动态加载纹理,加载成功以后,直接显示出来。 ? ? ?...动画中,加入旋转角度,就可以简单的实现。显示的效果好不好,可以预览观察,直到调整到合适的旋转节奏就行。 ?...■ 以上所有动画,游戏中是同时进行播放的,最后看起来的效果就如同最开始的预览一样,球和武器一起旋转,同时光球不断的放大缩小。 ? ? 武器添加 ? ?...这么做的好处是,多个武器需要做动画,只需要按照规则把武器添加好,对根节点做动画即可。...这个实现,也很简单,就是监听触摸事件,触摸开始更换一个纹理,触摸结束,再还原回来就行。 ? ■ 英雄有两种状态,进攻状态和防御状态,按下是进攻,松开以后是防御状态。

    88910

    知易Cocos2D-iPhone 游戏开发教程006

    他们的共同点就是不断修改内存数据:  1)用户输入:玩家通过“触摸”iPhone屏幕,向游戏中的主角对象下达各种指令:向上、下、左、右移动,开炮等。这些指令直接导致游戏中的主角精灵发生状态改变。 ...物理引擎:按照受力分析来显示精灵对象之间的互相作用效果。                           iv.          Cocos2D-iPhone内置的各种动作,画面变更效果。 ...CCDirectorTypeNSTimer为默认工作模式,考虑到手持设备的电池问题,游戏对实时性要求不是很高的情况下,建议大家维持使用默认方式,本章示例就是采用的默认方式。        ...3) 玩家指令 就是我们第5章中讲的“触摸”事件处理机制。 ...而且每一个定时逻辑的具体处理时间点上,完全可以按照大家都是静止的来处理,也就是说不存在同时变化的任何内存对象。对于内存对象状态的修改都是线续排队执行的。

    41320

    JavaScript 编程精解 中文第三版 十五、处理事件

    触摸事件 我们使用的图形浏览器的风格,是考虑到鼠标界面的情况下而设计的,那个时候触摸屏非常罕见。 为了使网络早期的触摸屏手机上“工作”,某种程度上,这些设备的浏览器假装触摸事件是鼠标事件。...触摸屏与鼠标的工作方式不同:它没有多个按钮,当手指不在屏幕上不能跟踪手指(来模拟"mousemove"),并且允许多个手指同时屏幕上。...相反,它们的事件对象拥有touches属性,它拥有一个类数组对象,每个对象都有自己的clientX,clientY,pageX和pageY属性。 你可以这样,每个触摸手指周围显示红色圆圈。...子元素获得或失去焦点,不会激活父元素的处理器。 下面的示例中,文本域拥有焦点时会显示帮助文本。...事件和事件循环 事件循环的上下文中,如第 11 章中所述,浏览器事件处理器的行为,类似于其他异步通知。 它们是事件发生时调度的,但在它们有机会运行之前,必须等待其他正在运行的脚本完成。

    5.6K20

    cocos2d-objc 3.0+ 游戏开发学习手册(一): 简介与安装

    关于 ARC cocos2d 3.0 之前, 默认没有开启ARC支持,但在3.0版本开始,cocos2d 的内存管理已默认设置为ARC....新版本中,CCSequence被重新命名为CCActionSequence ,它们最主要的区别在于传递CCAction数组参数,不再需要在该数组中添加nil(旧版本中若无nil会崩溃)来结尾....关于Schedule update cocos2d的旧版本中,为了监听每帧的变化,需要调用scheduleUpdate方法,但3.0中去除了这个方法,仅需要实现update:即可, 关于触摸 3.0...:创建场景,检测碰撞,监听触摸等....启动屏幕: 3.5版本中,项目的启动屏幕使用了Xcode本身的Launch Screen,但在之前的版本里,cocos2d使用一个叫做IntroSence的场景类来实现启动屏幕 结束语: 有关cocos2d

    89530

    View事件分发

    显示区域的包含关系和它们ViewTree中的结构关系是对应的。...“将Root添加到Window通知WMS显示,执行performTraversals()中会调用View.dispatchAttachedToWindow(AttachInfo info, int...由于parent和child的一对多关系和显示区域包含关系,一个ViewGroup可以先后收到两个手指的按下操作,而这两个触摸点可以落在不同的child中,并且不同的child来看都是第一个手指的按下...TouchTarget 当一个触摸点的down事件被某个child处理,ViewGroup使用一个TouchTarget对象来保存child和pointer的对应关系。...up事件移除对应view处理的触摸点。 初始化操作 ACTION_DOWN意味着一次新触摸操作的的事件序列的开始,即第一个手指按下。

    1.3K60

    今日小物件推荐

    红外线式 红外触摸屏是利用XY方向上密布的红外线矩阵来检测并定位用户的触摸红外触摸显示器的前面安装一个电路板外框,电路板屏幕四边排布红外发射管和红外接收管,一一对应形成横竖交叉的红外线矩阵用户触摸屏幕...MTK电阻式四线触摸屏原理 触摸屏附着显示器的表面,与显示器相配合使用,如果能测量出触摸点在屏幕上的坐标位置,则可根据显示屏上对应坐标点的显示内容或图符获知触摸者的意图。...,并且还与介质的的绝缘系数有关因此,当较大面积的手掌或手持的导体物靠近电容屏而不是触摸就能引起电容屏的误动作,潮湿的天气,这种情况尤为严重,手扶住显示器手掌靠近显示器7厘米以内或身体靠近显示器15厘米以内就能引起电容屏的错误动作...电容屏的另一个缺点用戴手套的手或手持导电的物体触摸没有反应,这是因为增加了更为绝缘的介质 电容屏更主要的缺点是漂移:当环境温度湿度改变,环境电场发生改变,都会引起电容屏的漂移,造成不准确例如:...开机后显示器温度上升会造成漂移:用户触摸屏幕的同时另一只手或身体一侧靠近显示器会漂移;电容触摸屏附近较大的物体搬移后回漂移,你触摸如果有人围过来观看也会引起漂移;电容屏的漂移原因属于技术上的先天不足,

    96320

    手把手教你写一个经典躲避游戏

    然后就可以开始引入我们的游戏主体对象了 这里直接使用 index.ts 来编写游戏内容是为了后续方便增加 UI 界面。...解决高清屏下模糊的问题 创建画布需要考虑的一个点是 DPR 问题,即设备像素比。...♀️ 精灵 Sprite 精灵实际上就是一个对象,画布上的每一个独立元素都可以看作是精灵精灵可以包含位置、形状、行为等各种属性。说再多也没代码来得直观。...实现玩家精灵 玩家精灵相对来说属性上会简单很多,老规矩直接上游戏设定: 玩家形状为三角形▲,方向总是朝着移动方向 可以通过键盘 wsad 和 ↑↓←→ 操控 首先第一步,开始游戏,初始化玩家精灵...摇杆的相关配置项: 实现上其实也很简单,就是玩家精灵多加个参数,可以选择控制方式,如果是使用触摸控制,则加入摇杆,我们这里默认是将摇杆中心设定在左下角 然后判断如果是触摸控制,则监听触摸事件 然后加个字段记录下手指按住的地方即可

    1.3K20
    领券