小编Kay*_*Kay的帖子

iOS上的Safari中的HTML 5/QuickTime音频缓存

我不顾一切地试图找到一个必须在iOS-Safari(例如iPad,iPad2和iPhone 4)上运行的Web应用程序的解决方案:

这是我前段时间写的一个网络应用程序,它允许用户搜索和收听短音乐样本(MP3,全部从~100 kB到~1.5 MB).音频播放器是基于Flash的,因此它目前无法在iOS设备上运行,我将不得不在HTML 5或"直接"QuickTime对象中实现替代方案.

我的HTML 5和QuickTime替代iOS设备到目前为止工作正常,但有一个主要问题我无法找到解决方案:

与Flash不同,我的iPad 2上的大多数支持HTML 5的浏览器在加载和播放后都不会将audioiofiles存储在browsercache中 - 无论是HTML 5音频标签还是QuickTime-Object.每次我从服务器加载一个音频文件进行播放时(使用JavaScript命令,所以不用更改或重新加载整个页面),它会再次完全下载.

如果用户收听样本A然后收听样本B,Safari忘记播放样本A并再次下载整个MP3,如果我想再次收听它.在具有可能窄带宽的移动设备上,这种行为是不可能的.

有没有办法在Safari的缓存中存储由HTML 5或QuickTime打开的下载的音频文件,因此它记得已经下载了它们 - 就像它缓存了常见的"网络文件",如HTML,CSS或JPEG图像,或者像Flash一样将这些对象存储在它的本地缓存?

我的第一次尝试是尝试将应用程序缓存与清单文件一起使用 - 虽然这不是我的应用程序的预期目的...我没有一个我希望缓存或"可离线使用"的静态文件集 - 我只想缓存用户已播放的MP3.

应该可以使用"动态清单":一个由Apache PHP模块解析并列出迄今为止从PHP会话中播放的文件 - 如下所示:

session_start();

header("Content-Type: text/cache-manifest, charset=UTF-8");
echo "CACHE MANIFEST\n";
foreach($_SESSION['playedSongs'] as $song)
{
        echo $song."\n";
}
Run Code Online (Sandbox Code Playgroud)

因此,无论何时加载/播放歌曲,我都可以使用AJAX访问PHP会话,插入播放文件的文件名并通过调用window.applicationCache.update()或.swapCache()手动更新清单.

这有两个问题:

首先:它不起作用.我甚至没有尝试使用动态清单:

