Heim > Datenbank > MySQL-Tutorial > quick cocos2dx学习记录

quick cocos2dx学习记录

WBOY
Freigeben: 2016-06-07 15:01:06
Original
1317 Leute haben es durchsucht

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

sprite :

:IsVisible()是否可见

:getPosition()返回x,y

:getContentSize().width

:getContentSize().height高<br>

对于父节点居中

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

<br>

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

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

<br>

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

cc.ui.UIPageView.new{..}

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

cc.ui.UIListView.new{...}

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

UICheckBoxButton 开关<br>

UICheckBoxButtonGroup 单选框 可实现tab

延迟delay执行函数:

node:performWithDelay(callback, delay) <br>

<br>

图片、背景:

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)
Nach dem Login kopieren
<br> <br>

<br>

文本:

cc.ui.UILabel.new({text = "-- " .. title .. " --", size = 24, color = display.COLOR_BLUE})
        :align(display.CENTER, display.cx, display.top - 20)
        :addTo(scene)
Nach dem Login kopieren
<br>

<br>

按钮

 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)
Nach dem Login kopieren
<br> <br>

飘字

local miss = display.newSprite("#Miss.png")
                :pos(bullet:getPosition())
                :addTo(self, 1000)
            transition.moveBy(miss, {y = 100, time = 1.5, onComplete = function()
                miss:removeSelf()
Nach dem Login kopieren

<br>

<br>

消息分发处理:

HERO.LUA

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

HEROVIEW.LUA

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

<br>

网络请求 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() 
Nach dem Login kopieren
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
Nach dem Login kopieren

<br>

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

<br>

场景类的创建以及层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,255)):addTo(self)      
end
 
function MainScene:onEnter()
end
 
function MainScene:onExit()
end
 
return MainScene
Nach dem Login kopieren
<br>
--添加忍者精灵
     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,handler(self , self.update))
     self:scheduleUpdate()
Nach dem Login kopieren
<br>

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文件。 <br> 现在修改main.lua文件,去掉原来的程序入口代码,改成“require "update"”。 <br> 这样,更新模块就添加好了。程序在启动时,将先运行更新模块,完成后,自动调用appentry进入原来程序的真正入口,也就是更新后的版本了 <br>

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>
Nach dem Login kopieren

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

GAME_TEXTURE_DATA_FILENAME = device.writablePath.."game.plist"

2 GAME_TEXTURE_IMAGE_FILENAME = device.writablePath.."game.png"

已经require过的模块的更新<br>

loadChunksFromZIP是可以多次调用的,而且如果第二次载入的包中的代码模块与之前载入的模块有重名,新的模块会覆盖旧的模块。<br>

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

<br>

骨骼动画

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

<br> <br>
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage