quick cocos2dx学习记录
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)
网络请求 httprequest <span style="white-space:pre"> </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中要导入其他的类可以用
场景类的创建以及层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 style="color:#ff0000;">添加每帧刷新的方法</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文件。 endProcess(): <span style="white-space:pre"> <span style="font-size:18px;"> </span></span><span style="font-size:18px;"> if checkOK then for i,v in ipairs(self.fileList.stage) do <span style="color:#ff0000;"> 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> 由于下载路径不变,所以如果要更新资源的话:将代码中的资源路径修改为
已经require过的模块的更新
|