SpriteBuilder中本地化的局限性】的更多相关文章

最后,App中的(图片)logo仍然保留在英语格式. 未来SpriteBuilder将计划支持本地化资源文件,但是写作该篇的时候估计还没有实现. 你现在必须使用正规的iOS app的国际化技术来支持本地化任何音频(语音)和图片文件.…
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我们知道在SpriteBuilder中可以为对象设置自定义类从而可以进行特殊属性的赋值. 比如我们需要在物理世界中设置重力值,在代码中改来改去略显麻烦,我们可以直接在自定义的属性中设置重力值. 但是一般情况下,我们可能还想设置一些内置对象的属性,比如CCNode等.但是如果你不自定义类,对象是不显示定义属性界面的.这时我们也可以手动设置自定义类,不过该类名就是…
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 最近在码代码的时候,发现一个问题,特此写出来和大家分享,希望遇到类似问题的童鞋不再走弯路. 在SpriteBuilder中新建的CCB文件类型为CCNode,但是想让其对应一个自定义类.在代码中使用: MyClass *obj = [CCBReader load:@"Layers/MyCCBFile"]; [obj myMethod]; 代码,运行后发…
因为节点需要呈现动画效果,虽然只有两个不同帧. 在SpriteBuilder中新建Bullet.ccb文件,类型为node. 添加如上2张图片,并制作动画效果帧. 在游戏中子弹遇到障碍物会被删除,时机是随机的.子弹在飞出屏幕时也会被删除. 实际运行App会发现必定崩溃,在子弹随机删除几秒后. 发现Xcode总是中断在动画管理器(CCAnimationManager)中,遂将Bullet.ccb的动画效果删除,没有问题了. 因为Bullet的类型是Node,其self.userObject总为ni…
在SpriteBuilder中可以将一个节点的位置设为%形式,这意味着在不同的屏幕尺寸中,该节点会定位在相对同一个位置. 比如x和y分别为 50%和50%的位置,在各种屏幕中都会定位到屏幕的中心. 但是我们此时在涉及到移动该节点的代码时需要注意,移动的大小不再是绝对的点的长度,而也变为了相对%比的长度. 比如我要把(50%,50%)位置的节点向下移动整个屏幕1/10的距离,可以这样写: id move = [CCActionMoveBy actionWithDuration:5 position…
在实践中,有一些小的陷阱和障碍可能阻止你使用一般的TrueType字体. 第一个,必须要有一个有效的字体文件.在Finder中双击该.ttf文件,应该会打开Font Book app,显示一个象形符号的字母表.如果没有显示或发生错误,则改字体很可能是损坏的或者不是正确的字体格式. 接下来你要考虑的是字体名不一定和该字体文件的名字一致.字体有3个名字: 字体文件的名字 字体族的名字(family name) 字体的名字 为了使用SpriteBuilder,字体名字和字体文件的名字(除去文件扩展)应…
在SpriteBuilder中三种物理关节都包含Breaking force区域在属性框中. 该属性被设置成关节可以承受的压力临界值.如果关节的压力超出了Breaking force中设置的值,则关节将会被删除(removed). 注意:Max force必须被设置为无限的(unlimited)或者一个大于等于Breaking force的值.…
这个目标是临时的禁用距离关节(distance joint). 不幸的是,你只可以无效化(通过删除的方式)一个关节. 所以,你必须通过代码创建一个新的距离关节实例并且赋予它之前删除关节(在SpriteBuilder中创建的)同样的属性值. 做以上操作最简单的方法是保持一个关节的引用,甚至在它已经被无效化后.这可以通过简单的不在其ivar上使用__weak关键字来达成. 使得_lockJoint成为一个强引用,这意味着该ivar引用的关节直到SpringBoard实例自身销毁(deallocate…
在SpriteBuilder中,pivot类型的关节表示两个物体围绕一个中心旋转运动的关节,也称之为pin关节. 默认情况下Collide bodies是不选的.因为在大多数情况下你不希望pivot连接的2个物理物体发生碰撞.在这个例子中,链条元素(chain elements)和hook静态物理对象互相部分重叠,所以如果他们彼此之间发生碰撞就会出现问题. 你将在设计Spring关节对象的时候看到选择Collide bodies的一个好例子.…
如下图: 到目前为止,GameScene依赖于节点在SpriteBuilder中的顺序去决定其绘制的顺序. level content(_levelNode)被首先绘制,然后GameMenuLayer被画在前者的上面. 不管如何,现在你在代码中删除了_levelNode,然后加载了一个新的并且把它作为GameScene的一个孩子添加进来.添加一个节点将总是将其放在绘制列表的最后面. 因此,绘制顺序现在反转了,所以你不再能看到pause按钮了(其在GameMenuLayer层上). 为了修复这个问…