【问题标题】:Detect retina display with cocos2d-iphone javascript bindings使用 cocos2d-iphone javascript 绑定检测视网膜显示
【发布时间】:2013-01-07 00:37:24
【问题描述】:

我正在尝试 cocos2d-iphone javascript 绑定,以便在完成后更轻松地将当前项目移植到 web 或 android 平台。现在我只是使用 xcode 为 ios 设备运行 js。

我想弄清楚是否有办法在 javascript 中检测视网膜显示。我的 sd/hd 图像似乎使用标准文件名约定(即image.pngimage@2x.png)加载得很好,但是我在加载正确版本的字体文件时遇到了问题。正如预期的那样,检查屏幕尺寸会为视网膜和非视网膜显示器返回相同的像素宽度。通常在 obj-c 中我只使用 CC_CONTENT_SCALE_FACTOR(),但我在 javascript 绑定中找不到等效项。

我找到了这个 SO question/answer,当通过浏览器查看这个项目时,它会派上用场,但它并不能解决 ios 设备问题...

例子:

var label = cc.LabelBMFont.create("0123456789", "EuroBold24.fnt");

对比

var label = cc.LabelBMFont.create("0123456789", "EuroBold24@2x.fnt");

这两种方法都有效,但如果设备是启用视网膜的设备,我需要知道调用哪一个。有任何想法吗?谢谢。

【问题讨论】:

    标签: javascript cocos2d-iphone retina-display


    【解决方案1】:

    你不应该将@2x 与 cocos2d-iphone 一起使用。使用使用以下后缀的自定义文件扩展名格式:

    • iPhone SD:image.png
    • iPhone 视网膜:image-hd.png
    • iPad SD:image-ipad.png
    • iPad 视网膜:image-ipadhd.png

    @2x 仅适用于图像文件,cocos2d 的自定义文件后缀适用于任何支持的资产,包括位图字体 (.fnt) 和 tilemap (.tmx) 文件。

    【讨论】:

    • 感谢您的反馈。我似乎记得在我的上一个项目中尝试使用-hd 后缀来加载视网膜大小的字体,但它不起作用——因此需要根据CC_CONTENT_SCALE_FACTOR() 值有条件地加载字体。不过我会再试一次,然后回来更新。
    • 是的,工作就像一个魅力。不确定我在上一个项目中做错了什么,因为这很简单,但现在可以了。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    • 2023-04-08
    • 2011-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多