真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Cocos實(shí)戰(zhàn)篇[3.2]——《戰(zhàn)神傳說(shuō)》Lua版-創(chuàng)新互聯(lián)

【嘮叨】

10年積累的成都做網(wǎng)站、成都網(wǎng)站制作經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有聶榮免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

   當(dāng)時(shí)學(xué)Lua的時(shí)候,我將《戰(zhàn)神傳說(shuō)》用Lua也寫了一遍。

  C++版的《戰(zhàn)神傳說(shuō)》參考這篇:http://shahdza.blog.51cto.com/2410787/1549660

【源碼】

   https://github.com/shahdza/Cocos-Lua_Plane


【學(xué)習(xí)心得】

1、繼承自cc.Sprite后,設(shè)置自身紋理圖片的方式

-- 【方式一】通過(guò)精靈幀設(shè)置
	cc.SpriteFrameCache:getInstance():addSpriteFrames("123.plist")
	local frame = cc.SpriteFrameCache:getInstance():getSpriteFrame("1.png")
	self:setSpriteFrame(frame)

	-- 【方式二】通過(guò)圖片紋理
	local texture = cc.Director:getInstance():getTextureCache():addImage("ship01.png")
	local frame = cc.SpriteFrame:createWithTexture(texture, cc.rect(0, 0, 60, 38))
	self:setSpriteFrame(frame)

2、混合模式

-- local cbl = {GL_SRC_ALPHA, GL_ONE}
	self:setBlendFunc(GL_SRC_ALPHA, GL_ONE)

3、定時(shí)器

-- 【默認(rèn)定時(shí)器】
	self:scheduleUpdateWithPriorityLua(update, priority)
	self:unscheduleUpdate()

	-- 【自定義定時(shí)器】schedule
	local dt = 0
	function GameLayer:addUpdate()
		local function update(_dt) 
			dt = _dt 
		end
		self:scheduleUpdateWithPriorityLua(update, 0)
	end
	
	function GameLayer:xxxxx()
		local function func()
			print(dt)
		end
		schedule(self, func, 1.0 / 60.0)
	end

4、按鈕回調(diào)

-- registerScriptTapHandler
	local function turnToLoadingScene(tag, sender)
		self:turnToLoadingScene()
	end

	local backlb = cc.Label:createWithBMFont("Font/bitmapFontTest.fnt", "Go Back")
	local pback = cc.MenuItemLabel:create(backlb)
	pback:registerScriptTapHandler(turnToLoadingScene)

5、觸摸事件

-- registerScriptHandler
	-- 【單點(diǎn)觸摸】
	local dispatcher = self:getEventDispatcher()
	local listener = cc.EventListenerTouchOneByOne:create()
	listener:registerScriptHandler(onTouchBegan, cc.Handler.EVENT_TOUCH_BEGAN)
	listener:registerScriptHandler(onTouchMoved, cc.Handler.EVENT_TOUCH_MOVED)
	listener:registerScriptHandler(onTouchEnded, cc.Handler.EVENT_TOUCH_ENDED)
	dispatcher:addEventListenerWithSceneGraphPriority(listener, self)
	-- 【吞噬觸摸】
	listener:setSwallowTouches(true)

6、單例類

Effect = class("Effect", function()
		return cc.Node:create()
	end)

	local _effect = nil
	function Effect:getInstance()
		if nil == _effect then
			_effect = clone(Effect) -- 用clone() ,好像用.new()有問(wèn)題
			_effect:init()
		end
		return _effect
	end

7、貝塞爾曲線運(yùn)動(dòng)

local bezier = {
		cc.p(sgn * dx, 0),		-- controlPoint_1
		cc.p(sgn * dx, -dy),	-- controlPoint_1
		cc.p(0, -dy),			-- bezier.endPosition
	}
	local b0 = cc.BezierBy:create(dt, bezier)

8、動(dòng)畫(huà)

-- 【方式一】通過(guò)精靈幀創(chuàng)建
	local arr = {}
	for i=1, 34 do
		local str = string.format("explosion_%02d.png" , i)
		-- getSpriteFrameByName -> getSpriteFrame
		local frame = cc.SpriteFrameCache:getInstance():getSpriteFrame(str)
		table.insert(arr, frame)
	end
	local animation = cc.Animation:createWithSpriteFrames(arr, 0.02)
	cc.AnimationCache:getInstance():addAnimation(animation, "Explosion")
	
	-- 【方式二】通過(guò)圖片紋理
	local texture = cc.Director:getInstance():getTextureCache():addImage("ship01.png")
	local sp1 = cc.SpriteFrame:createWithTexture(texture, cc.rect(0, 0, 60, 38))
	local sp2 = cc.SpriteFrame:createWithTexture(texture, cc.rect(60, 0, 60, 38))
	local animation = cc.Animation:create()
	an:addSpriteFrame(sp1)
	an:addSpriteFrame(sp2)
	an:setDelayPerUnit(0.1)
	an:setRestoreOriginalFrame(true)
	self:runAction(cc.RepeatForever:create(cc.Animate:create(animation)))

