小编Tho*_*ing的帖子

Box2D机构之间的层次连接

我在box2d中有一个任意深度的树体结构.当父体碰撞任何东西时,它应该移动它的孩子.另一方面,如果孩子因碰撞而移动,则不应触摸父母.一个身体可以是一个身体的父母,另一个身体可以是另一个身体的父母.

有没有办法在Box2D中实现这个?没有一个关节似乎能够代表这一点,因为它们都是对称的.

c++ box2d box2d-joints

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

存储ExtAudioFile API中的AudioBufferLists供以后使用

使用Xcode/Cocoa和ExtAudioFile API,我试图将AudioBufferList*对象存储起来供以后使用,但是我在重新访问数据时遇到了麻烦.这些对象来自重复的ExtAudioFileRead调用.

我意识到我不能将这些AudioBufferList*对象填充到NSArray中,但我的印象是NSPointerArray可以用于此目的.但是,当在NSPointerArray中存储音频缓冲区列表后尝试访问audioBufferList-> mBuffers [0] .mData时,它们只是将其归零.

我正在将audioBufferLists memcpying到新的audioBufferList对象,因为我正在为每个ExtAudioFileRead调用重用相同的音频缓冲区列表.我不确定这是否足够,并且memcpying void*audioBufferList-> mBuffers [0] .mData对象也没有帮助.

存储这些AudioBufferList*对象的最简单方法是什么?我是在正确的轨道上吗?

cocoa core-audio

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

View Controller两次调用awakeFromNib

我正面临这个奇怪的问题而且我不确定我哪里出错了.

情况:

我有一个MainWindowController类,它将加载要显示的正确的nib.我创建了一个对象并将其更改为IB中的MainWindowController类,并将其与"MainWindowView"笔尖一起使用.

因此,基本上笔尖"MainWindowView"具有自定义视图和侧面的几个按钮,以便用户可以选择要加载的视图,并且它将加载其他相应的笔尖.我在IB中启动时隐藏了mainmenu,所以它只加载MainWindowView和其他nib文件.

然而,在调试时,当我在MainWindowController的awakeFromNib上放置NSLog时,我在控制台中看到它被调用了两次.

在我的项目中,我有一个startupController类和MainMenu.xib以及以下代码.

startUpController.h:

#import <Cocoa/Cocoa.h>
#import "MainWindowController.h"

@interface startupController : NSObject {
 MainWindowController *myWindowController;
}
@end
Run Code Online (Sandbox Code Playgroud)

startUpController.m:

#import "startupController.h"
@implementation startupController
-(void)awakeFromNib {
 [super init];
 if(myWindowController == nil)
 myWindowController = [[MainWindowController alloc] initWithWindowNibName:@"MainWindowView"];
 [myWindowController showWindow:self];
}
@end
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏.谢谢.

cocoa objective-c

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

避免浮点运算

我为 iPhone 编写了一个小型软件合成器。为了进一步调整性能,我使用 Shark 测量了我的应用程序,发现我在转换方面损失了大量时间float/SInt16

因此,我重写了一些部分,通过预先计算返回“即用型”SInt16样本的查找表来绕过转换。到目前为止效果很好。

目前,我正在尝试重写一些过滤器和我的 ADSR 包络实现,以仅使用整数算术,但我可以使用一些关于如何在没有浮点数的情况下执行乘法/除法的技巧。
我的目标是iPhone 规范格式

  • 线性PCM
  • 16 位整数样本

在不使用浮子的情况下将振幅应用于最终样本的好方法是什么?

编辑:
到目前为止我唯一想到的是,我可以通过右移当前样本来除以 2 的幂。

inBuffer[frame] = wavetable[i % cycleLengthInSamples] >> 4;
Run Code Online (Sandbox Code Playgroud)

但我想不出任何优雅的方法来创建平滑的 ADSR 信封。

Edit2: 感谢您的所有精彩回答!
我目前的做法:

  • 将我所有的 ADSR 包络值带入正SInt16范围
  • 乘以波表中的当前值(将中间值存储为SInt32
  • 将结果右移16

这似乎有效:)

iphone signal-processing fixed-point core-audio integer-division

3
推荐指数
1
解决办法
3171
查看次数

通过键路径从嵌套的JSON字典中获取值,而无需使用eval

