【问题标题】:AS3 functions replacingAS3 功能替换
【发布时间】:2014-02-14 02:22:38
【问题描述】:

我曾经在 AS2 上工作并制作游戏,现在我想学习 AS3 并拥有它所有的好功能(使用 Flash CS IDE)。现在我正在尝试重写一个函数来丢弃它。

function something():void{
    //do something
}
function something():void{}

像这样。请帮助或提供一些替代方案,谢谢。

【问题讨论】:

    标签: actionscript-3


    【解决方案1】:

    您正在尝试做的事情非常不合逻辑 - 一个函数应该定义一次并且永远存在。不仅如此,它绝对应该始终以相同的方式运行,尤其是考虑到 AS3 不支持重载。

    AS3 引入了 OOP 范式供您使用 - 这进一步强调了上述内容 - 您应该创建定义固定属性和方法集合的类。这样一来,您的应用程序中每个类的意图就很明确了,并且您期望的东西能够做的事情不会改变。

    如果您绝对必须能够删除函数,则可以将它们分配给动态对象并使用 delete 关键字删除或重新定义它们:

    var methods:Object = {
        something: function():void
        {
            trace('Still here.');
        }
    };
    
    
    methods.something(); // Still here.
    delete methods.something;
    methods.something(); // TypeError: something is not a function.
    
    methods.something = function():void
    {
        // Define new function.
    }
    

    或者将一个匿名函数赋给一个Function类型的变量,此时你可以设置对null的引用:

    var something:Function = function():void
    {
        trace("Still here.");
    }
    
    
    something(); // Still here.
    something = null;
    something(); // TypeError: value is not a function.
    
    something = function():void
    {
        // Define new function.
    }
    

    【讨论】:

    • 非常感谢。我也发现我的想法是不合逻辑的,但我在想的是我害怕为不同的功能使用太多的名字。现在您的解决方案解决了我的问题,我还发现匿名函数也可以这样工作。再次感谢您。
    • @user3308553 也许你认为你面临的问题是没有使用类将你的函数分解成相关的组。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-17
    • 2013-05-18
    • 2015-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多