9、背景滾動(dòng)

-- 【1】添加背景
	function GameLayer:addBG()
		self.bg1 = cc.Sprite:create("bg01.jpg")
		self.bg2 = cc.Sprite:create("bg01.jpg")
		self.bg1:setAnchorPoint(cc.p(0, 0))
		self.bg2:setAnchorPoint(cc.p(0, 0))
		self.bg1:setPosition(0, 0)
		self.bg2:setPosition(0, self.bg1:getContentSize().height)
		self:addChild(self.bg1, -10)
		self:addChild(self.bg2, -10)
	end
	-- 【2】背景滾動(dòng)
	function GameLayer:moveBG()
		local height = self.bg1:getContentSize().height
		local function updateBG()
			self.bg1:setPositionY(self.bg1:getPositionY() - 1)
			self.bg2:setPositionY(self.bg1:getPositionY() + height)
			if self.bg1:getPositionY() <= -height then
				self.bg1, self.bg2 = self.bg2, self.bg1
				self.bg2:setPositionY(WIN_SIZE.height)
			end
		end
		schedule(self, updateBG, 0)
	end

10、物理碰撞

   > 碰撞事件& 條件

(1)b1.CategoryBitmask與 b2.ContactTestBitmask進(jìn)行按位與

(2)b2.CategoryBitmask 與 b1.ContactTestBitmask 進(jìn)行按位與

只有(1)、(2)都不為0的時(shí)候,觸發(fā)碰撞檢測(cè)事件。

   > 物體碰撞& 條件

(1)b1.CategoryBitmask 與 b2.CollisionBitmask進(jìn)行按位與

(2)b2.CategoryBitmask 與 b1.CollisionBitmask 進(jìn)行按位與

只有(1)、(2)都不為0的時(shí)候,觸發(fā)物體碰撞。

-- 設(shè)置場(chǎng)景物理信息
	scene:getPhysicsWorld():setGravity(cc.p(0, 0))
	scene:getPhysicsWorld():setDebugDrawMask(cc.PhysicsWorld.DEBUGDRAW_ALL)
	
	-- 創(chuàng)建物體
	b1 = cc.Sprite:create("123.png")
	-- 半徑、材質(zhì)(密度、彈性、摩擦力)、偏移量
	local body = cc.PhysicsBody:createCircle(3, cc.PhysicsMaterial(0.1, 1, 0), cc.p(0, 16)) 
	b1:setPhysicsBody(body)
	b1:getPhysicsBody():setCategoryBitmask(2)
	b1:getPhysicsBody():setCollisionBitmask(3)
	b1:getPhysicsBody():setContactTestBitmask(12)
	
	-- 注冊(cè)碰撞事件
	local function onContactBegin(contact)
		local a = contact:getShapeA():getBody():getNode()
		local b = contact:getShapeB():getBody():getNode()
		if a ~= nil and b ~= nil then
			a:setPosition(0, 0)
			b:setPosition(0, 0)
		end
		return true
	end
	local dispatcher = self:getEventDispatcher()
	local contactListener = cc.EventListenerPhysicsContact:create()
	contactListener:registerScriptHandler(onContactBegin, cc.Handler.EVENT_PHYSICS_CONTACT_BEGIN)
	dispatcher:addEventListenerWithSceneGraphPriority(contactListener, self)

11、程序結(jié)束

-- 【方式一】
	cc.Director:getInstance():endToLua()

	-- 【方式二】
	os.exit(0)

12、問(wèn)題集

-- 【敵人管理器】
	-- 不加入層中,好像就調(diào)用不了enemyManager的方法
	self.enemyManager = EnemyManager:create(self)
	self:addChild(self.enemyManager)

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開(kāi)啟,新人活動(dòng)云服務(wù)器買多久送多久。


網(wǎng)站標(biāo)題:Cocos實(shí)戰(zhàn)篇[3.2]——《戰(zhàn)神傳說(shuō)》Lua版-創(chuàng)新互聯(lián)
鏈接分享:http://weahome.cn/article/dgogjh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部