我想通过动态构造的键路径访问嵌套的JSON字典。
密钥路径使用标准的JSON点和下标运算符。(.[x]
例如:

var data = 
{"title": "a_title",
 "testList": [
   {
     "testListItemKey": "listitem1"
   },
   {
     "testListItemKey": "listitem2",
          "deepTestList": [
            {
              "testListItemKey": "listitem1",
                      "testListItemDict":{
                         "subTitle": "sub_title",
                      }
            }]
   }]
}
Run Code Online (Sandbox Code Playgroud)

密钥路径字符串的示例为:

data.feedEntries[0].testList[2].deepTestList[1].testListItemDict.subTitle  
Run Code Online (Sandbox Code Playgroud)

到目前为止,我发现的最简单的工作解决方案是使用eval或函数构造函数:

function valueForKeypPath(data, keyPath) {
    "use strict";
    var evaluateKeypath = new Function('data', 'return data.' + keyPath);
    return evaluateKeypath(data);
}
Run Code Online (Sandbox Code Playgroud)

由于我无法完全信任从远程端点接收到的JSON数据,因此我想避免使用evalet.al。

javascript json eval

3
推荐指数
1
解决办法
2541
查看次数

有没有办法在Cocoa for OS X中获取应用程序的运行时间?

我想在我的应用程序中按时运行.我首先考虑的是系统uptime.由于这看起来很难实现,我很好奇是否有一种简单有效的方法来获取应用程序的运行时间?

以毫秒或时间间隔更好的时间.

macos cocoa systemtime

3
推荐指数
1
解决办法
852
查看次数

如何压缩文件而不在 zip 目录中创建目录?

我正在尝试在目标路径中压缩文件。一切正常。我的文件被压缩到目标 URL。但问题是当我解压缩时,我的文件在目录中。我不希望我的文件在目录中。当我解压缩时,我想查看我的文件。

这是我的代码:

func zipData() {
    let  path=NSSearchPathForDirectoriesInDomains(.documentDirectory,.userDomainMask,true).first!
    let fileManager = FileManager()

    var sourceURL = URL(fileURLWithPath: path)
    sourceURL.appendPathComponent("/cropsapdb_up_\(useridsaved)")

    var destinationURL = URL(fileURLWithPath: path)
    destinationURL.appendPathComponent("/cropsapdb_up_\(useridsaved).zip")
    do {
        let fm = FileManager.default
        let items = try fm.contentsOfDirectory(atPath: sourceURL.path)
        guard let archive = Archive(url: destinationURL, accessMode: .create) else  {
            print("returning")
            return
        }

        for item in items {
            sourceURL = sourceURL.appendingPathComponent("/\(item)")

            try archive.addEntry(with: sourceURL.lastPathComponent, relativeTo: sourceURL.deletingLastPathComponent())
            guard let archive = Archive(url: destinationURL, accessMode: .update) else  {
                print("returning")
                return
            }

            sourceURL.deleteLastPathComponent()
        }
    } catch { …
Run Code Online (Sandbox Code Playgroud)

zip ios swift zipfoundation

2
推荐指数
1
解决办法
1504
查看次数

NSTrackingArea工作奇怪 - 整个视图,或什么都没有......没有任何矩形受到尊重

在我的视图的"InitWithFrame"方法中,我正在设置一个跟踪区域,我想要捕获鼠标进入/退出事件.
我的问题有两个:

  1. 如果没有NSTrackingInVisibleRect,则根本不会调用事件.
  2. 无论我把它放在什么"矩形"上,覆盖整个视图的框架或仅占据其中一小部分的框架 - 无论鼠标光标位于何处,都会为整个视图调用鼠标进入/退出事件.视图.

这是我初始化跟踪区域的方式:

trackingArea = [[NSTrackingArea alloc] initWithRect:rect
  options: (NSTrackingMouseEnteredAndExited | NSTrackingInVisibleRect | NSTrackingActiveAlways )
  owner:self userInfo:nil];
[self addTrackingArea:trackingArea];
Run Code Online (Sandbox Code Playgroud)

任何线索为什么会发生这种情况?我希望只为我视图的一小部分(底部)调用鼠标进入/退出事件.

macos cocoa

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

获取文件的图标或缩略图

在OSX SDK中,有没有办法通过显示其图标来表示UI中的文件?换句话说,是否可以访问特定文件的图标,例如在NSImageView中显示它?

PS:我正在使用MonoMac,但Objective-C代码肯定会帮助我:)

提前致谢

macos cocoa

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