用quick制作仿PkrCruncher
来源:互联网 发布:域名whois反查 编辑:程序博客网 时间:2024/06/05 02:48
将自己写的一段代码贴上来,抽取的是业务逻辑层,结构比较完整,我将太具体的东西都删除掉了。里面有tableview,帧动画,替换精灵图片,获取系统时间。
local CalWinRateScene = class("CalWinRateScene", function() return display.newScene("CalWinRateScene") end)function CalWinRateScene:ctor() self.layer = display.newLayer() self:addChild(self.layer) -- 生成数据 self:createData() -- 添加内容和标题 self:addContent() self:addTopTitle() self:addTable() -- 默认选中状态为A self.layer:getChildByTag(44):getChildByTag(1111):getChildByTag(22):setEnabled(false) -- 默认焦点在6号位置 self.layer:getChildByTag(1000):cellAtIndex(0):getChildByTag(1):setVisible(true)endfunction CalWinRateScene:addTopTitle() require("app.Utils.GeneralSceneFactory").new({parentNode = self.layer, title="概率计算器", backFunction = function() end})endfunction CalWinRateScene:runFanPaiAnimation(node, calBackFunc, others) CCDirector:sharedDirector():getActionManager():removeAllActionsFromTarget(node) -- 进入的时候加载帧动画 local sharedSpriteFrameCache = CCSpriteFrameCache:sharedSpriteFrameCache() local animation = display.newAnimation({ sharedSpriteFrameCache:spriteFrameByName(others.beginCard), sharedSpriteFrameCache:spriteFrameByName("animation1.png"), sharedSpriteFrameCache:spriteFrameByName("animation2.png"), sharedSpriteFrameCache:spriteFrameByName("animation3.png"), sharedSpriteFrameCache:spriteFrameByName("animation4.png"), sharedSpriteFrameCache:spriteFrameByName("animation5.png"), sharedSpriteFrameCache:spriteFrameByName(others.endCard)}, 0.04) local animate = CCAnimate:create(animation) local func = CCCallFuncN:create(calBackFunc) local array = CCArray:create() array:addObject(func) array:addObject(animate) node:runAction(CCSequence:create(array))endfunction CalWinRateScene:runGaiPaiAnimation(node, callBackFunc, others)end-- 设置选中之后图标和提示文字的颜色function CalWinRateScene:setColorSelect(index) local sharedSpriteFrameCache = CCSpriteFrameCache:sharedSpriteFrameCache() local frame = sharedSpriteFrameCache:spriteFrameByName("3hua0" .. 1+index .. ".png") self.layer:getChildByTag(44):getChildByTag(101+index):setColor(ccc3(163, 163, 163)) self.layer:getChildByTag(44):getChildByTag(105+index):setDisplayFrame(frame)end-- 还原选中之后的图标和提示文字的颜色function CalWinRateScene:setColorUnselect(index)end-- 判断是否应该,还原相应的花色牌function CalWinRateScene:needRebackColor(info, term) local preString = string.sub(info, 1, 1) local intPrevString = self:stringToInt(info) local nextString = string.sub(term, 1, 1) if preString == nextString then local rebackIndex = math.ceil(intPrevString/13) self.layer:getChildByTag(44):getChildByTag(1111):getChildByTag(rebackIndex+27):setEnabled(true) self:setColorUnselect(rebackIndex-1) endend-- 将选中点得选中状态还原function CalWinRateScene:resetSelectedState(index) if index < 6 then -- 公共牌 self.layer:getChildByTag(44):getChildByTag(1111):getChildByTag(index+32):setEnabled(true) else -- 选手牌 local tempTable = self:getCellIndexAndSpriteIndex(index) local cellIndex = tempTable.cellIndex+1 local spriteIndex = tempTable.spriteIndex local cell = self.layer:getChildByTag(1000):cellAtIndex(cellIndex-1) if cell then cell:getChildByTag(spriteIndex):setVisible(false) end endend-- 添加选中点得状态function CalWinRateScene:addSelectedState(index)end-- 当焦点在tableView中换行时,要做offset的偏移function CalWinRateScene:makeTableViewMove()end-- 获得tableview的列和精灵的相应索引function CalWinRateScene:getCellIndexAndSpriteIndex(index) local cellIndex = math.ceil((index-5)/4) local spriteIndex = cellIndex*4 - (index-5) if spriteIndex == 0 then spriteIndex = 4 else spriteIndex = 4-spriteIndex end local tempTable = {} tempTable.cellIndex = cellIndex-1 tempTable.spriteIndex = spriteIndex return tempTableendfunction CalWinRateScene:addContent() local function selectPocker(text, tag) end local function selectPublicCard(tag) end local function selectDetailCard(tag) end local function resetAll() end -- 撤销操作 local function cancelSelect() end local function addMenuItemClick(tag) if tag == 11 then resetAll() elseif tag == 12 then -- 删除按钮 elseif tag == 13 then -- 增加按钮 elseif tag == 14 then local info = {} info.HoleCard1 = self.playerCards[1][1] info.HoleCard2 = self.playerCards[1][2] info.PublicCards = self.publicCards info.publicCardsCount = 5 info.PlayerCards = {} for i=2,self.playerNum do for j=1,2 do info.PlayerCards[#info.PlayerCards+1] = self.playerCards[i][j] end end info.PlayerCount = self.playerNum -1 local limit = os.time() local date=os.date("%Y-%m-%d %H:%M:%S", limit) print("the begin date is " .. date) local res = BookUtils:calWinRate(json.encode(info)) print("the res is " .. res) res = string.sub(res, 1, #res-1) local resarray = string.split(res, ";") local tableView = self.layer:getChildByTag(1000) table.walk(resarray, function(val, key) local temp = string.sub(val, 1, 6) local numTemp = tonumber(temp) local finalTemp = numTemp*100 .. "%" self.winRate[tonumber(key)] = finalTemp end) local height = tableView:getContentOffset().y tableView:reloadData() tableView:setContentOffset(CCPoint(0, height), false) local limit = os.time() local date=os.date("%Y-%m-%d %H:%M:%S", limit) print("the end date is " .. date) elseif tag == 15 then -- 选牌:8 selectPocker("8", 15) elseif tag == 16 then -- 选牌:7 selectPocker("7", 16) elseif tag == 17 then -- 选牌:6 selectPocker("6", 17) elseif tag == 18 then -- 选牌:5 selectPocker("5", 18) elseif tag == 19 then -- 选牌:4 selectPocker("4", 19) elseif tag == 20 then -- 选牌:3 selectPocker("3", 20) elseif tag == 21 then -- 选牌:2 selectPocker("2", 21) elseif tag == 22 then -- 选牌:A selectPocker("A", 22) elseif tag == 23 then -- 选牌:K selectPocker("K", 23) elseif tag == 24 then -- 选牌:Q selectPocker("Q", 24) elseif tag == 25 then -- 选牌:J selectPocker("J", 25) elseif tag == 26 then -- 选牌:10 selectPocker("10", 26) elseif tag == 27 then -- 选牌:9 selectPocker("9", 27) elseif tag == 28 then -- 区域:黑桃 selectDetailCard(28) elseif tag == 29 then -- 区域:红心 selectDetailCard(29) elseif tag == 30 then -- 区域:草花 selectDetailCard(30) elseif tag == 31 then -- 区域:方片 selectDetailCard(31) elseif tag == 32 then -- 区域:撤销 cancelSelect() elseif tag == 33 then -- 翻牌1 selectPublicCard(33) elseif tag == 34 then -- 翻牌2 selectPublicCard(34) elseif tag == 35 then -- 翻牌3 selectPublicCard(35) elseif tag == 36 then -- 转牌 selectPublicCard(36) elseif tag == 37 then -- 河牌 selectPublicCard(37) end end local fileName = "app.data.WinRateData" require("app.Utils.NodeInflater"):easyRootInflater():inflate(fileName, self.layer) local menuItems = self.layer:getChildByTag(44):getChildByTag(1111):getChildren() for i=1,menuItems:count() do menuItems:objectAtIndex(i-1):registerScriptTapHandler(addMenuItemClick) endendfunction CalWinRateScene:createData() -- 公共牌 self.publicCards = {"-1", "-1", "-1", "-1", "-1"} -- 对手牌 self.playerCards = {} for i=1,10 do self.playerCards[i] = {"-1", "-1"} end -- 玩家的个数 self.playerNum = 2 -- 选择的牌 2-A self.selectPoker = "A" -- 选择的花色 h,d,s,c self.selectColor = "-1" -- 选牌,焦点所在的位置 公共牌1-5, 牌手的牌6-10, 10-14 self.focusPoint = 6 -- 数据 self.winRate = {} for i=1,10 do self.winRate[i] = "" end -- cell的高度 self.cellHeight = 218end-- 将牌型的string转化成intfunction CalWinRateScene:stringToInt(text)endfunction CalWinRateScene:addTable() local winSize = CCDirector:sharedDirector():getWinSize() local tableView = CCTableView:create(CCSizeMake(display.width, display.height-696-STATUSBARH)) tableView:setDirection(kCCScrollViewDirectionVertical) tableView:setVerticalFillOrder(kCCTableViewFillTopDown) tableView:setPosition(CCPointMake(0, 360)) tableView:setBounceable(true) tableView:setTag(1000) self.layer:addChild(tableView) tableView:setZOrder(1) tableView:registerScriptHandler(handler(self, self.scrollViewDidScroll),CCTableView.kTableViewScroll) tableView:registerScriptHandler(handler(self, self.scrollViewDidZoom),CCTableView.kTableViewZoom) tableView:registerScriptHandler(handler(self, self.tableCellTouched),CCTableView.kTableCellTouched) tableView:registerScriptHandler(handler(self, self.cellSizeForTable),CCTableView.kTableCellSizeForIndex) tableView:registerScriptHandler(handler(self, self.tableCellAtIndex),CCTableView.kTableCellSizeAtIndex) tableView:registerScriptHandler(handler(self, self.numberOfCellsInTableView),CCTableView.kNumberOfCellsInTableView) tableView:registerScriptHandler(handler(self, self.tableCellHighlight),CCTableView.kTableCellHighLight) tableView:registerScriptHandler(handler(self, self.tableCellUnhighlight),CCTableView.kTableCellUnhighLight) tableView:reloadData()end-- tableview的代理function CalWinRateScene:scrollViewDidScroll(view) endfunction CalWinRateScene:scrollViewDidZoom(view)endfunction CalWinRateScene:tableCellTouched(table,cell) local idx = cell:getIdx() local num = idx + 1endfunction CalWinRateScene:cellSizeForTable(table,idx) return self.cellHeight, 640end-- 将公共牌和玩家的焦点清空function CalWinRateScene:clearFocus()endfunction CalWinRateScene:tableCellAtIndex(table, idx) local num = idx + 1 local cell = table:dequeueCell() if nil == cell then cell = CCTableViewCell:new() else cell:removeAllChildrenWithCleanup(true) end -- index的取值1:左1 2:左2 3:右1 4:右2 local function createCard(posx, posy, index) end local function createBg(posx, poxy) end local function creatWhiteBg(posx, posy) end local function creatLable(posx, posy, index) end local function addRight() createBg(330, 0) createCard(350, 198, 3) createCard(470, 198, 4) creatWhiteBg(380, 9) creatLable(460, 29, 2) end local function addLeft() createBg(50, 0) createCard(70, 198, 1) createCard(190, 198, 2) creatWhiteBg(100, 9) creatLable(180, 29, 1) end if num < math.ceil(self.playerNum*1.0/2) then addLeft() addRight() elseif num == math.ceil(self.playerNum*1.0/2) then if self.playerNum/2 == math.ceil(self.playerNum*1.0/2) then addLeft() addRight() else addLeft() end end return cellendfunction CalWinRateScene:numberOfCellsInTableView(table) return math.ceil(self.playerNum/2)endfunction CalWinRateScene:tableCellHighlight(table, cell)endfunction CalWinRateScene:tableCellUnhighlight(table, cell)endreturn CalWinRateScene
最终的效果图如下:
csdn不能传视频,所以只传一张静态图。具体效果可以下载app:德州培训大师体验。(ps:美术大哥发了一个压缩图片的网址:点击打开链接,mark 一下)
3 0
- 用quick制作仿PkrCruncher
- 使用quick-cocos2dx制作拼图游戏
- 高仿身份证制作
- SliderHubTile 用windows8 制作 仿wp8 翻转瓷砖
- 用duilib制作仿QQ2013动态背景登录器
- 如何使用Qt Quick制作圆形头像
- 仿QQ界面制作 1
- 高仿硕士学位证制作
- 昆明制作高仿户口本
- 昆明制作高仿房产证
- 昆明制作高仿户口本
- 昆明制作高仿房产证
- 仿网易选项卡制作
- quick-cocos2dx 骨骼动画制作 使用dragonbones插件
- Tensorflow 用自己图片制作数据集 仿cifar10(二)
- 利用c++builder制作仿Oicq菜单
- 制作仿“QQ秀”的虚拟形象
- 如何制作简单的仿qq聊天工具
- 十八、运算符重载(二)++运算符重载、!运算符重载、赋值运算符重载、Integer和String的初步实现
- 15.2010 年中兴面试题
- cocos2dx中创建裁剪区域 实现在指定区域精灵才能出现
- 计算机网络的基础知识
- Cocos2d-x 随机数 CCRANDOM_0_1()
- 用quick制作仿PkrCruncher
- java web查询某个时间段记录
- HTTP 错误 500.19- Internal Server Error 错误解决方法
- Android进程间通信(IPC)机制Binder简要介绍和学习计划
- 全面理解 Unity UI 系统
- apue学习第十二天——进程控制1(第八章)
- Android工程的编译过程
- UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)
- delphi中WEBBrowser网页JS函数调用delphi函数