手把手教你学会使用Quick-Cocos2d-x制作横版过关游戏【上课中!!~】

-----我下面的代码手打的.编辑器里面的代码太乱了.

function MainSence:ctor()
self.sprite1=display.newSprite(“button.png”,display.cx,display.cy)--------这是普通不亮的图片指针没有指向这边
self:addChild(self.sprite1,2)
self.sprite2=display.newSprite(“button111.png”,display.cx,display.cy)--------指针指到这边来了.图片亮起来
self.sprite2:setVis…(false)
self:addChild(self.sprite2,3)--------把层级设高盖住另一张图片

if …
setVis…(true)
end

我现在的场景中有许多的按钮要调用各种函数.我现在把这些按钮全部放在了另一个Lua中,然后载入到场景里面,我希望被载入的这些按钮能点击之后改变场景当中的self.sprite,怎么做到,另一个Lua中没有定义类,他就是一个表然后返回表属性而已

就是这个.我希望老师能写个比较简单的代码.(两眼汪汪)

— Begin quote from ____

引用第120楼pk27602017于2014-08-07 14:49发表的 :
-----我下面的代码手打的.编辑器里面的代码太乱了.

function MainSence:ctor()
self.sprite1=display.newSprite(“button.png”,display.cx,display.cy)--------这是普通不亮的图片指针没有指向这边
self:addChild(self.sprite1,2)
http://www.cocoachina.com/bbs/job.php?action=topost&tid=217304&pid=1023926

— End quote

这个做法本身是没有问题的,只是可以适当的改写下,比如你可以新建个控件

local SpinItem = class(“SpinItem”, function (normal, select)
– 创建你的两个图片精灵
return self.item
end)

function SpinItem:select(isSelect)
– 切换显示图片
end

这样的话你在上层创建的时候只需要传两个图片
SpinItem.new(“button.png”, “button111.png”)

切换的时候也只需要
item:select(true 或者 false)
就可以了,你觉得行不行?

对于重复的一些代码或者对象,我们最好让他们统一管理,这样一来代码开起来更简洁优雅,二来少敲不少键盘了

老师在这里的新建控件指的是新建一个后缀Lua的文件吧.?
然后RepeatForever这个该在哪里修改?

— Begin quote from ____

引用第121楼pk27602017于2014-08-07 14:51发表的 回 119楼(yuezang) 的帖子 :
我现在的场景中有许多的按钮要调用各种函数.我现在把这些按钮全部放在了另一个Lua中,然后载入到场景里面,我希望被载入的这些按钮能点击之后改变场景当中的self.sprite,怎么做到,另一个Lua中没有定义类,他就是一个表然后返回表属性而已

就是这个.我希望老师能写个比较简单的代码.(两眼汪汪) http://www.cocoachina.com/bbs/job.php?action=topost&tid=217304&pid=1023929

— End quote

-- Button数据定义代码
buttons = {
    {
        name = "ok",
        image = "ok.png",
        pos = 具体坐标,
        callback = "onOk"
    },
    {
        name = "cancel",
        image = "cancel.png",
        pos = 具体坐标,
        callback = "onCancel"
    },
}

-- 使用Button的文件

function A:ctor()

    for i = 1, #buttons do
        ui.newMenuItemImage({image=button*, listener = function () self.callback]() end)
    end
end

function A:onOk()
end

function A:onCancel()
end