<!DOCTYPE html>
<html manifest="cache.manifest">
    <head>
        <title>Test</title>
        <script type="text/javascript">

        function playStuff(id)
        {
            if(id == 1)
            {
                window.document.getElementById("audio").innerHTML = '<audio controls preload="automatic" autobuffer><source src="song01.mp3" type="audio/mp3" /></audio>';
            }

            else if(id == 2)
            {
                window.document.getElementById("audio").innerHTML = '<audio controls preload="automatic" …
Run Code Online (Sandbox Code Playgroud)

iphone safari audio caching ios

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

使用"X"进行十六进制格式化时的FormatException

我从HexConverter中获取了以下代码- 统一社区Wiki

string hex = color.r.ToString("X2") + color.g.ToString("X2") + color.b.ToString("X2");
Run Code Online (Sandbox Code Playgroud)

这给了我一个例外:

FormatException: The specified format 'X2' is invalid
Run Code Online (Sandbox Code Playgroud)

我尝试使用,"D"但即使这样也犯了错误.唯一有效的是"F格式化浮点数.

转到声明显示汇编浏览器中的mscorlib.dll/System/Single.ToString(字符串) - 到目前为止听起来不错.

谷歌搜索monodevelop字符串格式十六进制或类似的搜索字符串没有显示有关MonoDevelop限制的任何有趣的东西.

那么有什么准备,初始化,...之前我可以得到一个简单的十六进制值转换?

[更新] 颜色是Unity中的结构:

public struct Color
{
    public float r;
    public float g;
    public float b;
    // ...
Run Code Online (Sandbox Code Playgroud)

采取dtb的答案我终于使用它:

    int r = (int)(color.r * 256);
    int g = (int)(color.g * 256);
    int b = (int)(color.b * 256);
    string hex = string.Format ("{0:X2}{1:X2}{2:X2}", r, g, b);
Run Code Online (Sandbox Code Playgroud)

所以我错过了Color …

c# string-formatting monodevelop unity-game-engine

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

无法在Rider中加载带有.NET Standard 2.0 Lib的Xamarin Forms项目

TL; DR; Xider是否支持在Rider中支持.NET Standard库2.0的Xamarin Forms项目?

我使用空白表单应用程序多平台向导在Visual Studio 2017.3(Windows)中创建了一个小型Xamarin项目.微软最近放弃了在Windows版本的VS中创建PCL的选项,并且仅提供.NET Standard.因此我选择了那个.

现在我想直接使用Rider在Mac上试用开发,这样我就不必运行Windows VM了(我真的很喜欢Resharper所以我在Mac上绑定了Windows)

当我在Mac OS上的Rider中打开这个项目时,会抛出一堆错误,看起来所有路径都搞砸了.另一方面,在VS for Mac中打开它可以正常工作.

然后我在Mac上使用PCL创建了一个新的空白项目,并且Rider打开它而没有抱怨.所以我的问题:
在Rider中是否支持Xamarin Forms项目和.NET标准库2.0?

  • 如果他们受到支持:我应该做些什么来使其工作而不打破VS的后备?
  • 如果没有:是否有计划在不久的将来支持它?

我的一些错误:

  • 加载失败:找不到导入的项目"/usr/local/share/dotnet/sdk/2.0.3/Xamarin/Android/Xamarin.Android.CSharp.targets".确认声明中的路径是否正确,以及该文件是否存在于磁盘上.
  • 未找到MSBuild目标:确保已安装此解决方案中的项目所需的所有SDK,或在设置中指定其他MSBuild版本.
  • 未找到Xamarin.Android SDK:Rider无法在此计算机上找到Xamarin SDK.不会加载基于Xamarin的项目.请安装Xamarin SDK或更改工具集
  • 无法从程序集/Users/kay/.nuget/packages/xamarin.forms/2.5.0.122203/build/netstandard1.0/Xamarin.Forms.Build加载"Xamarin.Forms.Build.Tasks.GetTasksAbi"任务. Tasks.dll.无法加载文件或程序集'Microsoft.Build.Utilities.v4.0,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'.该系统找不到指定的文件.

我想我可以手动开始修复路径等等,但我害怕做一些我没有深入研究的东西.我曾经使用Unity游戏引擎多年,但我是Xamarin开发的新手.

c# xamarin.forms rider .net-standard

8
推荐指数
2
解决办法
3026
查看次数

关于实例变量和超类的奇怪错误

我有一些代码,我的类继承自超类,到目前为止一切都运行良好.每当我尝试使用任何超类变量时,我都会收到错误,说它们是未声明的(首先在此函数中使用).它只发生在我的一个子类中,它看起来与其他子类完全相同.我想知道是否有任何我应该知道的明显内容(对Objective-C来说是新手).基本代码如下 -

@interface mySuperClass : UIViewController {

BOOL myVar;

}
Run Code Online (Sandbox Code Playgroud)

然后 -

@interface mySubClass : mySuperClass {

}

@implementation mySubClass {

-(void)someMethod {

    myVar = YES; // error here

}

@end
Run Code Online (Sandbox Code Playgroud)

任何帮助非常感谢 - 如果您需要更多信息,请告诉我们!谢谢.

compiler-errors objective-c superclass

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

快速移动后漂移偏航角

在我目前的项目中,我遇到了Core Motion的CMAttitude提供的四元数问题.我把iPhone 5(iOS 6.0.1)放在一个定义良好的起始位置.然后我开始快速移动设备,就像在快速起搏游戏中一样.当我在10-30秒后返回到起始位置时,报告的偏航角与起始位置相差10-20度(大部分时间≈11°).

我使用旧的(可悲的是不再可用的)Core Motion Teapot样本来验证效果.用于记录的欧拉角直接从CMAttitude读取:

开始位置 15秒后同一个地方

        NSLog(@"pitch: %f, roll: %f, yaw: %f",  attitude.pitch * 180 / M_PI, attitude.roll * 180 / M_PI, attitude.yaw * 180 / M_PI);
Run Code Online (Sandbox Code Playgroud)

我在不同工厂的不同时间生产的两种不同的iPhone 5设备上发现了这一点.但真的很奇怪的是,运行iOS 5.1.1的iPhone 4正在按预期工作.在我看来,这是一个iOS错误,我已经提交了一个错误报告,但另一方面,我很难想象没有人偶然发现它.我怀疑它可能与重新设计的Core Motion API有关.从版本5开始,磁力计(罗盘)也被考虑用于传感器融合.控制台显示来自locationd的偏差估计被提供给CoreMotion:

locationd[41] <Notice>: GYTT inserted: bias,-0.196419,1.749323,-1.828088,variance,0.002644,0.004651,0.002527,temperature,31.554688
Run Code Online (Sandbox Code Playgroud)

我的问题:使用Device Motion时是否有机会阻止磁力计读数?我尝试停用位置服务,但它不会影响Core Motion.如果不可能,替代/解决方法是什么,基于加速度计的重力估算?

PS:由于我们面对的是基于四元模型,这是不是与万向锁

编辑: 经过一些测量后,似乎很明显只有偏航受到影响.无论起始位置如何,俯仰和滚转都会在偏差(<= 1°)内显示偏差.CMDeviceMotion.gravity看起来也很干净.

编辑(2): 我可以使用附加到最近的XCode版本的MotionGraphs示例重现问题.偏航图可以重复地远离原点.

iphone gyroscope core-motion ios6

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

unity3d中的屏幕记录

如何统一进行屏幕录像?我想在跑步游戏中记录屏幕(游戏性)。那应该是play / stop,replay,将录制内容从设备本地保存,从我的设备打开/加载(我们已经录制了)。

在我的游戏中,一台可以捕获本地相机的相机和一台3D模型。

我希望将两者都记录下来,并在需要时使用我的功能。

先感谢您。

unity-game-engine unityscript

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

为什么在统一中实例化刚体而不是gameObject?

我是团结的初学者.我想在脚本中实例化gameObject,而不是通过编辑器克隆已经存在的GameObject.当我在unity3d.com中看到下面的代码中的教程时,我很好奇为什么刚体被实例化.

据我所知,刚体在概念上是GameObject的一个组件和GameObject的子组件.即使刚体仅被实例化,游戏对象的实例也会在播放期间显示在场景中.

提前致谢.

using UnityEngine;
using System.Collections;

public class UsingInstantiate : MonoBehaviour
{
    public Rigidbody rocketPrefab;
    public Transform barrelEnd;

    void Update ()
    {
        if(Input.GetButtonDown("Fire1"))
        {
            Rigidbody rocketInstance;
            rocketInstance = Instantiate(rocketPrefab, barrelEnd.position, barrelEnd.rotation) as Rigidbody;
            rocketInstance.AddForce(barrelEnd.forward * 5000);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

unity-game-engine

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

AssetDatabase.Refresh准备就绪时的通知

我有一个Unity3D编辑器类,可以动态创建新资产.然后我使用默认选项调用AssetDatabase.Refresh(强烈建议使用).由于刷新是一种异步方式,因此我需要一种在刷新准备就绪时获取信息的方法.

背景:

我编写了一个代码生成器,用于创建C#脚本.它旨在为场景中的活动游戏对象创建辅助组件.到目前为止一切正常,该文件是由System.File.IO中的方法创建的.现在我想自动将新创建的MonoBehaviour添加到活动游戏对象中.

目前的状况/限制因素:

  • 正如预期的那样,在刷新过程中会销毁所有活动对象.这使得无法使用任何标准轮询方法,如调用或协同程序,因为它们在游戏对象被销毁时终止.
  • 轮询通常不是一个好的解决方案,但在这种情况下也可以.另一方面,我不想使用线程,因为在Unity中不建议这样做.
  • 如果静态构造函数的类具有InitializeOnLoadAttribute设置或者在活动场景中引用该组件,则在刷新就绪后立即调用静态构造函数.

可能有用的(繁琐的)方式:

  • 定义一个ActionAfterRefresh包含元信息的代码和在刷新后要执行的代码,例如要加载的类名和AddComponent在构造函数中执行代码的代码.
  • 将此类序列化为特殊缓存目录中的JSON文件
  • 定义一个Loader具有静态构造函数的类:
    • 查看缓存目录中是否存在匹配的JSON文件.如果是这样,请创建一个实例并执行代码
    • 删除JSON文件

我认为这可行,我猜你知道为什么我写的很麻烦.有没有更智能,更好,更快的方法来实现这一目标?我是否忽略了实时保存的OnRefreshDatabaseReady事件?

谢谢你的帮助

c# unity-game-engine

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

试图检测震动,从未调用motionEnded

我试图在iOS6中发现一个摇晃,似乎每个例子都是在2009年左右写回来的iOS3,没有任何工作应该如此.这是我的方法:

- (void) motionEnded: (UIEventSubtype) motion withEvent: (UIEvent *) event {
    if (motion == UIEventSubtypeMotionShake) NSLog(@"Detected a shake");
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试了Apple的建议(制作一个canBecomeFirstResponder返回YES并调用它的方法),但它没有做任何事情.它被称为罚款,但对震动没有被识别没有影响.

我已经阅读了一些关于需要创建我的视图的自定义版本的东西,但我真的不想搞砸,因为我没有以编程方式创建视图,而且有四个左右.

提前致谢!

objective-c motion-detection shake ios

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

yz Vector3至Vector2

简单的问题,网上找不到答案。

是否有一种简单的方法可以将Vector3的Y,Z转换为Vector2,而无需创建“ new Vector2()”

就像是

Vector3 v = Vector3.one;
Vector2 plan = v.yz;
Run Code Online (Sandbox Code Playgroud)

(在Unity3d中使用C#进行的所有操作)Thx

c# vector unity-game-engine

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