gpt4 book ai didi

actionscript-3 - Actionscript 3.0 子类化矢量类的最佳选择 (Flash Player 10)

转载 作者:行者123 更新时间:2023-12-04 06:47:16 24 4
gpt4 key购买 nike

我想利用 FP10 的新 Vector 类的所有优点,但它似乎被标记为最终的。

我正在 Actionscript 中进行一些密集的数学处理,并重复处理数字数组。我以前一直在使用我自己的 Array 子类(我称之为 NumericArray ),添加了诸如 sum()、mean()、add()、multiply() 等函数。这工作得很好并且允许一些干净的面向对象代码。然而,我通过剖析发现我大约 95% 的处理时间都花在了这些对象的函数上。我需要这些阵列的更多性能。

我想使用 Vector,因为它提供了一些性能增强。我想专门使用 Vector.<Number> .不幸的是,我无法将 Vector 子类化,因为它被标记为最终的。

什么是最好和最干净的方法来模仿我以前用 Array 的子类做的事情,到 Vector.<Number>

我想过路过Vector.<Number>变量而不是我的自定义类,只使用实用函数来操作,但这不是好的 OO 设计,使用起来会很痛苦,更不用说丑陋了。

最佳答案

如果添加附加功能不需要访问 Vector 的 protected 属性/方法,则可以为 Vector 创建一个包装类。沿着这些思路?

import flash.utils.Proxy;
import flash.utils.flash_proxy;

use namespace flash_proxy;

public class NumericVector extends Proxy
{
private var vector:Vector.<Number>;

public function NumericVector(vector:Vector.<Number> = null)
{
if(vector == null)
{
this.vector = new Vector.<Number>();
}
else
{
this.vector = vector;
}
}

override flash_proxy function nextName(index:int):String
{
return vector[index - 1].toString();
}

override flash_proxy function nextNameIndex(index:int):int
{
// implementation
}

public function sum():Number
{
// do whatever you intend to do
}

...
}

关于actionscript-3 - Actionscript 3.0 子类化矢量类的最佳选择 (Flash Player 10),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/836835/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com