local MainScene = class("MainScene", function()
return display.newScene("MainScene")
end)
--测试图片随另一个图片动画
function MainScene:Test01()
--设置背景色为天蓝色
display.newColorLayer(cc.c4b(127,255,0,255)):addTo(self)
--创建一个layout,然后和其相关的其他精灵,随着他的出现而消失,随着他的消失而出现
--循环创建一组精灵
local spTb={}
local pt=cc.p(display.cx-300,50)
for i=1,5 do
-- 左对齐,并且多行文字顶部对齐
local label = display.newTTFLabel({
text = tostring(i),
font = "Arial",
size = 30,
color = cc.c3b(255, 0, 0), -- 使用纯红色
align = cc.TEXT_ALIGNMENT_CENTER,
valign = cc.VERTICAL_TEXT_ALIGNMENT_CENTER,
dimensions = cc.size(100, 50)
})
pt.x=pt.x+100
local tmpSp=display.newSprite("img1.png"):addTo(self,10,i):pos(pt.x,pt.y):add(label,10)
table.insert(spTb,tmpSp)
end
--创建一个button
local btn=cc.ui.UIPushButton.new("img3.png")
:align(display.right, display.right - 100, display.bottom + 50)
:addTo(self)
local spCount=#spTb
btn:onButtonClicked(function()
print("i was touched")
if btn:getPositionX()<display.right - 100 then--该回来了
-- btn:moveBy(1.5, 200, 0)
btn:setTouchEnabled(false)
transition.execute(btn, cc.MoveBy:create(1.5,cc.p(200,0)), {
easing = "exponentialOut",
onComplete = function()
btn:setTouchEnabled(true)
end,
})
print("-----")
--同时,让序列精灵退出
for k,v in pairs(spTb) do
transition.execute(v, cc.MoveBy:create(0.5,cc.p(0,100)), {
delay = k*0.2,
easing = "exponentialOut",
})
end
else--该出去了
-- btn:moveBy(1.5, -200, 0)
btn:setTouchEnabled(false)
transition.execute(btn, cc.MoveBy:create(1.5,cc.p(-200,0)), {
easing = "exponentialOut",
onComplete = function()
btn:setTouchEnabled(true)
end,
})
for k,v in pairs(spTb) do
transition.execute(v, cc.MoveBy:create(0.5,cc.p(0,-100)), {
delay = (spCount-k)*0.2,
easing = "exponentialOut",
})
end
end
end)
end
--传入btn,传入控制对象,传入要弹出的方向,left,right,down,up
function MainScene:func1(btn,node,direction )
if not btn or not node then
return false
end
if direction==nil then
direction="right"
end
btn.scaleStatus=false
btn:onButtonClicked(function()
--然后执行缩放动画
transition.execute(node,transition.scaleTo(node, btn.scaleStatus and {scale=0.1,time=0.2} or {scale=1,time=0.2}),
{
onComplete = function()
if btn.scaleStatus then
btn.scaleStatus=false
else
btn.scaleStatus=true
end
print("move completed")
end,
}
)
end)
end
--点击一个按钮,弹出一个层
function MainScene:Test02()
--创建一个按钮
local btn=cc.ui.UIPushButton.new("img1.png")
:align(display.CENTER, display.CENTER, display.CENTER)
:addTo(self)
:pos(display.right-100,display.cy)
--创建一个层,
-- local node=display.newNode():addTo(self)
-- :pos(display.cx,display.cy)
-- node:setAnchorPoint(cc.p(0,0.5))
local ly=require("src.app.scenes.myTest").new()
:scale(0.1)
:addTo(self)
:pos(display.left,display.cy)
ly:setAnchorPoint(cc.p(0,1))
ly:setTouchEnabled(false)
ly:setContentSize(cc.size(300,300))
self:func1(btn, ly)
end
function MainScene:CellMove(infoTb,distance,time,isIn)
if not infoTb then
return
end
local moveTb=cc.p(0,0)
if isIn and infoTb.direction=="left" then
moveTb=cc.p(distance,0)
elseif isIn and infoTb.direction=="right" then
moveTb=cc.p(-distance,0)
elseif isIn and infoTb.direction=="down" then
moveTb=cc.p(0,distance)
elseif isIn and infoTb.direction=="up" then
moveTb=cc.p(0,-distance)
elseif not isIn and infoTb.direction=="left" then
moveTb=cc.p(-distance,0)
elseif not isIn and infoTb.direction=="right" then
moveTb=cc.p(distance,0)
elseif not isIn and infoTb.direction=="down" then
moveTb=cc.p(0,-distance)
elseif not isIn and infoTb.direction=="up" then
moveTb=cc.p(0,distance)
end
for k,v in pairs(infoTb.nodes) do
v:moveBy(0.2, moveTb.x, moveTb.y)
end
end
--传入上下左右的表,传入移动距离,传入时间,传入进入还是退出
function MainScene:func2(infoTb,distance,time,isIn)
for k,v in pairs(infoTb) do
self:CellMove(v,distance,time,isIn)
end
end
--上下左右进入退出
function MainScene:Test03()
local topTb={}
for i=0,5 do
local sp=display.newSprite("img1.png", display.cx-200+i*100, display.top-50):addTo(self)
table.insert(topTb,sp)
end
local bottomTb={}
for i=0,5 do
local sp=display.newSprite("img1.png", display.cx-200+i*100, display.bottom+50):addTo(self)
table.insert(bottomTb,sp)
end
local leftTb={}
for i=0,5 do
local sp=display.newSprite("img1.png", display.left+50, display.cy-200+i*100):addTo(self)
table.insert(leftTb,sp)
end
local rightTb={}
for i=0,5 do
local sp=display.newSprite("img1.png", display.right-50, display.cy-200+i*100):addTo(self)
table.insert(rightTb,sp)
end
local infoTb={
{direction="left",nodes=leftTb},
{direction="right",nodes=rightTb},
{direction="up",nodes=topTb},
{direction="down",nodes=bottomTb}
}
local btn=cc.ui.UIPushButton.new("img3.png")
:align(display.right, display.CENTER, display.CENTER)
:addTo(self)
:pos(display.cx, display.cy)
btn.isMoveOut=false
btn:onButtonClicked(
function()
self:func2(infoTb, 200, 0.2, btn.isMoveOut)
btn.isMoveOut=not btn.isMoveOut
end
)
end
--序列进入,序列消失
function MainScene:inOrOut(infoTb,isIn)
if not infoTb then
return
end
if isIn then
for k,v in pairs(infoTb) do
transition.execute(v,cc.FadeIn:create(0.2),{delay=k*0.2})
end
else
local count=#infoTb
for k,v in pairs(infoTb) do
transition.execute(v,cc.FadeOut:create(0.2),{delay=(count-k)*0.2})
end
end
end
--序列进入,序列消失
function MainScene:Test04()
--创建序列精灵
local infoTb={}
for i=1,6 do
local sp=display.newSprite("img1.png",display.cx,display.top-i*100):addTo(self)
table.insert(infoTb,sp)
end
local btn=cc.ui.UIPushButton.new("img3.png")
:align(display.right, display.CENTER, display.CENTER)
:addTo(self)
:pos(display.cx-200, display.cy)
btn.isShow=true
btn:onButtonClicked(
function()
self:inOrOut(infoTb,not btn.isShow)
btn.isShow=not btn.isShow
end
)
end
--随机拍照实现
function MainScene:randomTakePhoto(ptTb,sp)
local seqAction=cc.Sequence:create(
cc.CallFunc:create(function()
sp:setPosition(ptTb[math.random(1,#ptTb)])
sp:setScale(0.01)
sp:setVisible(true)
end),
cc.CallFunc:create(function()
-- sp:runAction(rotateAction)
sp:scaleTo(0.5,1)
sp:rotateBy(0.5, 360)
-- sp:runAction(scaleToAction)
end),
cc.DelayTime:create(0.3),
cc.CallFunc:create(function()
-- sp:runAction(revAction)
sp:scaleTo(0.5,0.01)
sp:rotateBy(0.5,360)
-- sp:runAction(cc.ScaleTo:create(0.5,0.01))
end),
cc.DelayTime:create(0.3),
cc.CallFunc:create(function()
sp:setVisible(false)
end)
)
sp:runAction(seqAction)
end
--随机拍照
function MainScene:Test05()
math.randomseed(os.time())
local ptTb={}
for i=1,100 do
local pt=cc.p(display.width*math.random(),display.height*math.random())
table.insert(ptTb,pt)
end
local sp=display.newSprite("img1.png"):addTo(self):pos(300, 300)
local scheduler = require(cc.PACKAGE_NAME .. ".scheduler")
scheduler.scheduleGlobal(function(dt)
self:randomTakePhoto(ptTb,sp)
end,2)
end
--提示
--圆环滚动
function MainScene:Test06()
local function scrollViewListener(event)
print("the event name is ----- "..event.name)
end
local ly=display.newColorLayer(cc.c4b(255,255,0,255)):addTo(self)
--创建一个滚动层
local scrollView=cc.ui.UIScrollView.new({viewRect =cc.rect(0,0,5000,100)})
:setDirection(cc.ui.UIScrollView.DIRECTION_HORIZONTAL)
:onScroll(handler(self,scrollViewListener))
:addTo(ly)
:pos(display.left, display.cy)
scrollView:setTouchEnabled(true)
local mainNode=display.newNode()
scrollView:addScrollNode(mainNode)
for i=1,4 do
local sp=display.newSprite("img1.png",i*100,50)
mainNode:addChild(sp, 100)
end
end
function MainScene:scrollListener(event)
print("TestUIScrollViewScene - scrollListener:" .. event.name)
end
--列表的飞入飞出
function MainScene:func07(infoTb,distance,isGetOut)
local addPt=cc.p(distance,50)
local count=#infoTb
for key, var in ipairs(infoTb) do
local ptNormal=cc.p(0,0)
ptNormal.x,ptNormal.y=var:getPosition()
local ptNow=cc.p(ptNormal.x+addPt.x,ptNormal.y+addPt.y)
var:setVisible(true)
if isGetOut then
transition.execute(var,cc.MoveTo:create(0.5,ptNow),{delay=(count-key)*0.3,onComplete=function() print(" over-----") end})
else
var:setPosition(ptNow)
transition.execute(var,cc.MoveTo:create(0.5,ptNormal),{delay=(key-1)*0.3,onComplete=function() print(" over-----") end})
end
end
end
--列表飞入,飞出
function MainScene:Test07( )
local team1={}
for i=1,10 do
local sp=display.newSprite("img1.png",200,800-i*100):addTo(self)
sp:setVisible(false)
table.insert(team1,sp)
end
local team2={}
for i=1,10 do
local sp=display.newSprite("img3.png",500,800-i*100):addTo(self)
sp:setVisible(false)
table.insert(team2,sp)
end
local btn=cc.ui.UIPushButton.new("img3.png")
:align(display.CENTER, display.right - 100, display.bottom + 120)
:addTo(self)
:pos(display.cx,display.cy)
btn.isClicked=true
btn:onButtonClicked(
function()
if btn.isClicked then
self:func07(team1, -300)
self:func07(team2, 300)
else
self:func07(team1, -300,true)
self:func07(team2, 300,true)
end
btn.isClicked=not btn.isClicked
end
)
end
function MainScene:ctor()
cc.ui.UILabel.new({
UILabelType = 2, text = "Hello, World", size = 64})
:align(display.CENTER, display.cx, display.cy)
:addTo(self)
-- self:Test01()
-- self:Test02()
-- self:Test03()
-- self:Test04()
-- self:Test05()
-- self:Test06()
self:Test07()
-- self:Test08()
end
function MainScene:onEnter()
end
function MainScene:onExit()
end
return MainScene