Quick Cocos2dx 场景对象基类实现
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Quick Cocos2dx 场景对象基类实现,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3537字,纯文字阅读大概需要6分钟。
内容图文
从使用Quick-Cocos2d-x搭建一个横版过关游戏(四)拷来个进度条类,
但是由于那个类有个bug,在setProgress里面self.fill是找不到的,所以我改进了一下,代码如下:
1 local Progress = class("Progress", function() 2-- body 3return display.newNode() 4end) 5 6function Progress:ctor(background, fill) 7local progress = display.newSprite(background) 8local fill = display.newProgressTimer(fill, display.PROGRESS_TIMER_BAR) 9 fill:setMidpoint(CCPoint(0,0.5)) 10 fill:setBarChangeRate(CCPoint(1.0,0)) 11 fill:setPosition(progress:getContentSize().width*0.5, progress:getContentSize().height*0.5) 12 progress:addChild(fill) 13 progress:scale(0.5) 14 fill:setPercentage(100) 15 self.fill = fill 16 self:addChild(progress) 17end1819function Progress:setProgress(progress) 20-- body21 self.fill:setPercentage(progress) 22end2324return Progress
PS:其实还有一种解决办法,如下:
1 local Progress = class("Progress", function( background, fill ) 2-- body 3local progress = display.newSprite(background) 4local fill = display.newProgressTimer(fill, display.PROGRESS_TIMER_BAR) 5 fill:setMidpoint(CCPoint(0,0.5)) 6 fill:setBarChangeRate(CCPoint(1.0,0)) 7 fill:setPosition(progress:getContentSize().width*0.5, progress:getContentSize().height*0.5) 8 progress:addChild(fill) 9 progress:scale(0.5) 10 fill:setPercentage(100) 11 progress.fill = fill 12return progress 13end)
然后就是新增了一个角色的场景显示类GameUnit,暂时只用作角色显示,后续有功能再加,代码如下:
1 local GameUnit = class("GameUnit", function() 2-- body 3return display.newNode() 4end) 5 6local Progress = import("app.views.Progress") 7 8function GameUnit:ctor(hero) 9-- body10local clas = hero.class 11 cc.EventProxy.new(hero, self) 12 :addEventListener(clas.CHANGE_STATE_EVENT, handler(self, self.onStateChange)) 13 :addEventListener(clas.KILL_EVENT, handler(self, self.onKilled)) 14 :addEventListener(clas.HP_CHANGED_EVENT, handler(self, self.onHpChanged)) 15 :addEventListener(clas.EXP_CHANGED_EVENT, handler(self, self.onExpChanged)) 1617 self.player = hero 18 self:initDisplay() 19end2021function GameUnit:onStateChange( event ) 22-- body23end2425function GameUnit:onKilled( event) 26-- body27end2829function GameUnit:onHpChanged( event ) 30-- body31end3233function GameUnit:onExpChanged( event ) 34-- body35end3637--初始化显示38function GameUnit:initDisplay() 39-- 角色外观40local shape 41if self.player ~= nilthen42--todo43 shape = CCArmature:create(self.player:getRes()) 44local animation = shape:getAnimation() 45 animation:setSpeedScale(0.4) 46 animation:play("anim_idle") 47 self:setPosition(self.player:getX(), self.player:getY()) 48 self:setScaleX(self.player:getDirection()) 49else50 shape = display.newSprite("defaultimage.png") 51end52 self:addChild(shape) 53 self.shape = shape 5455--角色血条56 self.hpbar = Progress.new("progres_bg.png","progress.png") 57 self:addChild(self.hpbar) 58 self.hpbar:setProgress(50) 59end60--传入|更新数据61function GameUnit:setData() 62-- body63end64--取得数据65function GameUnit:getData() 66return self.hero 67end68--添加事件:重复利用这个对象的时候会用到69function GameUnit:addEvents() 70-- body71end72--移除事件:重复利用这个对象的时候会用到73function GameUnit:removeEvents() 74-- body75end7677return GameUnit
GameUnit里面包含了一个显示游戏角色形象的Sprite和一个显示血条的Progress,我们可以根据情况选择是否对外公开更新显示的接口。
现在,我们游戏角色的状态变更相关逻辑都在这里处理就行了。
所以,我们可以这样子初始化角色显示对象:
1 local attacker = app:getObject("me") 2local attackerSp = GameUnit.new(attacker) 3 self.layer:addChild(attackerSp) 456local enemy = app:getObject("enemy") 7local attackerSp1 = GameUnit.new(enemy) 8 self.layer:addChild(attackerSp1)
以下是现在的效果图:
下一步需要完善的是游戏角色类根据起对应的行为改变更新显示。
原文:http://www.cnblogs.com/adoontheway/p/3915459.html
内容总结
以上是互联网集市为您收集整理的Quick Cocos2dx 场景对象基类实现全部内容,希望文章能够帮你解决Quick Cocos2dx 场景对象基类实现所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。