【发布时间】:2015-03-10 21:52:24
【问题描述】:
我正在尝试将一些 AS3 代码移植到 C#(.NET) 中,其中大部分已经完成 (90%) 但是我在函数中的函数和定义为函数的函数方面遇到了一些问题 (我希望我理解正确)。我做了很多搜索,出现的主要问题是委托和 lambda,但是尝试实现它们对我来说很难做到。看起来安静的几个部分在布局中是相同的,我只发布一个通用的 AS3 代码示例,然后希望可以将任何解决方案应用于其余部分。
这是 AS3 代码:
static public function makeRadial(seed:int):Function {
var islandRandom:PM_PRNG = new PM_PRNG();
islandRandom.seed = seed;
var bumps:int = islandRandom.nextIntRange(1, 6);
var startAngle:Number = islandRandom.nextDoubleRange(0, 2*Math.PI);
var dipAngle:Number = islandRandom.nextDoubleRange(0, 2*Math.PI);
var dipWidth:Number = islandRandom.nextDoubleRange(0.2, 0.7);
function inside(q:Point):Boolean {
var angle:Number = Math.atan2(q.y, q.x);
var length:Number = 0.5 * (Math.max(Math.abs(q.x), Math.abs(q.y)) + q.length);
var r1:Number = 0.5 + 0.40*Math.sin(startAngle + bumps*angle + Math.cos((bumps+3)*angle));
var r2:Number = 0.7 - 0.20*Math.sin(startAngle + bumps*angle - Math.sin((bumps+2)*angle));
if (Math.abs(angle - dipAngle) < dipWidth
|| Math.abs(angle - dipAngle + 2*Math.PI) < dipWidth
|| Math.abs(angle - dipAngle - 2*Math.PI) < dipWidth) {
r1 = r2 = 0.2;
}
return (length < r1 || (length > r1*ISLAND_FACTOR && length < r2));
}
return inside;
}
在 AS3 代码中,我不明白主函数“static public function makeShape(seed:int):Function”中“:Function”背后的原因。我确实搜索过它,但找不到示例或解释,也许我没有输入正确的含义。
如果有人可以通过举个例子或让我更接近我需要去的方向来帮助我解决这个问题,我将非常感激。
感谢您的宝贵时间。
【问题讨论】:
-
您的 AS3 函数无效 - 缺少
{(或额外的})。 -
对不起,你们都说对了,我刚刚意识到我复制了错误的代码,我只是用正确的代码替换了它并删除了 c# 示例。
-
我确实看到了这个问题并尝试使用它,但无法完全理解它适用于我的问题,谢谢。
标签: c# actionscript-3 function methods porting