首页 > 解决方案 > cs4 中缺少 insertAt 和 removeAt 向量方法,但存在于文档中

问题描述

我似乎在使用矢量方法 removeAt 和 insertAt 时遇到了一些问题,它们都出现在 as3 的文档中:

https://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Vector.html#insertAt()

然而在 adobe flash cs4 中,它们是未定义的并引发错误。cs4 没有这些方法还是文档很差?

标签: actionscript-3flashactionscript

解决方案


好吧,除了升级到最新版本的 Flash Player 和 SDK 之外,还有其他选择。这不是一个更好的选择,不是很优雅,但更简单。除非您正在运行一些庞大的数据集,否则VPlus.insertAt(...)实现的性能也不是问题。

执行:

package
{
    public class VPlus
    {
        static public function deleteAt(V:*, index:int):void
        {
            // The method cuts a portion of Vector and returns it.
            // We need just the "cut" part, yet it suffices.
            V.splice(index, 1);
        }

        static public function insertAt(V:*, index:int, element:*):void
        {
            // Fix for from-the-end-and-backwards indexing.
            if (index < 0)
            {
                index = V.length - index;
            }

            // Add one more element to the end of the given Vector.
            V.push(null);

            // Shift the Vector's elements from index and on.
            for (var i:int = V.length - 2; i >= index; i--)
            {
                V[i+1] = V[i];
            }

            // Put the new element to its designated place.
            V[index] = element;
        }
    }
}

用法:

// myVec.deleteAt(10);
VPlus.deleteAt(myVec, 10);

// myVec.insertAt(15, "Hello World!");
VPlus.insertAt(myVec, 15, "Hello World!");

推荐阅读