当iPhone 4和第4代iPod Touch问世时,我正在玩Apple的Core Motion传感器融合算法,看看我是否可以获得任何有趣的结果,用于非常局部的航位推算(在几英寸或几英尺的范围内).鉴于MEMS传感器的规格相对较低,我没想到会有什么惊人之处.虽然Apple的CMDeviceMotion gravity财产使用了一种不错的(虽然是不透明的)传感器融合算法,但补充userAcceleration属性并不完全针对航位推算.尽管如此,我认为可能还有足够的乐趣.
iPhone 4,iPhone 5,第4代iPod Touch和第5代iPod Touch显然都使用STMicroelectronics LIS331DLH加速度计和L3G4200D陀螺仪.(实际上,我还没有看到iTouch-5陀螺仪的部件号,所以可能会有所不同.)
拆解:iPhone-4,iTouch-4,iPhone-5,iTouch-5
ST规格表明,加速度计可以在1000 Hz时采样,最高可达±8g.该陀螺仪可以800 Hz的频率采样,最高可达±2000 dps.
但是,使用我的第4代iPod Touch(iOS 5和iOS 6),我只能将采样率调高到100 Hz.如果我设置CMMotionManager deviceMotionUpdateInterval低于0.01,它会自动重置为0.01.同样的accelerometerUpdateInterval和gyroUpdateInterval.
此外,加速度计输出似乎总是限制在±2g左右.
我已经看到其他人对iPhone 4的类似界限发表评论.
这两个界限严重限制了我可以挤出设备的局部加速度计算(试验我的第四代iPod touch).我认为Apple已将这些限制设置为低,以降低功耗.虽然我不知道它们是设置在硬件中,还是设置在iOS中的某个地方.
有没有人在iPhone 5或第5代iPod Touch上使用这些加速度计和陀螺仪界限?(或任何iPad?)任何高于100赫兹的采样率?任何加速度计测量超出±2g的范围?
通过完成闭包调用自身来重复此SpriteKit操作.它使用闭包而不是a SKAction.repeatActionForever(),因为它需要在每次重复时生成随机变量:
class Twinkler: SKSpriteNode {
init() {
super.init(texture:nil, color:UIColor.whiteColor(), size:CGSize(width:10.0, height:10.0))
twinkle()
}
func twinkle() {
let rand0to1 = CGFloat(arc4random()) / CGFloat(UINT32_MAX)
let action = SKAction.fadeAlphaTo(rand0to1, duration:0.1)
let closure = {self.twinkle()}
runAction(action, completion:closure)
}
}
Run Code Online (Sandbox Code Playgroud)
我认为我应该使用[unowned self]以避免与闭包的强引用循环.当我这样做时:
let closure = {[unowned self] in self.twinkle()}
Run Code Online (Sandbox Code Playgroud)
它崩溃了错误:_swift_abortRetainUnowned.但如果我[weak self]改用:
let closure = {[weak self] in self!.twinkle()}
Run Code Online (Sandbox Code Playgroud)
它执行没有错误.为什么会[weak self]工作但是[unowned self]打破?我应该在这里使用其中任何一种吗?
该Twinkler对象在程序的其他地方被强烈引用,作为另一个节点的子对象.所以我不明白[unowned self]参考是如何打破的.它不应该被解除分配.
我尝试在SpriteKit之外复制这个问题dispatch_after(),但我无法做到.
使用CSS将文本替换为图像是众所周知的做法.CSS-Tricks有一些技术博物馆(http://css-tricks.com/examples/ImageReplacement/).
但是这些都不允许用流体图像替换(例如,横跨100%流体页面布局的徽标).是否可以使用CSS进行流体图像替换?
几乎所有图像替换技术都使用背景图像.我知道你可以设置background-size: 100%.但是,将文本元素的高度与其宽度一起缩放并不是直截了当的,因为浏览器不会将背景图像视为内容的一部分.
据我所知,任何常见的图像替换技术都可以轻松地与媒体查询相结合,逐步将文本元素的大小更改为特定的高度x宽度比率.但这是增量的,而不是流动的.
我找到了一篇讨论此内容的博客文章(http://viljamis.com/blog/2011/fluid-image-replacement.php).但事实证明,实际上需要在html内容中放置一个图像.我正在寻找真正的文本替代品.