190行LUA撸撸撸了一天。
local MainScene = class("MainScene", cc.load("mvc").ViewBase)
local bg
local bg1
local bgWidth = 0
local bgHeight = 0
local bgMoveSpeed = 2.5
local sPlayerBody
local iPlayerWidth
local iPlayerHeight
local iPlayerBlood
local canMove
local PlayerBullets = {}
local BulletNumber = 1
local BulletTimeSince = 0.5
local EnemyTimeSince = 1
-- local Enemy = {}
local Enemys = {}
local RandomPoints = {}
function MainScene:onCreate()
-- add background image
-- ("")
-- :move()
-- :addTo(self)
-- -- add HelloWorld label
-- :createWithSystemFont("Hello World", "Arial", 40)
-- :move(, + 200)
-- :addTo(self)
local function initBg()
bg = :create("img_bg_1.jpg")
bgWidth = bg:getTexture():getPixelsWide()
bgHeight = bg:getTexture():getPixelsHigh()
bg:setAnchorPoint(0,0)
bg:setPosition(0,0)
self:addChild(bg)
bg1 = :create("img_bg_2.jpg")
self:addChild(bg1)
bg1:setAnchorPoint(0,0)
bg1:setPosition(0,bgHeight)
end
local function UpdateBackGround()
if bg:getPositionY() < -bgHeight then
bg:setPositionY(bgHeight)
end
if bg1:getPositionY() < -bgHeight then
bg1:setPositionY(bgHeight)
end
bg:setPositionY(bg:getPositionY()-bgMoveSpeed)
bg1:setPositionY(bg1:getPositionY()-bgMoveSpeed)
end
local function CreatePlayer()
sPlayerBody = :create("")
sPlayerBody:setAnchorPoint(0.5,0.5)
iPlayerWidth = sPlayerBody:getTexture():getPixelsWide()
iPlayerHeight = sPlayerBody:getTexture():getPixelsHigh()
sPlayerBody:setPosition(( - iPlayerWidth)/2,iPlayerHeight)
self:addChild(sPlayerBody)
iPlayerBlood = 100
end
local function CreateTouchListener()
local listenner = :create()
listenner:setSwallowTouches(true)
listenner:registerScriptHandler(function(touch, event)
-- print(("Paddle::onTouchBegan id = %d, x = %f, y = %f", touch:getId(), touch:getLocation().x, touch:getLocation().y))
if (sPlayerBody:getBoundingBox(),touch:getLocation()) then
canMove = true
-- print("Click player.")
end
return true
end,cc.Handler.EVENT_TOUCH_BEGAN )
listenner:registerScriptHandler(function(touch, event)
-- print(("Paddle::onTouchMoved id = %d, x = %f, y = %f", touch:getId(), touch:getLocation().x, touch:getLocation().y))
if canMove then
sPlayerBody:setAnchorPoint(0.5,0.5)
sPlayerBody:setPosition(touch:getLocation())
end
end,cc.Handler.EVENT_TOUCH_MOVED )
listenner:registerScriptHandler(function(touch, event)
-- print(("Paddle::onTouchEnded id = %d, x = %f, y = %f", touch:getId(), touch:getLocation().x, touch:getLocation().y))
canMove = false
end,cc.Handler.EVENT_TOUCH_ENDED )
local eventDispatcher = self:getEventDispatcher()
eventDispatcher:addEventListenerWithSceneGraphPriority(listenner, self)
end
local function CreatePlayerBullet()
local cache = :getInstance()
cache:addSpriteFrames("")
local sprite = :createWithSpriteFrameName("bullet_1.png")
sprite:setPosition((sPlayerBody:getPositionX(), sPlayerBody:getPositionY() + iPlayerHeight / 2))
self:addChild(sprite)
(PlayerBullets,1,sprite)
end
local function CreateEnemy()
local sprite = :create("")
local randNum = math.random( (RandomPoints))
sprite:setPosition(RandomPoints[randNum])
self:addChild(sprite)
local Enemy= {}
= sprite
= 100
= math.random(5)
-- sprite:runAction(:create( :create(animation) ) )
-- sprite:runAction(:create(:create(10, 360) ) )
(Enemys,1,Enemy)
end
local function DestoryEnemy(Enemy)
local function Delete(sender)
for k,v in pairs(Enemys) do
if v==Enemy then
(Enemys,k)
self:removeChild(,true)
end
end
end
local animFrames = {}
local cache = :getInstance()
cache:addSpriteFrames("wsparticle_p01.plist")
for i = 1, 8 do
local frame = cache:getSpriteFrame(string.format("a_00%",i))
-- print(frame)
animFrames[i] = frame
end
local animation = :createWithSpriteFrames(animFrames, 0.3)
-- :runAction(:create(animation))
local animationOver = :create(Delete)
:runAction(:create(:create(animation),animationOver))
end
local function UpdatePlayerBullet()
for k,v in pairs(PlayerBullets) do
for k1,v1 in pairs(Enemys) do
if (Enemys[k1].Sp:getBoundingBox(),(PlayerBullets[k]:getPositionX(),PlayerBullets[k]:getPositionY())) then
DestoryEnemy(Enemys[k1])
end
end
end
for k,v in pairs(PlayerBullets) do
if v:getPositionY() > then
(PlayerBullets,k)
self:removeChild(v,true)
end
end
for k,v in pairs(PlayerBullets) do
v:setPositionY(v:getPositionY() + bgMoveSpeed*2)
end
end
local function UpdateEnemy()
for k,v in pairs(Enemys) do
:setPositionY(:getPositionY() - )
end
end
local function GenRandomPoint()
for i = 0,3 do
(RandomPoints,1,(i*179,))
end
end
initBg()
:getInstance():getScheduler():scheduleScriptFunc(UpdateBackGround, 0, false)
CreatePlayer()
CreateTouchListener()
CreatePlayerBullet()
:getInstance():getScheduler():scheduleScriptFunc(CreatePlayerBullet, BulletTimeSince, false)
:getInstance():getScheduler():scheduleScriptFunc(UpdatePlayerBullet, 0, false)
GenRandomPoint()
:getInstance():getScheduler():scheduleScriptFunc(CreateEnemy, EnemyTimeSince, false)
:getInstance():getScheduler():scheduleScriptFunc(UpdateEnemy, 0, false)
end
return MainScene