cocos2d-x 平时小例子(2)和.bat文件应用

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 ,false)//http://blog.csdn.net/saint_/article/details/46821541
  --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.处理文件的使用

学习网址1
学习网址2(这个比较全)
学习网址3(xcopy的使用介绍)
学习网址4(局域网文件传输)注:在复制文件的时候如果报不能进行循环复制则是因为文件子集不能复制在文件的父集上
学习网址5(for循环的例子)

::注意编码格式最好使用NotePad++ 来写并将格式转化为ANSI编码否则中文会出现问题
ping sz.tencent.com > 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

7.cocos2d-lua (quick)文档和android studio环境安装

文档
环境配置

你可能感兴趣的:(cocos2d-x 平时小例子(2)和.bat文件应用)