1.cocostudio导出的二进制文件的使用
(1)动画:
ArmatureDataManager::getInstance()-addArmatureFileInfo("armature/bear.csb");
// 直接加载
ArmatureDataManager::getInstance()->addArmatureFileInfoAsync
("armature/bear.csb", this, schedule_selector(TestLoadFromBinary::dataLoaded))
//异步加载
(2)场景:
SceneReader::getInstance()->createNodeWithSceneFile(“scene.csb”);
(3)UI 的有点区别:
cocostudio::GUIReader::getInstance()->widgetFromBinaryFile
("cocosui/UIEditorTest/UISlider_Editor/ui_slider_editor_1.csb")
(4)还可以使用CSLoader(下面是从csb文件中获取子对象)
--(从文件中获取背景图)
local tempCsb = cc.CSLoader:createNode("csb/XLoadingLayer.csb")
local bgNode = tempCsb:getChildByName("Bg")
bgNode:retain()
bgNode:removeFromParent(true)
self:addChild(bgNode)
bgNode:release()
bgNode:setContentSize(screenSize)
2.多点触摸
-- 创建多点触摸事件
-- @function createTouchMore
function MainScene:createTouchMore()
-- 建立一个层,并添加一个精灵
local layer = cc.Layer:create()
local sprite = cc.Sprite:create("tank_p_d.png")
sprite:setPosition(cc.p(display.cx, display.cy))
layer:addChild(sprite)
layer:addTo(self)
local function onTouchesBegin(touches, event)
local node = event:getCurrentTarget()
-- 如果监听事件传入的第二个参数是layer,则getCurrentTarget则会获取layer这个对象,反之的话如果第二个参数是sprite,则会获取精灵这个参数
print("debug".."okokokokokok"..node:getContentSize().height.."+"..node:getContentSize().width)
return ture
end
local function onTouchesMove(touches, event)
end
local function onTouchesEnd(touches, event)
end
local function onTouchesCancelled(touches, event)
end
-- 设置事件监听器
local listener = cc.EventListenerTouchAllAtOnce:create()
listener:registerScriptHandler(onTouchesBegin, cc.Handler.EVENT_TOUCHES_BEGAN )
listener:registerScriptHandler(onTouchesMove, cc.Handler.EVENT_TOUCHES_MOVED)
listener:registerScriptHandler(onTouchesEnd, cc.Handler.EVENT_TOUCHES_ENDED)
listener:registerScriptHandler(onTouchesCancelled, cc.Handler.EVENT_TOUCHES_CANCELLED)
-- 增加监听器
local eventDispatcher = layer:getEventDispatcher()
-- 对当前层添加监听事件
eventDispatcher:addEventListenerWithSceneGraphPriority(listener, sprite)
-- 下面是cocos2d-lua中的用法(好像很简单的样子)
--layer:registerScriptTouchHandler(onTouchesBegin, true, 0
--layer:onTouch(onTouchesBegin, true, false)
end
3.键盘监听事件
-- 注册键盘监听事件
-- @function createKeyboard
function MainScene:createKeyboard()
-- 键盘监听的回调函数
local function onKeyPressed(keyCode, event)
local buf1 = string.format("%d键按下", keyCode)
print(buf1)
end
local function onKeyReleased(keyCode, event)
local buf2 = string.format("%d键抬起", keyCode)
print(buf2)
end
local layer = cc.Layer:create()
local label = cc.Label:createWithSystemFont("请按键盘", "Arial", 30)
label:setPosition(cc.p(display.cx, display.cy))
layer:addChild(label)
layer:addTo(self)
-- 创建监听器
local listener = cc.EventListenerKeyboard:create()
listener:registerScriptHandler(onKeyPressed, cc.Handler.EVENT_KEYBOARD_PRESSED)
listener:registerScriptHandler(onKeyReleased, cc.Handler.EVENT_KEYBOARD_RELEASED)
-- 添加监听器
local eventDispatcher = layer:getEventDispatcher()
eventDispatcher:addEventListenerWithSceneGraphPriority(listener, layer)
end
4.创建瓦片地图
-- 创建瓦片地图
-- @function createTMX
function MainScene:createTMX()
-- 创建一个新层
local layer = display.newLayer()
layer:addTo(self)
-- 注意文件路径,并且文件名不能带-
local map = ccexp.TMXTiledMap:create("map.tmx")
map:addTo(layer)
map:setPosition(cc.p(0, 0))
local bgLayer = map:getLayer("background")
local title = bgLayer:getTileAt(cc.p(5, 26))
bgLayer:removeChild(title, true)
-- 添加精灵到层中
local sprite = display.newSprite("tank_p_r.png")
sprite:setPosition(cc.p(100, display.cy))
sprite:addTo(layer)
-- 在地图中移除一个位置
sprite:runAction(cc.MoveTo:create(4, cc.p(900, display.cy)))
end
5.自定义摄像机
-- 自定义摄像机
-- @function createCamera
function MainScene:createCamera()
-- 新建层
local layer = display.newLayer()
layer:addTo(self)
-- 添加精灵到层中
local sprite = display.newSprite("tank_p_r.png")
sprite:setPosition(cc.p(100, display.cy))
sprite:addTo(layer)
sprite:runAction(cc.MoveTo:create(4, cc.p(900, display.cy)))
local label = cc.Label:createWithSystemFont("Camera", "Arial", 40)
:move(display.cx, display.cy)
:addTo(layer)
-- 添加相机
local camera = cc.Camera:createOrthographic(display.width, display.height, 0, 1)
camera:setCameraFlag(cc.CameraFlag.USER1)
layer:addChild(camera)
-- 必须是场景?(设置mask为了办对是否跟随摄像机移动)
self:setCameraMask(2)
label:setCameraMask(1)
-- 回调函数
local function cameramove(dt)
camera:setPositionX(sprite:getPositionX() - 100)
print("@function cameramove".."###".."271".."###"..sprite:getPositionX())
print("@function cameramove".."###".."272".."###"..camera:getPositionX())
end
-- 创建调度者
local schedule = cc.Director:getInstance():getScheduler()
schedule:scheduleScriptFunc(cameramove, 0.01, false)
end
6.处理文件的使用
::注意编码格式最好使用NotePad++ 来写并将格式转化为ANSI编码否则中文会出现问题
ping > a.txt
dir c:\ >> a.txt
ping 192.168.0.6 >> a.txt
echo 111 >> a.txt
find "111" a.txt
::if exist *.png del *.png
::for %i in (E:\bat\*.png) do xcopy %i E:\bat\123 /s /h
::for %%i in (E:\bat\*.png) do echo %%i
for %%i in (E:\bat\*.png) do if exist %%i xcopy %%i D:\
::net use \\192.168.0.6
::net use \\192.168.0.6\*****\******
::dir \\192.168.0.6\*****\******
::xcopy \\192.168.0.6\*****\******\*.* E:\bat /s /h
::start explorer d:\
pause