理想情况下,我需要实现一个WP7控件,可以添加到任何XAML并显示动态的交互式3D场景.
目前我在共享模式下通过XNA实现了这个,并且使用了在场景顶部渲染UI UIElementRenderer.然而,这种解决方案是次优的,因为
应用程序必须呈现整个屏幕,因为在共享模式下,Silverlight本身不会绘制任何内容.
我无法找到任何方法来检测Silverlight控件是否需要更改其演示文稿,无论是由于用户交互还是动画.仅当3D场景因此而改变时才会渲染控件,因此它们缺少原生WP7应用程序的光滑外观.
那么,有没有办法在一个控件内渲染3D场景,让Silverlight管理其余的UI?
在Python中,可以通过该类实例访问类变量:
>>> class A(object):
... x = 4
...
>>> a = A()
>>> a.x
4
Run Code Online (Sandbox Code Playgroud)
很容易证明a.x真正解决了A.x,而不是在构造过程中复制到实例:
>>> A.x = 5
>>> a.x
5
Run Code Online (Sandbox Code Playgroud)
尽管这种行为众所周知并且被广泛使用,但我找不到任何涵盖它的权威文档.我在Python文档中找到的最接近的是关于类的部分:
Run Code Online (Sandbox Code Playgroud)class MyClass: """A simple example class""" i = 12345 def f(self): return 'hello world'[剪断]
...根据定义,作为函数对象的类的所有属性都定义其实例的相应方法.所以在我们的例子中,
x.f是一个有效的方法引用,因为它MyClass.f是一个函数,但x.i不是,因为MyClass.i不是....
但是,这部分专门讨论了方法,因此它可能与一般情况无关.
我的问题是,这有记录吗?我可以依靠这种行为吗?
人们会认为VoIP应用程序必须遵守与股票手机应用程序相同的规则,但事实证明几乎不可能正确实现振铃.我尝试了几件事:
带铃声的本地推送通知.
好:遵守静音和免打扰模式.
不良:声音不超过30秒,只有在通知出现时才会振动一次.因此,为了实现振铃效果,必须每隔6秒重新通知通知,从而有效地向通知中心发送垃圾信息.如果应用程序处于活动状态,推送通知也不会发出声音/振动,因此应用程序必须检测到并以不同方式响铃.
AudioServicesPlayAlertSound().
好:适当的API似乎专门为此任务而设计.Obeys静音模式.
坏:完全忽略请勿打扰模式,声音和振动正好通过.
使用AVFoundation播放铃声.
好声音播放.
差:不支持振动,不支持静音/免打扰模式.基本上不能用作铃声.
有没有更好的办法?还是Apple完全错过了这个用例?
我发现使用编译器输出更容易,但 Qt Creator 中的“问题”窗格会在每次编译后自动弹出,隐藏有用的信息,迫使我每次都隐藏它。有没有办法禁用这种行为?我不介意收集错误,我只是不希望每次我不要求时都显示这个特定的 UI。
我使用的是 Qt Creator 3.5.0,但早期版本也是如此。
想象一下您建立了一个社交网络。有些用户可以添加其他用户为好友。您如何在 DDD 中对此进行建模?当然,您不能简单地在类中拥有一个朋友列表User,因为任何朋友循环都会导致从存储库获取此类用户时的无限递归。
如果您需要跟踪可能待处理、取消、接受或拒绝的好友请求,您将如何更改您的模型?
如果发生任何错误,我需要触发一些代码.基本上我需要一个finally只在异常的情况下执行的块.我会这样实现它:
HttpURLConnection post(URL url, byte[] body) throws IOException {
HttpURLConnection connection = url.openConnection();
try {
OutputStream out = connection.getOutputStream();
try {
out.write(body);
} finally {
out.close();
}
return connection;
} catch (Throwable t) {
connection.disconnect();
throw t;
}
}
Run Code Online (Sandbox Code Playgroud)
看起来很好 - 除了它不会编译:我的函数不能抛出Throwable.
我可以重写:
} catch (RuntimeException e) {
connection.disconnect();
throw e;
} catch (IOException e) {
connection.disconnect();
throw e;
}
Run Code Online (Sandbox Code Playgroud)
但即便如此,我仍然是a)错过所有错误,并且b)必须在我改变实现时抛出不同类型的异常时修复此代码.
是否有可能一般地处理这个问题?