16.精灵进阶之节点命名

16.精灵进阶之节点下篇

一般情况下,想要知道节点正在执行哪个动作,你一无所知;想要移除众多动作中的一个,你却只能删除所有。你还在苦恼吗?那么给“动作命名”(named actions)消除以上所有的障碍。已命名的动作都使用一个独一无二的关键字(key name)来标识自身。如此,你能够移除、找到以及替换掉一个附着于节点之上已命名的动作。对先前代码稍作改变,自然就是给动作添加一个key如下:

//注意这里在通知spaceship执行runAction动作同时,也给动作命名了!
//这样我们才能在之后的代码中对该动作移除等等操作
let moveNodeRight = SKAction.moveByX(100.0,y:0.0,duration:1.0)
spaceship.runAction(moveNodeRight,withKey:"ignition")

下面是一些key-based方法 :

  • runAction:withKey: 执行动作同时给其命名。
  • actionForKey:通过key值来确认某个动作是否正在被执行。
  • removeActionForKey:通过key值来移除动作。

执行一组动作(sequence or group)

Sprite Kit框架提供了许多标准动作类型,用以改变场景中节点的属性。但是只有当你将动作“排列组合”起来才能发挥他们的作用。通过动作之间配合,我们能够创建更为复杂和生动的动画,但是它仍然以单个动作存在并运行在一个节点上(很有意思)。现在是时候来学习sequence,grouprepeating这三类动作了。

  • sequence Action:动作队列,包含一组子动作,执行顺序从头至尾,有条不乱,只有当前一个动作结束,紧跟着的动作马上开始。想象人们排队进场,一个个进入的场景,是不是有点感觉
  • group Action:动作组,也包含一组子动作,执行顺序大家平等,都是从同一时间点开始执行。现象跑步比赛,一群人都在同一个起跑线,发令枪一开,大家冲出去,当然有快有慢,这个是不可避免的。
  • repeating Action:只有一个子动作,执行顺序当然就是周而复始。

具体如何操作,请见下文

时间: 2024-11-21 00:54:18

16.精灵进阶之节点命名的相关文章

13.精灵进阶之干活篇

13.精灵进阶之干活篇上 前文曾提及一种创建有纹理的精灵一步到位的方法,即在创建sprite同时也创建了相应地texture,不知客官还有印象.无疑这是一种简便的方法,但往往在实际开发一款复杂游戏时,你需要全盘接管纹理,比如遇到以下几种情况: 多精灵之间共用一个纹理(简单理解成可复用的图片吧,虽然不是很恰当). 假如已经创建完一个有纹理精灵,此时你想更换一个新的纹理给它. 采用一个纹理集合制作精灵动画. 有时候创建纹理的数据并非来自于app bundle,比如从网络下载. 将纹理预(提前)加载到

16.2 添加节点和数据库

16.2  添加节点和数据库 16.2.1 添加节点 以上操作,脚本为: --- YOU MUST EXECUTE THE FOLLOWING SCRIPT IN SQLCMD MODE. :Connect SQLSVR3 USE [master] GO CREATE LOGIN [LOCALDOMAIN\SQLHAUser] FROM WINDOWS GO :Connect SQLSVR1 use [master] GO GRANT CONNECT ON ENDPOINT::[Hadr_end

关于Cocos2d-x中节点和精灵的关系以及初始化

1.每一个对象类都有一个自己public的一个create函数(等价于CREATE_FUNC),和init函数. 2.create函数返回的是自身的类型,init函数是在ceate函数被调用的时候自动调用. 3.如果是场景对象类的话,还要public一个 static cocos2d::Scene* createScene();的函数,返回值是Scene类型 如果我们要呈现一个会动的人 1.定义一个对象类,继承自Node 2.定义一个private的Sprite * sprite属性 3.在in

IOS 2D游戏开发框架 SpriteKit-->续(创建敌对精灵)

这次包括之后讲的spritekit 我都会围绕一个案例来说,这个案例就是一个简单的2d飞机大战游戏,今天这里我讲创建敌对精灵,就是敌对飞机,敌对飞机不停的被刷新到屏幕上.....当然这里涉及到的类其实还是,精灵,和材质两个类,这两个类前两篇的案例中已经出现过,使用方法都一样,主要看逻辑,我这里主要是实现每间隔一段时间屏幕就刷新一个敌对飞机.飞机从屏幕高度为起点往下移动,当potion移动到0时将敌对飞机移出. 1 /*这个方法是spritekit 的场景自带的,每过一秒就会被调用*/ 2 -(v

JavaScript进阶学习——DOM对象

DOM对象 1认识DOM 2getElementByName方法 3getElementByTagName方法 4区别getElementByIdgetElementByNamegetElementByTagName 5getAttribute方法 6setAttrubute方法 7节点属性 8访问子节点childNodes 9访问子节点的第一个最后项 10访问父节点parentNode 11访问兄弟节点 12插入节点appendChild 13插入节点insertBefore 14删除节点re

11.spritekit征程——结尾篇之节点的狂欢

11.spriteKit征程--结尾篇之节点的狂欢 本文是sprite kit征程的结尾篇,当然这仅仅还只是开始.另外我已经完成一款sprite Kit的教学软件.希望多多支持. 小节目录: 01.关于sprite_kit 02.SpriteKit前瞻之视图场景 03.sprite_kit前瞻之节点树 04.sprite_kit前瞻之纹理 05.sprite_kit前瞻之节点的动画 06.sprite_kit前瞻之创造"真实"的世界 07.spritekit征程--创建第一个场景 08

精灵的优化

cocos2dx针对游戏设计的不同方面会有不同的优化方案,可以对声音,对内存,对图片格式,对色彩等等进行优化.有关这些方面的方法请大家查找其他的文章.我今天要说的是如何对精灵进行优化,程序中我们用到的最多的就是精灵,大到背景.UI,小到 NPC.道具,只要是用图片展示的,都是精灵或它的子类.精灵是什么,在我看来精灵就是一张纹理图片,是按某种方式显示出来的图片.精灵如此的重要,我们当然要好好的优化优化了.我们可以减小精灵图片的大小,使用缓存Cache的方法将精灵提前加载到内存中,当有很多精灵的时候

虚拟化网络进阶管理

软件模拟网络设备 交换机 路由器 防火墙 负载均衡器 ... Linux内核加载8021q协议 #虚拟交换机支持vlan功能 modinfo 8021q modeprobe 8021q vlan配置工具 安装 1 yum info vconfig 2 yum install -y vconfig 使用 1 vconfig --help Use Linux Network Namespace 网络命名空间隔离,使得各个命名空间的网络,互相不可见 一个网络名称空间可以看做是一个路由器,既分割网络,也

javascript所有的节点和方法

属性: 1.Attributes 存储节点的属性列表(只读) 2.childNodes 存储节点的子节点列表(只读) 3.dataType 返回此节点的数据类型 4.Definition 以DTD或XML模式给出的节点的定义(只读) 5.Doctype 指定文档类型节点(只读) 6.documentElement 返回文档的根元素(可读写) 7.firstChild 返回当前节点的第一个子节点(只读) 8.Implementation 返回XMLDOMImplementation对象 9.las