Creator v2.0.2,小游戏子域内设置节点 color 无效,以及其他问题。

RT~
代码是写在微信小游戏的子域里的。

美术切给我一个纯白色的九宫格做格子背景,
然后想在代码里通过设置 color 来改变格子背景色(起码在场景编辑器里时可以看到效果的)。

这么做主要是想,
当“我”在排行榜上的时候,可以通过不一样的背景色更快的找到自己。

但是,不论是只在 Creator 中预设好颜色(不在代码里设置),
还是通过代码设置,
只要我设置的不是白色,格子背景都会消失(alpha 我是设置为 255 的)。

另外,我发布子域时,
发布出来的文件夹名 始终 是 wechatgame-subcontext,
每次还得手动改,反复调试的时候很麻烦,是我哪里弄错了吗?

还有,关于手册:
2.0的: http://docs.cocos.com/creator/manual/zh/publish/publish-wechatgame-sub-domain.html
1.10的: http://docs.cocos.com/creator/1.10/manual/zh/publish/publish-wechatgame-sub-domain.html
两个链接的 整合方法 部分,都有 相同主域代码范例 代码,和 关于这段代码作用的描述
但是2.0里范例中,根本就没看到 display: cc.Sprite 这段代码,2.0里旧手册内容没删干净吧?

子域里不支持 Button 组件?
但是手册有写:同时,Canvas 渲染下所支持的渲染组件也是受限的(UI 组件不受限制)。
我在子域中使用了按钮,但不能用,在微信开发者工具里出现的警告:
Can not find class ‘cc.Button’
Script attached to ‘TestButton’ is missing or invalid.

现在只能让美术同学切两个背景色的九宫格给我了 :sweat:

locCanvas.width = w * devicePixelRatio;
locCanvas.height = h * devicePixelRatio;

上面的两行代码,
在微信开发者工具中导致了 “Cannot assign to read only canvas.”
的警告。

cocos2d-js.js 代码段粘贴如下:

cc.ContainerStrategy = cc.Class({
name: “ContainerStrategy”,
preApply: function(view) {},
apply: function(view, designedResolution) {},
postApply: function(view) {},
_setupContainer: function(view, w, h) {
var locCanvas = cc.game.canvas, locContainer = cc.game.container;
if (cc.sys.platform !== cc.sys.WECHAT_GAME) {
if (cc.sys.os === cc.sys.OS_ANDROID) {
document.body.style.width = (view._isRotated ? h : w) + “px”;
document.body.style.height = (view._isRotated ? w : h) + “px”;
}
locContainer.style.width = locCanvas.style.width = w + “px”;
locContainer.style.height = locCanvas.style.height = h + “px”;
}
var devicePixelRatio = view._devicePixelRatio = 1;
view.isRetinaEnabled() && (devicePixelRatio = view._devicePixelRatio = Math.min(2, window.devicePixelRatio || 1));
locCanvas.width = w * devicePixelRatio; // 在这里
locCanvas.height = h * devicePixelRatio; // 在这里
},
// …
}
});

颜色确实不能改
button我是能用的

兄弟,你也是 v2.0.2?也是在子域下用 Button 吗?

我子域下的按钮只能显示个静态图片(因为按钮上只有 Sprite 组件是生效的),
Button 组件不能使用,因为点击的时候看不到按钮的三态变化(设为 SCALE 模式也不行,完全就是 Button 组件不能用)。

在节点上注册事件还是可以用的,毕竟跟 Button 组件无关:

this.m_ndTestBtn.on(EventType.TOUCH_END, function ()
{
cc.log(“m_ndTestBtnTOUCH_END ~”); // 点击结点时,这个log是可以打印出来的。
});

不知道你说的能用是不是这种情况?

另外,我发布子域时,
发布出来的文件夹名 始终 是 wechatgame-subcontext,
每次还得手动改,反复调试的时候很麻烦,是我哪里弄错了吗?
这个问题我也有,很困扰

我自己写了个bat脚本,每次点一下,起码比手动改是要方便一些了…
“wxODC”是我的子域项目名。

renameODC.bat

rmdir /s /q E:\Data\Code\MyProject\build\wechatgame\wxODC
rename E:\Data\Code\MyProject\build\wechatgame\wechatgame-subcontext\ wxODC

嘤嘤嘤