quick-cocos2d-x 踩坑日记(一)------ NodeEx 与 shortcodes

quick-cocos2d-x 踩坑日记(一)------ NodeEx 与 shortcodes,第1张

概述    今天在模仿一个demo,想自己去完善一些功能,自己写的时候就遇见了一个坑。。。先看代码:      local label = cc.ui.UILabel.new({     UILabelType = 1,    text = "Max Score 10",    font = "fonts/font-issue1343.fnt",    x = boardSize.width 

今天在模仿一个demo,想自己去完善一些功能,自己写的时候就遇见了一个坑。。。先看代码:

locallabel=cc.ui.UILabel.new({	UILabelType=1,text="Maxscore10",Font="Fonts/Font-issue1343.fnt",x=boardSize.wIDth/2,y=boardSize.height*0.4,}):addTo(self.overboard):setAnchorPoint(0.5,0.5)

当我调用label:setString()的时候,竟然没变化,看输出信息,发现label是nil!!!我就奇怪来了,后来去找源码样例,看看是不是我哪写错了。代码如下:

locallabel=cc.ui.UILabel.new({text="",size=14,@R_419_6004@=display.@R_419_6004@_BLACK}):align(display.left_CENTER,display.left+60,display.top-60):addTo(self)

这个代码中的label就不为nil,都是用cc.ui.UILabel.new创建的为什么不一样呢?原来问题出在后面函数的调用上。看源码:

functionNode:addTo(target,zorder,tag)target:addChild(self,zorderorself:getLocalZOrder(),tagorself:getTag())returnselfend
functionNode:align(anchorPoint,x,y)self:setAnchorPoint(display.ANCHOR_POINTS[anchorPoint])ifxandythenself:setposition(x,y)endreturnselfend

addTo和align都会返回调用对象,而setAnchorPoint没有返回值,在第一段代码中执行完setAnchorPoint()后没有对label赋值,所以为nil;在第二段代码中调用的函数一直返回调用对象,所以对label赋值了。

addTo是在shortcodes文件里,align在NodeEx文件里。shortcodes里的函数都会返回调用对象本身。

这次踩坑让我明白,addTo与addChild的区别,也学到shortcodes使用技巧。例如当你创建一个对象不需要在以后改动时,用shortcodes里封装的函数,可以省去取名字的过程。(大家也遇见过在同一文件代码多了,名字难取的情况吧-_-!)

踩坑结束!如有不足之处,请大家指出,一起交流成长!

总结

以上是内存溢出为你收集整理的quick-cocos2d-x 踩坑日记(一)------ NodeEx 与 shortcodes全部内容,希望文章能够帮你解决quick-cocos2d-x 踩坑日记(一)------ NodeEx 与 shortcodes所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1010682.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存