我有一个服务器 - 客户端代码,但这个位在AS3中,我在C#中工作。有人可以帮我翻译吗?

时间:2015-04-23 05:55:07

标签: c# actionscript-3 flash code-translation

我一直在努力将旧服务器从Flash游戏转换为我可以用作新服务器 - 客户端系统的起点的东西,但是我只是遇到了一个我无法弄清楚的停止点。有人可以查看这段代码并将其翻译成C#吗?

var dists:Array = [];
for(a=0;a<deltas.length;a++) {
    dists.push({offset:Math.abs(deltas[a]-avg), 
                time:deltas[a], 
                toString:function(){
                     return "offset:" + 
                     this.offset + ", 
                     time: " + this.time }
               })
}

作为一个注释,这些数字是双倍的 - 除了for循环中的int。进一步澄清,Dists我已经翻译成双列表数组,但这可能是错误的。这就是我到目前为止所做的:

List<Double> Dist = new List<double>();

for (int i = 0; i < Deltas.Count; i++)
{
    Dist.Add(Math.Abs(Deltas[i] - Average));
}

2 个答案:

答案 0 :(得分:1)

根据所提供的信息,这是我可以解决的问题......

void Main()
{
    Dictionary<int, double> deltas = new Dictionary<int, double>();
    int avg = 0;

    List<Item> dists = new List<Item>();
    for (int a = 0; a < deltas.Count(); a++)
    {
        dists.Add(new Item { Offset = Math.Abs(deltas[a] - avg), Time = deltas[a].ToDateTime()});
    }
}

public class Item 
{
    public double Offset { get; set; }
    public DateTime Time { get; set; }
    public string DisplayString { get; set; }

    public override string ToString()
    {
        return string.Format("offset: {0}, time: {1}", this.Offset, this.Time);
    }
}

public static class Extension
{
    public static DateTime ToDateTime(this double time)
    {
        return new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(time);
    }
}

答案 1 :(得分:0)

声明一个新数组var dists:Array = [];

  

deltas

对于for( a=0;a<deltas.length;a++){中的每个值:

  

dists

将新对象插入dists.push(...)数组:

  

offset

该对象将有两个属性 - timetoString() - 并且将采用offset方法以友好的方式格式化数据。

offset:Math.abs(deltas[a]-avg)值将是当前增量与平均值之间的差值:

  

time

time:deltas[a]值将是当前的delta:

  

{{1}}