開始第5篇筆記了,感受前面的幾篇寫的太少了,Quick cocos2dx 前面加個quick,就是就能讓咱們快速上手,快速開發......balabala
今天咱們來建立精靈,咱們前面顯示的外星人圖片就是一個精靈。緩存
quick給咱們提供了display.newSprite這個函數來建立精靈。函數
咱們進入display.lua中看看對這個函數的介紹說明。工具
哇,這麼長,我怎麼知道那個函數定位在哪裏(不是有搜索嗎,不能Ctrl+F搜索麼+_+)。ui
咱們換個方法,不用搜索,畢竟咱們想要看看quicks給咱們封裝了那些函數,我只要看函數列表就好了。sublime text給咱們提供的這個快捷鍵,顯示函數列表,讓咱們快速定位到想要找的函數lua
<<Ctrl大法之-----Ctrl+R>>url
看到了吧,這樣咱們就能看到quick究竟封裝了那些函數給咱們,畢竟如今quick的文檔不是那麼全面,咱們能夠定位過去,順便看看函數的實現過程,這樣更能使用好函數code
下面就是這個函數的參數說明了orm
建立並返回一個 Sprite 顯示對象。 -- @function [parent=#display] newSprite -- @param mixed 圖像名或SpriteFrame對象 -- @param number x -- @param number y -- @param table params -- @return Sprite#Sprite ret (return value: cc.Sprite) -- @see Sprite --[[-- 建立並返回一個 Sprite 顯示對象。 display.newSprite() 有三種方式建立顯示對象: - 從圖片文件建立 - 從緩存的圖像幀建立 - 從 SpriteFrame 對象建立 咱們用第一個種方式建立 function MainScene:ctor() display.newSprite("Hello.png") :align(display.CENTER, display.cx, display.cy) --設置錨點和圖片座標點 :addTo(self) --將生成的圖片精靈加入到MainScene的子節點中 end
進入模擬器,運行一下看看效果吧對象
顯示成功。ok,咱們用第二種方式建立精靈blog
第二種方式就是調用plist文件加載到精靈緩存中了,咱們把一堆小圖像打包成大圖,生成plist文件,這個文件包含了咱們要用的小圖在大圖的座標位置
至於如何打包 請搜索 TexturePacker
這個工具使用技巧自行使用谷歌百度大法
function MainScene:ctor() display.addSpriteFrames("lqfRoleWalk.plist","lqfRoleWalk.png") display.newSprite("#lqfRightStop.png") :align(display.CENTER,display.cx, display.cy) :addTo(self) :setScale(3) --放大3倍 end
注意:與上面第一個示例不一樣的,咱們將文件載入精靈緩存中,調用display.newSprite中參數加了一個#符號,這個#符號是告訴這個函數,從緩存中加載精靈的
咱們來看顯示效果(我認可,由於我圖過小了因此放大了3倍)
function MainScene:ctor() local button1 = cc.ui.UIPushButton.new({normal = "Button01.png",pressed = "Button01Pressed.png"}) button1:align(display.CENTER,display.cx,display.cy) button1:addTo(self) end
菜單按鈕就這麼建立,咱們先看效果
-- @param table images 各類狀態的圖片 -- @param table options 參數表 其中scale9爲是否縮放 狀態值: - normal 正常狀態 - pressed 按下狀態 - disabled 無效狀態
咱們看到上面咱們第二個參數中有個scale9的參數,知道的童鞋就知道這是九宮格,不知道的請百度實現原理以及這樣作的優勢,咱們用兩段代碼對比一下就能看出效果了
function MainScene:ctor() local button1 = cc.ui.UIPushButton.new({normal = "Button01.png",pressed = "Button01Pressed.png"}) button1:align(display.CENTER,display.cx,display.cy) button1:addTo(self) button1:setButtonSize(400,200) end
咱們將菜單尺寸放大
function MainScene:ctor() local button1 = cc.ui.UIPushButton.new({normal = "Button01.png",pressed = "Button01Pressed.png"},{scale9 = true}) button1:align(display.CENTER,display.cx,display.cy) button1:addTo(self) button1:setButtonSize(400,200) end
運行效果
-------------------------------- -- 註冊用戶點擊監聽 -- @function [parent=#UIButton] onButtonClicked -- @param function callback 監聽函數 -- @return UIButton#UIButton -- end -- function UIButton:onButtonClicked(callback) self:addButtonClickedEventListener(callback) return self end function UIButton:addButtonPressedEventListener(callback) return self:addEventListener(UIButton.PRESSED_EVENT, callback) end -- start -- -------------------------------- -- 註冊用戶按下監聽 -- @function [parent=#UIButton] onButtonPressed -- @param function callback 監聽函數 -- @return UIButton#UIButton -- end -- function UIButton:onButtonPressed(callback) self:addButtonPressedEventListener(callback) return self end function UIButton:addButtonReleaseEventListener(callback) return self:addEventListener(UIButton.RELEASE_EVENT, callback) end -- start -- -------------------------------- -- 註冊用戶釋放監聽 -- @function [parent=#UIButton] onButtonRelease -- @param function callback 監聽函數 -- @return UIButton#UIButton -- end -- function UIButton:onButtonRelease(callback) self:addButtonReleaseEventListener(callback) return self end function UIButton:addButtonStateChangedEventListener(callback) return self:addEventListener(UIButton.STATE_CHANGED_EVENT, callback) end (這不是UIButton的函數麼,不是UIPushButton的啊 ?)咱們在UIPushButton.lua文件,會看見,其實這個按鈕繼承了UIButton了,因此咱們能調用UIButton的函數 function MainScene:ctor() local button1 = cc.ui.UIPushButton.new({normal = "Button01.png",pressed = "Button01Pressed.png"},{scale9 = true}) button1:align(display.CENTER,display.cx,display.cy) button1:addTo(self) button1:setButtonSize(200,100) button1:onButtonClicked(function() print("歡迎收看xxxx") print("你們好,我是小莫") print("我是小小莫") end ) end
function MainScene:ctor() local sprite = display.newSprite("Hello.png") sprite:align(display.CENTER, display.cx, display.cy) sprite:addTo(self) sprite:setVisible(false) local button1 = cc.ui.UIPushButton.new({normal = "Button01.png",pressed = "Button01Pressed.png"},{scale9 = true}) button1:align(display.CENTER,display.cx,100) button1:addTo(self) button1:setButtonSize(200,100) button1.showSprieState_ = 1 button1:setButtonLabel("normal", cc.ui.UILabel.new({UILabelType = 2,text = "顯示圖片",size = 30})) button1:setButtonLabel("pressed", cc.ui.UILabel.new({UILabelType = 2,text = "顯示圖片",size = 30})) button1:onButtonClicked(function() if button1.showSprieState_ == 1 then button1.showSprieState_ = 2 sprite:setVisible(true) button1:setButtonLabel("normal", cc.ui.UILabel.new({UILabelType = 2,text = "隱藏圖片",size = 30})) button1:setButtonLabel("pressed", cc.ui.UILabel.new({UILabelType = 2,text = "隱藏圖片",size = 30})) else button1.showSprieState_ = 1 sprite:setVisible(false) button1:setButtonLabel("normal", cc.ui.UILabel.new({UILabelType = 2,text = "顯示圖片",size = 30})) button1:setButtonLabel("pressed", cc.ui.UILabel.new({UILabelType = 2,text = "顯示圖片",size = 30})) end end ) end