2013-01-20 131 views
-1

我是新来的闪光灯,我正在用鼠标控制游戏。但我得到这个错误:错误1170:函数不返回av值

错误1170:函数不会返回一个值。

我想写一个消气剂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"; 
     } 
    } 

是它要求什么样的价值?

+0

请尝试正确解释您要达到的目标,使用标签突出显示代码并正确格式化。我对这个错误的猜测是,如果_bulleT.length <= 0,那么你的返回语句可能无法访问。命名一个函数get(...)是一个不好的习惯,除非你想要它成为一个getter,在这种情况下,它应该是'get bulletType():String' –

回答

0

在您的场景中,当_bulletT的长度为零时 - 它根本不会输入for块,并且根据您提供的代码是唯一的地方你有return陈述。

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

1

我建议你在未来格式化你的代码。另外,最好不要将代码写入一行,因为它不会带来额外的好处。您的代码将被编译为Flash Player将执行的对象代码。

无论如何,你的函数有一些错误。错误的第一个来源是你将返回值放在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"; 
     } 

但是,我不认为这是你真正想要的。您可能要确定是否保留价值星。所以,如果是这样的话,那么你可以做:

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

你正在使用类和创建类的getter/setter属性命名时功能得到,这是ActionScript中的保留字。无论如何,我希望这是有帮助的。