quick cocos2dx学习记录

quick cocos2dx学习记录,第1张

概述sprite : :IsVisible()是否可见 :getPosition()返回x,y :getContentSize().width :getContentSize().height高 对于父节点居中 setPosition(parent:getContent().width/2,parent:getContent().height/2) --父节点中心 居中显示:元件宽、高=WIDTH、H

sprite :

:IsVisible()是否可见

:getposition()返回x,y

:getContentSize().wIDth

:getContentSize().height高

对于父节点居中

setposition(parent:getContent().wIDth/2,parent:getContent().height/2) --父节点中心


居中显示:元件宽、高=WIDTH、HEIGHT

self.mSprite:align(display.CENTER,display.cx - WIDTH,display.cy - HEIGHT)


滑动切换页面组件:(Sample里的TestUIpageVIEwScene.lua 比较详细)

cc.ui.UIPageVIEw.new{..}

列表组件:(Sample里的TestUIListVIEwScene.lua 比较详细)

cc.ui.UIListVIEw.new{...}

GrID组件;可用ListVIEw实现,每个item就是N个相同的node组成的

UICheckBoxbutton 开关

UICheckBoxbuttonGroup 单选框 可实现tab

延迟delay执行函数:

node:performWithDelay(callback,delay)


图片、背景:

local bg = display.newSprite("#OtherSceneBg.png")    -- make background sprite always align top    bg:setposition(display.cx,display.top - bg:getContentSize().height / 2)    self:addChild(bg)



文本:

cc.ui.UILabel.new({text = "-- " .. Title .. " --",size = 24,color = display.color_BLUE})        :align(display.CENTER,display.cx,display.top - 20)        :addTo(scene)


按钮

 cc.ui.UIPushbutton.new("button01.png",{scale9 = true})        :setbuttonSize(200,80)        :setbuttonLabel(cc.ui.UILabel.new({text = "REFRESH"}))        :onbuttonpressed(function(event)            event.target:setScale(1.1)        end)        :onbuttonRelease(function(event)            event.target:setScale(1.0)        end)        :onbuttonClicked(function()            app:enterScene("MainScene",nil,"flipy")        end)        :pos(display.cx,display.bottom + 100)        :addTo(self)


飘字

local miss = display.newSprite("#Miss.png")                :pos(bullet:getposition())                :addTo(self,1000)            Transition.moveBy(miss,{y = 100,time = 1.5,onComplete = function()                miss:removeSelf()



消息分发处理:

HERO.LUA

self:dispatchEvent({name = Hero.EXP_CHANGED_EVENT})

HEROVIEW.LUA

cc.EventProxy.new(hero,self)
:addEventListener(cls.CHANGE_STATE_EVENT,handler(self,self.onStateChange_))
:addEventListener(cls.KILL_EVENT,self.onKill_))
:addEventListener(cls.HP_CHANGED_EVENT,self.updateLabel_))
:addEventListener(cls.EXP_CHANGED_EVENT,self.updateLabel_))


网络请求 httprequest

<span >	</span> -- 创建一个请求,并以 POST 方式发送数据到服务端            local url = "http://www.mycompany.com/request.PHP"            local request = network.createhttpRequest(onRequestFinished,url,"POST")            request:addPOSTValue("KEY","VALUE")            -- 开始请求。当请求完成时会调用 callback() 函数            request:start() 
function onRequestFinished(event)    local ok = (event.name == "completed")    local request = event.request    if not ok then        -- 请求失败,显示错误代码和错误消息        --  print(request:getErrorCode(),request:getErrorMessage())        return    end    local code = request:getResponseStatusCode()    if code ~= 200 then        -- 请求结束,但没有返回 200 响应代码        --print(code)        return    end    -- 请求成功,显示服务端返回的内容    local response = request:getResponseString()    print(response..'AAAresponse')    app:enterHallScene()end


在Quick中要导入其他的类可以用require也可以用import,使用可以使用相对路径来载入,使用require就必须要把完整的路径写出来,详细的解析可以看framework下的functions.lua里面的import的实现


场景类的创建以及层Layer的添加(MainScene.lua)

local MainScene = class("MainScene",function()    return display.newScene("MainScene")end) --  相当于C++中的构造函数function MainScene:ctor()--      将背景设置为白色,而且这个作为当前场景的层,以便以后实现触摸事件     self.touchLayer_ =   display.newcolorLayer(cc.c4b(255,255,255)):addTo(self)      end function MainScene:onEnter()end function MainScene:onExit()end return MainScene

--添加忍者精灵     self.player_ = display.newSprite("Player.png"):addTo(self.touchLayer_)     self.player_:pos(self.player_:getContentSize().wIDth / 2,display.height / 2)--左侧中间           -- 初始化存储飞镖和敌人(怪物)的数组     self.projectiles_ = {}     self.monsters_ = {}           -- <span >添加每帧刷新的方法</span>     self:addNodeEventListener(cc.NODE_ENTER_FRAME_EVENT,self.update))     self:scheduleUpdate()

1源文件编译及加密:http://my.oschina.net/lonewolf/blog/178515 :将所有代码编译成二进制文件(所有代码文件名包含路径名)打包成gama.zip后放在/res资源路径下面,移除原有scripts文件夹下的代码。 在 AppDelegate .cpp 中添加game.zip即可

2基于(1)加密打包后的热更原理http://my.oschina.net/SunlightJuly/blog/180639

关键:更改关键函数的调用顺序

在scripts目录下创建一个新文件appentry.lua,然后打开工程原来的main.lua文件,把里面调用程序入口的代码复制过来。如果你使用的是最新版的quick-x,那么就只有“require("app.MyApp").new():run()”这一句。保存appentry.lua文件。
现在修改main.lua文件,去掉原来的程序入口代码,改成“require "update"”。这样,更新模块就添加好了。程序在启动时,将先运行更新模块,完成后,自动调用appentry进入原来程序的真正入口,也就是更新后的版本了。

endProcess():

<span >	<span >	</span></span><span > if checkOK then                    for i,v in ipairs(self.fileList.stage) do                       <span > if v.act=="load" then                            ccluaLoadChunksFromZIP(self.path..v.name) --关键:提前load要修改的代码                        end</span>                    end                    for i,v in ipairs(self.fileList.remove) do                        removefile(self.path..v)                    end                else                    removefile(self.curListfile)                end              end</span>

由于下载路径不变,所以如果要更新资源的话:将代码中的资源路径修改为

GAME_TEXTURE_DATA_filename = device.writablePath.."game.pList"
2 GAME_TEXTURE_IMAGE_filename = device.writablePath.."game.png"
已经require过的模块的更新
loadChunksFromZIP是可以多次调用的,而且如果第二次载入的包中的代码模块与之前载入的模块有重名,新的模块会覆盖旧的模块。

由于require不会重复加载一个文件,所以如果要更新一个已经加载的文件,在加载前package.loaded["config"] =nil


骨骼动画

例如一个菊花:如果你是一个团队,那么叫美术负责做就是了,自己弄这个没什么必要。如果闲的有兴致,可以去看下 http://cn.cocos2d-x.org/tutorial/show?ID=847。如果想简单实现,自己弄几个光线sprite,旋转循环播放就是了。 总结

以上是内存溢出为你收集整理的quick cocos2dx学习记录全部内容,希望文章能够帮你解决quick cocos2dx学习记录所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)