SpriteKit在复制节点时留了一个巨坑给开发者,需要开发者手动把复制节点的isPaused设置为false

根据When an overlay node with actions is copied there is currently a SpriteKit bug where the node’s isPaused property might be set to true提示,SpriteKit有一个Bug需要开发者自己来填。

SpriteNode节点在被copy()复制后,会自动被设置为暂停,也就是节点的所有Action全部不可用,如果需要使用node.run(SKAction.run{//code})

需要把复制后的节点isPaused设置为false

需要把复制后的节点isPaused设置为false

需要把复制后的节点isPaused设置为false

重要的事情说三遍 !!!

let overlayScene = SKScene(fileNamed: "ShoseScene")!
        let overlayShose = overlayScene.childNode(withName: "Overlay") as! SKSpriteNode
        let gameSceneOverlay = overlayShose.copy() as! SKSpriteNode
        overlayShose.removeFromParent() // 移除旧的
        /* 留意SpirteKit的巨坑
         * When an overlay node with actions is copied  there is currently a SpriteKit bug
         * where the node’s isPaused property might be set to true
         * 一定要记得设置为 false 或者所有gamesceneOverlay内的子节点的所有action都不起作用
         */
        gameSceneOverlay.isPaused = false;
        gameSceneOverlay.enumerateChildNodes(withName: "shose") { (node, _) in
            let sprite = node as! ShoseNodeClass
            sprite.newInstance(scene: self.scene!) // 加入物理体;
        }

使用的场景

  // 特效果汁
    func emitParticles(particleName: String, sprite: SKSpriteNode) {
       // isPaused =false 后,获得的sprite才可以运行.run,否则不起作用;
        sprite.run(SKAction.run({
            sprite.removeFromParent()
            print ("精灵节点内 hit shoses")
        }))
    }

更多Swfit游戏教学:http://www.iFIERO.com

原文地址:https://www.cnblogs.com/apiapia/p/9418399.html

时间: 2024-10-08 08:31:16

SpriteKit在复制节点时留了一个巨坑给开发者,需要开发者手动把复制节点的isPaused设置为false的相关文章

程序员同事问shell脚本刷流量,不讨巧帮他填了一个巨坑

程序员同事闲来无事问我可以用shell脚本写个刷微博访问量的没.于是脑海里想起了病毒营销或者fork×××这些词.依稀操刀稀松吧啦的写了起来.并测试了下,脚本内容是下面这样的:脚本跑起来的样子当然仅仅是为了展示shell脚本威力.当然还是希望大家靠实际的阅读量.拿微信公众号来说,刷量增粉的很多.同样笔者手里也有些软件.但一次都没有使用过.以来防止被中马,二来做人如果都急功近利.光追求虚妄的东西而没有实质内容.没有实际转化率和留存,本质上就是自欺欺人.不闲扯我们继续看 思路来源:Linux世界里著

说一下最近找的工作所遇到的一个巨坑,跟各位同行分享一下。(与技术无关)

因为在上一家公司也干了挺久的了,然后发展的空间也有限,所以就萌生了跳槽的想法. 中间也面了几家公司,拿了几个offer.最终定了南方某某国有航空公司的电子商务部,主要是开发自己的电子商务平台后台系统. 我为什么说它坑呢,主要是住房公积金的问题,在谈薪酬的时候他们承诺的是全额工资的百分之12.那么按照我们平常人一般的了解,就是譬如你月收入10k,那么就应该是10k的百分之12.那么,当我拿到了第一个月的工资的时候,发现我的公积金缴纳基数居然是2400(左右),这个是楼主当地的公积金最低标准.然后公

解决持久化数据太大,单个节点的硬盘无法存储的问题;解决运算量太大,单个节点的内存、CPU无法处理的问题

需要学习的技术很多,要自学新知识也不是一件容易的事,选择一个自己比较感兴趣的会是一个比较好的开端,于是,打算学一学分布式系统. 带着问题,有目的的学习,先了解整体架构,在深入感兴趣的细节,这是我的计划. 首先得有问题,如果每日重复相同的工作,也不主动去学习,很难发现新的问题.不怕自己无知,就怕不知道自己无知,只有不断的学习,才会发现更多未知的知识领域! 带着问题出发 回到顶部 分布式要解决什么问题呢?解决持久化数据太大,单个节点的硬盘无法存储的问题:解决运算量太大,单个节点的内存.CPU无法处理

EC笔记:第二部分:12、复制对象时勿忘其每一个成分

EC笔记:第二部分:12.复制对象时勿忘其每一个成分 1.场景 某些时候,我们不想使用编译器提供的默认拷贝函数(包括拷贝构造函数和赋值运算符),考虑以下类定义: 代码1: class Point{ private: double x; double y; public:         Point()=default; Point(const Point &other){ x=other.x; y=other.y; } const Point& operator=(const Point

Effective C++_笔记_条款12_复制对象时勿忘其每一个成分

(整理自Effctive C++,转载请注明.整理者:华科小涛@http://www.cnblogs.com/hust-ghtao/) 编译器会在必要时候为我们的classes创建copying函数,这些“编译器生成版”的行为:将被烤对象的所有成员变量都做一份拷贝. 如果你声明自己的copying函数,意思就是告诉编译器你并不喜欢缺省实现中的某些行为.编译器仿佛被冒犯似的,会以一种奇怪的方式回敬:当你的实现代码几乎必然出错时却不告诉你.所以自己实现copying函数时,请遵循一条规则:如果你为c

Effective C++:条款12:复制对象时勿忘其每一个成分

(一) 一个继承体系的声明: class Date {...}; class Customer { public: ... private: string name; Date lastTransaction; }; class PriorityCustomer : public Customer { public: PriorityCustomer(const PriorityCustomer& rhs); PriorityCustomer& operator=(const Priori

条款12:复制对象时请勿忘每一个成分

条款12:复制对象时请勿忘每一个成分 当为一个类实现自己的构造函数,相关赋值函数,析构函数,则必须有责任对类中的每一个成员进行初始化.赋值.释放.因此:如果为一个类添加一个成员,就必须同时相应修改上面几类函数. 看一个简单的类 class Terminal { Terminal(const int termid) : m_termId(termid) {} ~Terminal() {} Terminal(const Terminal & terminal) { this->m_termId

Effective C++ 条款11,12 在operator= 中处理“自我赋值” || 复制对象时不要忘记每一个成分

1.潜在的自我赋值     a[i] = a[j];     *px = *py; 当两个对象来自同一个继承体系时,他们甚至不需要声明为相同类型就可能造成别名. 现在担心的问题是:假如指向同一个对象,当其中一个对象被删,另一个也被删,这会造成不想要的结果. 该怎么办? 比如:   widget& widget:: operator+ (const widget& rhs) {    delete pd;    pd = new bitmap(*rhs.pb);    return *thi

Effective C++读书笔记之十二:复制对象时勿忘其每一个成分

Item 12:Copy all parts of an object 如果你声明自己的copying函数,意思就是告诉编译器你并不喜欢缺省显示中的某些行为.而编译器会对"你自己写出copying函数"做出一种复仇的行为:既然你拒绝它们为你写出copying函数,如果你的代码不完全,它们也不会告诉你.结论很明显:如果你为class添加一个成员变量,你必须同时修改copying函数.如果你忘记,编译器不太可能提醒你. 一下提供一种正确的模版: class Date{...}; class