用1.6遇到这个问题 代码里随机出来的是整数 但是模拟器的editorBox显示出来的有2个小数点 并且原生包进行到这一步时直接崩溃 大大们有空看看?
最好提供一个 demo 吧,可能是你的代码问题。
你好…子龙…beta2什么时候发布.1.4的用1.6运行不了.
beta2 发布时间我也不是很清楚,会尽快发的。
这才是奇了怪了,我直接用帖子里上传的工程,构建后,在XCode和浏览器中运行,然后下面是结果
浏览器(Chrome 版本 59.0.3071.115(正式版本) (64 位))
iPad Air(iOS 版本 :10.3.2 (14F89))
XCode (Version 8.3.3 (8E3004b))控制台输出:
Success to load scene: db://assets/Scene/helloworld.fire
supportEmail:::::::::undefined
appId:::::::::undefined
supportEmail2:::::::::初始值aaaaaa
appId2:::::::::3333
Creator版本 CocosCreator_v1.5.2_2017070701
操作系统 :
ps:我上面说的初始值是在js文件中给属性赋的初值,不是在场景编辑器中修改。类似这种
@property({
default: 2,
displayName: ‘本应用ID2’
})
appId2: number = 3333;
当出现上面代码的矛盾情况时,编辑器和实际运行时,都会显示‘3333’,忽略了default的值,当然,我现在觉得这样的用法应该是不提倡的,或者说是错误的用法,应该在设置初值的时候,保证两者统一才对。
好的,我用真机查看看,你说是原生平台我就以为是模拟器预览时就能重现……
我这边模拟器的效果也和我的真机效果是一样的
这个是构建的选项
另外,我还发现,如果在编辑器中修改了值,那么浏览器和真机上效果就一致了,所以,我估计是不是property装饰器中default配置项的实现问题?
编辑器中修改了属性值:
浏览器效果
真机效果
使用@peoperty在creator.d.ts的第2个方法错,看下图
,(采用第一个对象构建正常)
报错代码:
@property( cc.RawAsset )
manifestUrl: cc.RawAsset;
vscode 报错提示:
控制台报错信息:
file: ‘file:///Users/game/game-client/assets/script/HotUpdate.ts’
severity: ‘错误’
message: ‘Type ‘typeof RawAsset’ has no properties in common with type ‘{ type?: any; url?: typeof RawAsset; visible?: boolean | (() => boolean); displayName?: string; t…’.’
at: ‘6,15’
source: ‘ts’
本来想用对象方法的,如下:
@property({ default: null, type: cc.RawAsset })
manifestUrl: cc.RawAsset;
但他就会在编辑器里报错:Type Error
CCEventDispatcher.cpp: EventDispatcher::dispatchEventToListeners
if (fixedPriorityListeners)
{
if (!shouldStopPropagation)
{
// priority > 0
ssize_t size = fixedPriorityListeners->size();
for (; i < size; ++i)
{
auto l = fixedPriorityListeners->at(i);
if (l->isEnabled() && !l->isPaused() && l->isRegistered() && onEvent(l))
{
shouldStopPropagation = true;
break;
}
}
}
}
if (fixedPriorityListeners)
{
if (!shouldStopPropagation)
{
// priority > 0
ssize_t size = fixedPriorityListeners->size();
for (; i < size; ++i)
{
auto l = fixedPriorityListeners->at(i);
if (l->isEnabled() && !l->isPaused() && l->isRegistered() && onEvent(l))
{
shouldStopPropagation = true;
break;
}
}
}
}
这两段怎么看都是一样的,是不是合并的时候重复了 @panda
引擎中一段代码的迷惑,1.5.2和这一段有差异:
void EventDispatcher::forceAddEventListener(EventListener* listener)
{
... ...
// 这里如果listener->isPaused()为true, 下一句调用还有什么意义呢?
// 是不是想判断:!listener->isPaused()
if (!node->isRunning() && listener->isPaused())
{
listener->setPaused(true);
}
}
原生环境socket.io的removeListener方法不可用怎么解决?
这个据说上次已经改了 代码合并 的有问题估计
下个版本会修复,谢谢反馈。你现在可以先用 @property({ default: null, url: cc.RawAsset }) 或者无视 @property(cc.RawAsset) 报错
好的~
初始值确实是拿不到的,如果我删掉了 App 组件再重新添加,会显示
但那样的话我浏览器也会显示成 undefined,而不是像你那样正常显示。我怀疑是有什么临时数据出错了或者你浏览器有缓存导致的差异。
default 现在只有在 reset 组件时才会用到,运行时用不到的,这是 TypeScript 语言的底层问题,暂时解决不了。如果用 JS 的 ES6 Classes 就不需要定义 default,所以没有这个问题。
我清除了浏览器缓存,按照你的操作方式,出现了你截图中的内容,不过还是有点奇怪的是,浏览器直接输出了undefined字符串,而真机上却是空白,不知道这是浏览器和真机本身的区别,还是什么其他的原因。
另外,想问一下,引擎小组目前以及以后的工作,会对ES6 Classes的支持更好些,TS只是顺带的,是这样么?
毕竟采用引擎推荐的使用方式,出错几率小,踩坑少,解决起来也比较快,不是么?