小编Inv*_*ory的帖子

如何最好地给落球真实世界的引力

我是一个相当新的应用程序开发人员,也是Sprite Kit的新手.我正在创造一个游戏,我想要一个球总是向下坠落,好像它是在重力.这只是一个2D应用程序,所以我想要的是当球落下时,当你向左倾斜手机时,球向下移动并离开屏幕,如果你向右倾斜手机,球会向下移动并向右移动.为了更好地了解我想要的东西,我在photoshop中制作了一个快速图表:

球落图

我想就一些最简单,最好的方法做一些意见.我的第一个想法是记录偏航并用它来决定球向左或向右移动的距离.这需要一些计算才能使球完全落在90度,虽然听起来对我来说,但我不确定它是否真的可能.

有人认为这是做到这一点的方式还是有更好的方法呢?

我尝试第一个想法时遇到的一个问题是当我倾斜手机时,球左右移动(没有任何正确的计算,所以这是完全不准确的),我会将手机向左倾斜(例如)我进一步倾斜它,它变得越不敏感,所以球将向左移动更少.这会阻止我的想法工作,我不确定是否有办法绕过它.

我遇到的一个更大的问题是当我在座位上转身时,偏航也会发生变化!我认为这与指南针有关,因为滚动或音高都没有像我这样改变.我确信可以做些什么来纠正这个问题,因为我玩游戏时使用陀螺仪从来没有这个问题.如果有人能指出我正确的方向,我会很感激,或者我可能只是在一个单独的新问题中提出这个问题.下面是我在photoshop中快速绘制的另一个图表,以帮助解释问题.图1是我希望能够倾斜手机的方式,但当你转身时(图2),球会向左或向右移动,具体取决于你转动的距离.(是的,这是指在图2中持有电话的人)

手机倾斜图

非常感谢帮助!

objective-c game-physics ios core-motion sprite-kit

16
推荐指数
1
解决办法
3072
查看次数

标尺应用如何在所有设备上保持准确?

我真的很困惑目前市场上的iOS Ruler应用程序与不同尺寸的设备兼容.底部显示了一个示例.

经过研究,我得出的结论是,实时获取当前屏幕的PPI是不可能的,这使得无法以编程方式绘制标尺.

我的疑问是这些标尺应用程序如何准确显示标尺而无法获得设备PPI?

我的第一个想法是每个设备的PPI和屏幕尺寸都硬编码到应用程序中.这似乎是一项艰苦的工作和一百万次失误的秘诀.这真的是他们必须这样做的吗?需要在每个不同的设备上进行测试,以确保其正常工作.我只能访问我的iPhone 5S.他们可能会为每个不同的设备提供不同的统治者图像吗?这将占用手机上的大量空间.

我已经看到了关于绘制标尺的类似问题,但是(如果我错了,请纠正我)他们似乎没有解决方案来保持不同屏幕尺寸和PPI的准确性.他们似乎都说"这是不可能的".如果不可能,它是如何完成的?

例

objective-c ios swift

6
推荐指数
1
解决办法
2705
查看次数

如何检测手机何时放下

我想在手机静止2秒钟后采取措施。我已经搜索了谷歌周围的年龄和堆栈溢出。我发现“ Accelerometer DidAccelerate”已贬值,而CoreMotion替代了它。我所看到的一切都与“摇动”动作有关。我已经尝试阅读苹果的文档,但这让我感到困惑!

基本上,我希望应用程序能够检测到手机上的重力在一定时间内保持在很小的范围内(建议您将手机放在桌子上或其他物体上)并进行呼叫和实例化或让应用执行某项操作。

任何帮助将不胜感激。

xcode objective-c accelerometer ios core-motion

5
推荐指数
1
解决办法
3312
查看次数

UIAlertView按钮阵列

有人可以向我建议我如何拥有一个包含数组按钮列表的UIAlertView.基本上,我想要以下代码,但是myArray是一个字符串数组,它们是多个按钮.

UIAlertView *alert = [[UIAlertView alloc]initWithTitle: @"Title"
                                               message: nil
                                              delegate: self
                                     cancelButtonTitle:@"Cancel"
                                     otherButtonTitles: myArray,nil];
[alert show];
Run Code Online (Sandbox Code Playgroud)

当然,我不能只是将数组放入UIAlertView中,因为它需要是一个字符串.如何将其转换为字符串,以便它不会只是一个按钮?或者甚至是我应该怎么做?

我尝试使用以下代码转换为字符串:

NSString *listToBeUsed = [myArray componentsJoinedByString:@","];
Run Code Online (Sandbox Code Playgroud)

但正如我所怀疑的那样,它没有用.我留下了一个长按钮,它们之间有一个字符串和逗号列表.

任何帮助,将不胜感激.

[编辑]

我的数组,如控制台中所示:

("888-555-5512","555-522-8243","(408)555-3514")

顺便说一句,电话号码来自模拟器联系人列表.没有真人的号码.

[编辑]

首先,我创建myArray:

NSMutableArray *myArray;
Run Code Online (Sandbox Code Playgroud)

然后我得到保存的NSUserDefault值,以防用户之前添加了电话号码(如果用户没有机会添加电话号码,则显然没有任何内容):

NSMutableArray *phoneNumber = [[NSUserDefaults standardUserDefaults] objectForKey:@"phoneNumber"];
Run Code Online (Sandbox Code Playgroud)

然后我用NSUserDefault启动myArray.如果没有保存,表格将为空,如果其中有电话号码,表格将显示它们,因为它显示myArray:

myArray = [[NSMutableArray alloc] initWithArray:phoneNumber];
Run Code Online (Sandbox Code Playgroud)

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath方法中,我包含以下代码以在表中显示myArray:

cell.numberLabel.text = [myArray objectAtIndex:indexPath.row];
Run Code Online (Sandbox Code Playgroud)

当用户编辑电话号码时,我将执行以下任一行代码:

[myArray addObject:phoneNumberSelected];
[myArray removeObjectAtIndex:indexPath.row];
Run Code Online (Sandbox Code Playgroud)

然后始终将数组保存在NSUserDefaults中,以便在用户返回时可以访问它:

[[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"phoneNumber"];
Run Code Online (Sandbox Code Playgroud)

我希望我不会错过任何事情.我不知道这是否足够的信息,不够或错误的信息.

objective-c ios

4
推荐指数
1
解决办法
4972
查看次数