```
*

— Begin quote from ____

引用第123楼pk27602017于2014-08-07 15:04发表的 回 122楼(yuezang) 的帖子 :
老师在这里的新建控件指的是新建一个后缀Lua的文件吧.?
然后RepeatForever这个该在哪里修改? http://www.cocoachina.com/bbs/job.php?action=topost&tid=217304&pid=1023948

— End quote

你是要重复moveAction还是要重复那个Animation,Animation的话已经是一直在重复了,moveAction的话直接你在self.moveAction前再加一个CCRepeatForever就可以了

不是,我给你看看我的代码吧,换句话说,我就是想在另一个Lua中去获取当前场景某个精灵的位置

哦…我自己解决了.用Moveby就可以原地产生动画了.之前用MoveTo似乎没有移动位置的话是无法产生动画的…

— Begin quote from ____

引用第126楼pk27602017于2014-08-07 15:17发表的 回 124楼(yuezang) 的帖子 :
不是,我给你看看我的代码吧 http://www.cocoachina.com/bbs/job.php?action=topost&tid=217304&pid=1023969

— End quote

首先呢,不是太推荐你的这个Table的写法,到时候你要删除一个的话会很麻烦。抛开写法不谈,说下你要实现的功能。

  1. 如果你不需要传递值到上层界面,那么直接在调用你的onTouch之前把上层界面的操作做完,那么你刚才说的问题就没了;
  2. 你需要传递值到上一层,那么你给你的onTouch函数增加一个参数,这个参数是上层界面的一个本地函数,你再在你的onTouch中执行这个函数,比如这样:
function A:ctor()

     local function nativeFunc(value)
            -- 处理数据
     end

     -- 上层界面的触摸处理
     local function onTouch()
            button:onTouch(..., nativeFunc)
     end
end


```

— Begin quote from ____

引用第127楼pk27602017于2014-08-07 15:24发表的 回 125楼(yuezang) 的帖子 :
哦…我自己解决了.用Moveby就可以原地产生动画了.之前用MoveTo似乎没有移动位置的话是无法产生动画的… http://www.cocoachina.com/bbs/job.php?action=topost&tid=217304&pid=1023977

— End quote

moveBy是按照间距来进行移动,moveTo是移动到指定的位置

关于api问题

我的api里没有 addNodeEventListener ,cc.PointDistance 这些方法
虽然能跑起来,但不知道有哪些方法,自己写的时候会很费劲的
求解

— Begin quote from ____

引用第130楼kshz1351302于2014-08-07 15:43发表的 :

关于api问题

我的api里没有 addNodeEventListener ,cc.PointDistance 这些方法
虽然能跑起来,但不知道有哪些方法,自己写的时候会很费劲的
求解 http://www.cocoachina.com/bbs/job.php?action=topost&tid=217304&pid=1023994

— End quote

教程里面用的是2.2.3的版本,你用的是哪个版本,早期的版本触摸机制是不一样的

我用的是2.2.5的

— Begin quote from ____

引用第132楼kshz1351302于2014-08-07 16:08发表的 回 131楼(yuezang) 的帖子 :
我用的是2.2.5的 http://www.cocoachina.com/bbs/job.php?action=topost&tid=217304&pid=1024024

— End quote

你是用的Quick还是引擎原生的Lua,我在2.2.5上试过也是没问题的

问几个问题:
1 快速点击地图,player 的 walkTo 方法触发,这时候动画会 停->播->停->播。。的节奏。动画看起来播放很快很快特别是我换了8帧的动画后播放更快(源码有问题吗)。 如何使他播放同样的动作不先停止再播放

2 人物的中心点是在剑上,如何在 左右翻转时候 设置参考轴为身体而不是剑,想让转身自然点

3 self:setFlipX(true) 和 self:setScaleX(-1)的问题,我在player 上面 加了个黑块 ,在人物屁股那边 ,用setFlipX(true) 一直在原来的位置(原来在左,设置后还是在左)。。 而用 setScaleX(-1) 黑块一直 随着人物摆动,一直在P股那边(原来在左后来在右)

4 image 里面的 .plist 和 ccz 怎么用? 我在quick 里面找了别的plist+png 用 display.newFrames 参数该如何设置(确定这些资源名字对的。加#和不加#都试过没用会报错,用newSprite 一张一张读可以读到)(特别是%d 什么的看不懂)

5 关于帧动画。。能不能通过读取 plist 来判断一个动画多少帧。而读取plist 的方法怎么写(plist 像是XML 能按xml 读吗。读取方式还是不会写)

求各位大神解答,先谢了

:2: 顶顶顶 :2:

能送我件衣服吗?

可以直接买衣服么。。。:6:

谢谢分享,:883:

请问LDT是怎样导入Player创建的工程的?
有相关的教程吗?

导入整个工程后 Cocos2dx 3.2 显示 not found
self:addChild 都没有提示

display. 和 ui. 会有提示, 但 cc. 没有提示

我是新手,帮帮忙 谢谢