cocos2d学习笔记

这篇博客记录了作者学习cocos2d的过程,通过研究代码对cocos2d的元素有了初步认识,总结了相关知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近学习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创建三个步骤:加载图片,设置锚点,添加到图层。
二、动画创建过程:创建动画对象,添加图片,设置帧率,创建动作,精灵完成动作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值