• CCSprite 实现书本翻页效果(quick cocos 2dx)


    网上一查,都是用场景切换,我擦。。这么不优雅,不节约内存的方式。

    只是去小卖铺买点酱油,结果动用了飞机去买。。。

    代码实现了,主要是精灵的一个动作:

      1 local MainScene = class("MainScene", function()
      2     return display.newScene("MainScene")
      3 end)
      4 
      5 local firstPage
      6 local secondPage
      7 local layerOrder = 200
      8 
      9 local sharedScheduler = CCDirector:sharedDirector():getScheduler()
     10 
     11 function MainScene:ctor()
     12     --[[
     13     --这里注销的代码是当点击屏幕时,进行的翻页。
     14     self.layer = display.newLayer()
     15     self.layer:setTouchEnabled(true)
     16     
     17     self.layer:addTouchEventListener(function(event,x,y)
     18         self.layer:setTouchEnabled(false)
     19         if CommonUtils.curPage <= #CommonUtils.pagePathTable then    
     20             if CommonUtils.curPage % 2 == 1 then
     21                 layerOrder = layerOrder - 1
     22                 secondPage = display.newSprite("res/"..CommonUtils.pagePathTable[CommonUtils.curPage], display.cx, display.cy)
     23                 self:addChild(secondPage,layerOrder)
     24 
     25                 CommonUtils.curPage = CommonUtils.curPage + 1
     26                 local seq = CCSequence:createWithTwoActions(CCPageTurn3D:create(1, CCSizeMake(15,10)),CCCallFunc:create(function()
     27                         firstPage:removeSelf(true)
     28                         self.layer:setTouchEnabled(true)
     29                     end))
     30                 firstPage:runAction(seq)
     31             else
     32                 layerOrder = layerOrder - 1
     33                 firstPage = display.newSprite("res/"..CommonUtils.pagePathTable[CommonUtils.curPage], display.cx, display.cy)
     34                 self:addChild(firstPage,layerOrder)
     35 
     36                 CommonUtils.curPage = CommonUtils.curPage + 1
     37                 local seq = CCSequence:createWithTwoActions(CCPageTurn3D:create(1, CCSizeMake(15,10)),CCCallFunc:create(function()
     38                         secondPage:removeSelf(true)
     39                         self.layer:setTouchEnabled(true)
     40                     end))
     41                 secondPage:runAction(seq)
     42             end
     43         end
     44     end)
     45 
     46     self:addChild(self.layer)
     47 ]]
     48     --将配置文件读入,并且初始化
     49     CommonUtils.readFile()
     50     firstPage = display.newSprite("res/"..CommonUtils.pagePathTable[CommonUtils.curPage], display.cx, display.cy)
     51     CommonUtils.curPage = CommonUtils.curPage + 1
     52     self:addChild(firstPage,layerOrder)
     53 
     54     
     55 end
     56 
     57 function MainScene:onEnter()
     58     if device.platform == "android" then
     59         -- avoid unmeant back
     60         self:performWithDelay(function()
     61             -- keypad layer, for android
     62             local layer = display.newLayer()
     63             layer:addKeypadEventListener(function(event)
     64                 if event == "back" then app.exit() end
     65             end)
     66             self:addChild(layer)
     67 
     68             layer:setKeypadEnabled(true)
     69         end, 0.5)
     70     end 
     71     sharedScheduler:scheduleScriptFunc(function()
     72         self:turnPage()
     73     end, 1.2, false)
     74 end
     75 
     76 function MainScene:turnPage()
     77     if CommonUtils.curPage <= #CommonUtils.pagePathTable then    
     78         if CommonUtils.curPage % 2 == 0 then
     79             layerOrder = layerOrder - 1
     80             secondPage = display.newSprite("res/"..CommonUtils.pagePathTable[CommonUtils.curPage], display.cx, display.cy)
     81             self:addChild(secondPage,layerOrder)
     82 
     83             CommonUtils.curPage = CommonUtils.curPage + 1
     84             local seq = CCSequence:createWithTwoActions(CCPageTurn3D:create(1, CCSizeMake(15,10)),CCCallFunc:create(function()
     85                     firstPage:removeSelf(true)
     86                 end))
     87             firstPage:runAction(seq)
     88         else
     89             layerOrder = layerOrder - 1
     90             firstPage = display.newSprite("res/"..CommonUtils.pagePathTable[CommonUtils.curPage], display.cx, display.cy)
     91             self:addChild(firstPage,layerOrder)
     92 
     93             CommonUtils.curPage = CommonUtils.curPage + 1
     94             local seq = CCSequence:createWithTwoActions(CCPageTurn3D:create(1, CCSizeMake(15,10)),CCCallFunc:create(function()
     95                     secondPage:removeSelf(true)
     96                 end))
     97             secondPage:runAction(seq)
     98         end
     99     end
    100 end
    101 
    102 function MainScene:onExit()
    103 end
    104 
    105 return MainScene

    。over~

  • 相关阅读:
    Spring中Bean及@Bean的理解
    Visual Studio(VS)秘钥集合
    PLC不能初始化问题
    【原创】C# API 未能创建 SSL/TLS 安全通道 问题解决
    【原创】XAF CriteriaOperator 使用方式汇总
    【原创】.Net WebForm Calendar 日历控件常用方法
    【原创】XAF常用属性字段设置
    【记录】Windows 操作系统常用快捷命令
    【XAF】常见错误以及对应解决方法
    【原创】XAF ITreeNode+NonPersistent 使用方式
  • 原文地址:https://www.cnblogs.com/vokie/p/3689006.html
Copyright © 2020-2023  润新知