【Cocos2D + Lua】ClippingNode制作動(dòng)畫(huà)

今天熟悉了Lua的語(yǔ)法,同時(shí)學(xué)習(xí)了Cocos中ClippingNode的使用,這個(gè)節(jié)點(diǎn)通常是用來(lái)做動(dòng)畫(huà)的,示例如下:

clip.gif

開(kāi)始

下面就讓我們來(lái)利用ClippingNode來(lái)作出一個(gè)類(lèi)似上面的這種效果!
代碼參考如下所示:

function init_element()
    self._layer = cc.LayerColor:create(cc.c3b(0,255,0))
    local scale = uiex.ui_fit:min_scale()
    self._layer:setScale(scale)
    self._layer:setAnchorPoint(cc.p(0,0))
    self:addChild(self._layer)

    local stencil = display.newSprite("image/login/earth_mask.png")
    local clip = cc.ClippingNode:create(stencil)
    clip:move(display.cx, display.cy)
    clip:setAlphaThreshold(0.1)

    local logo = display.newSprite("HelloWorld.png")
    logo:setAnchorPoint(0,0)
    local logoSize = logo:getContentSize()


    logo:runAction( cc.RepeatForever:create(
        cc.Sequence:create(
            cc.MoveBy:create(5, cc.p(-logoSize.width*2,0)),
            cc.CallFunc:create(
                function(  )
                    logo:setPositionX(0)
                end)
            )))

    clip:addChild(logo)
end

接著

其實(shí)這個(gè)動(dòng)畫(huà)的原理如下:

想象有一個(gè)洞,然后有一塊內(nèi)容不斷的移動(dòng)同時(shí)經(jīng)過(guò)這個(gè)洞,這樣也就有了上述的動(dòng)畫(huà)效果。

上述代碼中有兩個(gè)主要的Node,一個(gè)是我們利用stencil創(chuàng)建的ClippingNode,這個(gè)就是一個(gè)洞;然后我們創(chuàng)建了logo,這就是內(nèi)容了;下面對(duì)logo進(jìn)行runAction,也就是相當(dāng)于不斷的移動(dòng)內(nèi)容;最后需要將內(nèi)容作為子節(jié)點(diǎn)加入到洞中,這樣動(dòng)畫(huà)就完成了。

尾巴

Lua寫(xiě)Cocos真心蛋疼,尤其是我這樣的初學(xué)者??

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容