cocos2d学习笔记

最近学习cocos2d,稍微了解了一下cc的元素,但是关系不是很清楚,先研究了一下代码,有个形象的概念。这里写图片描述

代码

require "app/views/GameScene"  
local MainScene = class("MainScene", cc.load("mvc").ViewBase)  
local size = cc.Director:getInstance():getWinSize()  

local isPlaying = false

local cclog = function(...)
    print(string.format(...))
end

function MainScene:onCreate()  
     local layer = MainScene:createLayer()
     self:addChild(layer)  
end  


function MainScene:createLayer()
    local layer = cc.Layer:create()

    --SpriteFrameCache一般用来处理plist文件(这个文件指定了每个独立的精灵在这张“大图”里面的位置和大小),
    --该文件对应一张包含多个精灵的大图,plist文件可以使用TexturePacker制作
    local spriteFrame  = cc.SpriteFrameCache:getInstance()
    spriteFrame:addSpriteFrames("run.plist")

    --从spriteFrame中读取图片,创建背景精灵并设置锚点,加入到层中
    local bg = cc.Sprite:createWithSpriteFrameName("background.png")
    bg:setPosition(cc.p(size.width/2, size.height/2))
    layer:addChild(bg)

    --创建默认的图片精灵并设置锚点,加入到层中
    local sprite = cc.Sprite:createWithSpriteFrameName("h1.png")
    sprite:setPosition(cc.p(size.width/2, size.height/2))
    layer:addChild(sprite)

    --toggle按钮菜单。
    local goSprite = cc.Sprite:createWithSpriteFrameName("go.png")
    local stopSprite = cc.Sprite:createWithSpriteFrameName("stop.png")

    --精灵菜单类是MenuItemSprite,图片菜单类是MenuItemImage
    local goToggleMenuItem = cc.MenuItemSprite:create(goSprite, goSprite)
    local stopToggleMenuItem = cc.MenuItemSprite:create(stopSprite, stopSprite)
    local toggleMenuItem = cc.MenuItemToggle:create(goToggleMenuItem, stopToggleMenuItem)

    --设置按钮的锚点--OpenGL坐标系:该坐标系原点在屏幕左下角,x轴向右,y轴向上
    --先获得屏幕坐标,在调用convertToGL转成OpenGl坐标系
    toggleMenuItem:setPosition(cc.Director:getInstance():convertToGL(cc.p(730, 540)))

    local mn = cc.Menu:create(toggleMenuItem)
    mn:setPosition(cc.p(0, 0))
    --添加到层中
    layer:addChild(mn)

    local function OnAction(menuItemSender)
        if not isPlaying then
            --///////////////动画开始//////////////////////
            local animation = cc.Animation:create() -- 创建动画
            for i=1,4 do
                local frameName = string.format("h%d.png",i)
                cclog("frameName = %s",frameName)              
                local spriteFrame = spriteFrame:getSpriteFrameByName(frameName)
                animation:addSpriteFrame(spriteFrame) -- 向动画添加图片
            end
            animation:setDelayPerUnit(0.15)           --设置动画帧率
            animation:setRestoreOriginalFrame(true)    --设置动画播放完毕后是否回到第一帧
            local action = cc.Animate:create(animation)  --用动画创建精灵动作
            sprite:runAction(cc.RepeatForever:create(action))  --让精灵来完成动作
            --//////////////////动画结束///////////////////
            isPlaying = true
        else
            sprite:stopAllActions()
            isPlaying = false
        end
    end

    toggleMenuItem:registerScriptTapHandler(OnAction)-- 按钮事件,将回掉函数注册到按钮
    return layer
end

return MainScene

知识点总结

一、sprite创建三个步骤:加载图片,设置锚点,添加到图层。
二、动画创建过程:创建动画对象,添加图片,设置帧率,创建动作,精灵完成动作。

猜你喜欢

转载自blog.csdn.net/mofiu/article/details/78599915
今日推荐