-1

我是 Flash 新手,我正在制作一个用鼠标控制的游戏。但我收到了这个错误:

错误 1170:函数不返回值。

我正在尝试编写一个 getter 以将 bulletType 返回到 main.as

public function get(_bulletT:String):String
{ 
    for (var i = 0; i < _bulletT.length; i++) 
    {
        if (_bulletT.charAt(i) == "star")
        {
            return "star";
            "star";
        }
        else 
        {
            return "circle";
            "circle";
        }
    }

它要求什么价值?

4

2 回答 2

1

我建议您将来格式化您的代码。此外,最好不要在一行中编写代码,因为它不会带来额外的好处。您的代码将被编译成 Flash 播放器将执行的目标代码。

无论如何,您的功能有一些问题。第一个错误来源是您将返回值包含在 if/else 块中。函数体本身没有指定返回值。以下是您的代码的外观:

        public function get(_bulletT:String):String {
            for (var i:int = 0; i < _bulletT.length; i++) {
                if (_bulletT.charAt(i) == "star") {
                    return "star";
                } 
            }
            return "circle";
        }

请注意,如果满足条件,您只想返回“star”。一旦你返回一个值,循环将终止并且函数将退出。另一种情况是,如果在循环中不满足条件,则函数应返回循环。但是,这个功能没有意义。我相信您正在测试一个字符串是否包含“星”这个词,对吗?如果是这种情况,那么您可以这样做:

        public function get(_bulletT:String):String {
            if (_bulletT.indexOf("star") != -1) {
                return "star";
            } 
            return "circle";
        }

但是,我不认为那是你真正想要的。您可能想确定_bulletT是否持有价值星。因此,如果是这种情况,那么您可以这样做:

    public function get(_bulletT:String):String {
        if (_bulletT == "star") {
            return "star";
        } 
        return "circle";
    }

您正在命名您的函数get,这是 Actionscript 在使用类和为类创建 getter/setter 属性时的保留字。无论如何,我希望这会有所帮助。

于 2013-01-20T15:20:34.357 回答
0

在您的场景中,当 的长度为零时,该函数实际上可能根本不返回任何内容_bulletT- 它根本不会进入块,并且(根据您提供的代码)是您拥有语句for的唯一地方。return

也许尝试return在块之后添加另一个语句forfor或者如果长度为零之前抛出错误?

于 2013-01-20T15:19:46.993 回答