周三常见问题解答:杂项问题

周三常见问题解答:杂项问题

FAQ 图标今天是周三,又到了解答常见问题的时间。以下是一些常见问题(FAQ)。

1. 为什么 native.setActivityIndicator 在我的代码中不起作用?

native.setActivityIndicator 不能在同一个代码块中设置和清除。所有显示对象(包括原生对象)在代码块结束之前都不会渲染到屏幕上。

以下是设置活动指示器的错误方式。活动指示器直到函数结束后才设置,然后被清除。(注意:Android 中当前存在一个错误,在这个例子中活动指示器不会关闭。)

这是设置活动指示器的正确方式。指示器在一秒后清除。这种方法的弊端是活动指示器在 for 循环 执行后才设置,因此在 for 循环 运行时不会显示活动指示器。

上述问题的解决方案是在定时器函数中运行 for 循环 代码。在定时器开始之前启动活动指示器,并在定时器函数中关闭活动指示器。

2. 我在使用动态缩放,但在不同设备上测试时,原生 textField 和 textBox 的字体大小没有变化。

当你在 config.lua 中指定目标屏幕大小时,这允许显示对象根据设备的本地屏幕大小进行缩放。唯一的例外是原生文本字段中使用的字体。字体不会自动缩放,因此需要手动调整字体大小。你可以通过读取设备类型(使用 system.getInfo( “model” ))或读取设备的缩放因子(display.contentScaleXdisplay.contentScaleY)来确定正确的大小。对于 Android,我们最近在每日构建版本中添加了一些新的 system.getInfo API 调用,可能会有所帮助:“androidDisplayWidthInInches”“androidDisplayHeightInInches”“androidDisplayXDpi”“androidDisplayYDpi”

3. 从构建版本 1076 开始,我的 network.request 调用不再工作了。发生了什么?

从构建版本 1053 开始,我们为所有平台添加了默认的 Content-Type 字段 “text/plain”。这样做是为了在平台之间保持一致。在构建版本 1053 之前,我们依赖操作系统来提供 Content-Type 字段(如果 network.request 中缺少该字段)。如果你的 network.request 包含一个等于 “binary” 的 parms.bodyType,或者你的 parms.body 包含一个表(指定文件名),则 Content-Type 将被设置为 “application/octet-stream”。如果你的 network.requestContent-Type 指定了一个值,它将覆盖默认值。在所有其他情况下,它将被设置为 “text/plain”。

4. Display.save 现在在保存的图像中显示白色背景。背景以前是黑色的。

我们在 display.save 捕获中存在一个混合问题,通过使正在保存的对象后面的背景完全透明来修复。此更改发生在构建版本 1079 中。如果要保存组,则背景将是透明的,这是未定义的。在 1079 之前,我们将背景设置为黑色,这给一些用户带来了问题。现在,当保存到 .JPEG 文件时,透明区域可能会显示为黑色或白色。如果将其保存到 .PNG 文件(display.save 现在支持),则背景将是透明的,并在显示时呈现现有背景。

display.save 中指定 .PNG 文件是保存组时解决问题的一种方法。另一种方法是创建一个与你的组大小相同的黑色 display.newRect,并将其填充为黑色,并将其插入到所有其他组对象的后面。在调用 display.save 之前执行此操作,并在之后删除 newRect 对象。

5. 我正在使用 Corona SDK 的发布版本,并且在小部件中看到错误。我该怎么办?

好消息是,我们决定开源我们的 Widgets 2.0 库。我们已将该库上传到 GitHub,您可以在自己的项目中包含它。这与我们每日构建版本中包含的代码相同,我们的计划是保持两者同步。这意味着无法访问我们每日构建版本的初学者仍然可以使用最新的 Widget 库。如果您发现 Widget 错误,请提交错误报告和一个演示该错误的小测试项目。在报告中,请提及您正在使用的 Corona 版本以及您报告的 Widget 库版本。在此处获取更多信息 here

这就是今天的问题。我希望您喜欢它们,甚至学到了一些东西。

tom
2 条评论
  • J. A. Whye
    发布于 17:50, 4 月 25 日

    关于#2,您说

    “...字体大小需要手动调整。您可以通过...读取设备的缩放因子(display.contentScaleX 和 display.contentScaleY)来确定正确的大小。”

    这如何确定正确的大小?我认为还有更多需要考虑的。

    从论坛中我抓取了这个

    local fontSize = 14 / display.contentScaleY

    ...但这不起作用。它在 iPhone 4S 上给了我很大的字体,在 iPad Retina 上给了我巨大的字体。经过反复试验,我添加了这个

    if fontSize > 14 then fontSize = fontSize * .66 end

    ...这在很大程度上修复了问题。字体大小在不同设备上并不完全相同,但它们很接近。尚未在 Android 设备上进行测试,但我真希望有一种*确定的*方法来处理这个问题。

    有人吗?

    Jay

  • Ragdog 工作室
    发布于 12:51, 4 月 28 日

    我认为最好的方法是根据 iOS 上的设备型号和 contentScale 以及 Android 上的新参数来计算特定的大小。

    如果它是 iPad,并且 contentScale 适合 Retina,则您给出一个特定的大小。如果它是普通的 iPad,则您给出另一个大小。如果它属于 iPhone 的范围,则您为 iPhone 3GS 及更低版本给出一个大小,为 iPhone 4 及更高版本给出一个大小(始终检查比例)。

    理想情况下,您可以只设置一个取决于上述的乘数,并以 iPhone 3GS 为基础编写所有字体大小,然后将其乘以正确的值。