Quick 触摸机制 及 cocostudio解析BUG,望重视。

触摸机制BUG:
添加一个层A, 在A层里添加多个触摸节点,比如UIPushButton, 或自定义的触摸节点

之后在同一帧内将这个层A remove掉,再重新创建层A及其触摸节点,将会随机出现A层内的触摸节点无触摸事件。

cocostudio bug:
没解析百分比参数

import() bug:
import重复引用,这个之前就有人提过,但是没看到解决方案,望解决。

其他吐槽:
UI控件各种难用,各种内存泄漏,各种难扩展。

1.触摸的给个简单样例吧
2.不知道你用的是什么时候的,百分比的解析后面是加上的
3.import其实调的就是require,应该不会重复引用吧
4.UI控件全是用的lua代码,实现时也没有retain,不应该有内存泄漏啊

感谢回复!

我用的是quick 3.3 final. cocostudio 1.6

  1. 触摸

function test:init()
if self._layer then self._layer:removeSelf() end

self._layer = display.newLayer():addTo(self)

for 1, 10 do
    local btn = cc.ui.UIPushButton.new({normal = "aaa.png"}):addTo(self._layer)
end

end

function test:refresh()
self:init()
end

如我在某处掉用refresh,则会出现我说的BUG。

  1. cocostudio:
    cocostudio里的坐标百分比勾选,程序改变分辨率后,坐标无变化。

  2. import:
    报此类错
    error: loop or previous error loading module

1.这段代码我放到ccsloader中的menuscene里作了一定修改

function MenuScene:ctor()

 cc.ui.UIPushButton.new("GreenButton.png", {scale9 = true})
    :setButtonSize(200, 60)
    :setButtonLabel(cc.ui.UILabel.new({text = "Use CCSReader"}))
    ...........
    :onButtonClicked(function(event)
        app.currentSceneName_ = "CCSSample6Scene"
        -- app:enterNextScene(true)

        print("to enter refresh")  --new add
        self:refresh()                 -- new add
    end)
    :align(display.CENTER, display.cx, display.cy - 40)
    :addTo(self)

self:refresh()     -- new add

end

function MenuScene:init()
print(“enter init function”)
if self._layer then self._layer:removeSelf() end

self._layer = display.newLayer():addTo(self)
self._layer:setTouchEnabled(false)   --new add,不设置为false,所有事件都会有self._layer接收,其它控件都收不到事件

for i = 1, 10 do
    cc.ui.UIPushButton.new({normal = "GreenButton.png"})
        :onButtonClicked(function(event)
            print("Touch on Button")
        end)
        :addTo(self._layer)
end

end

function MenuScene:refresh()
self:init()
end

用上面的代码后,点按钮来重复调用refresh,没感觉有问题

2.百分比只在解析时产生作用
3.这个错误是模块重复加载,就要出这个错,能不能给我一段代码,可以出这个错的

3.这个我们在用两个lua文件循环require时会出现,这种属于用法错误吧

嗯 我也遇到了第一个问题!兄弟最后怎么解决的?

不在同一帧内删除创建就可以了

如何控制不在同一帧?

— Begin quote from ____

引用第6楼是是是丶于2015-01-16 09:32发表的 回 5楼(longolder) 的帖子 :
不在同一帧内删除创建就可以了 http://www.cocoachina.com/bbs/job.php?action=topost&tid=281483&pid=1222692

— End quote

用你的方法是可以的!!!!
兄弟能告知下是什么原因导致的这个问题么?

我是直接做了一个延时:12::12::12:

对了之前遇到还用了一种方法,就是先新建,再删除。比延时的做法感觉稍好一点。。。